Isr*_*ANY 2 sql database database-design data-modeling normalization
有一个过期DVD租赁报告表.商店有同一张DVD的多个副本(它们都被编号以便识别).如何规范化此数据以满足3NF要求?
规范化http://img193.imageshack.us/img193/7804/normalization.jpg
OMG*_*ies 10
数据模型:
VIDEO_ARTIST 表ARTIST_ID,PKFIRST_NAMELAST_NAMEVIDEOS 表VIDEO_ID,PKVIDEO_TITLEARTIST_ID,fkRUNNING_TIMEVIDEO_COPIES 表VIDEO_COPY_ID,PKVIDEO_ID,fkVIDEO_COPY_NUMBER请注意,我没有使用主键显示给用户显示的值.
VIDEO_RENTALS 表VIDEO_COPY_ID,PK,fkACCOUNT_ID,PK,fkDUE_DATE,PKVIDEO_RENTALS_ACCOUNTS 表ACCOUNT_ID,PKACCOUNT_NUMBER, 独特FIRST_NAMELAST_NAME对于相同的逻辑ACCOUNT_NUMBER作为与VIDEO_COPY_NUMBER...
以下是基于数据模型使用的SQL,以获取您提供的报告示例:
SELECT v.video_title 'Video Title',
aa.artist_name 'Artist',
vc.video_copy_number 'Copy Number',
v.running_time 'Length',
vr.due_date 'Date Due',
acct.borrower_name 'Borrower',
acct.account_number 'Card Number'
FROM VIDEO_RENTALS vr
JOIN VIDEO_COPIES vc ON vc.video_copy_id = t.video_copy_id
JOIN VIDEOS v ON v.video_id = vr.video_id
JOIN (SELECT a.artist_id,
a.firstname +' '+ a.lastname AS artist_name
FROM ARTIST a) aa ON aa.artist_id = vr.artist_id
JOIN (SELECT vra.account_id,
vra.account_number,
vra.firstname +' '+ vra.lastname AS borrower_name
FROM VIDEO_RENTALS_ACCOUNTS vra) acct ON acct.account_id = vr.account_id
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4952 次 |
| 最近记录: |