[英]3NF Database Normalization
There is a report table for overdue DVD rentals. 有一个过期DVD租赁报告表。 The store has multiple copies of the same DVD (they are all numbered to be identified). 商店有同一张DVD的多个副本(它们都被编号以便识别)。 How can I normalize this data to meet 3NF requirements? 如何规范化此数据以满足3NF要求?
Normalization http://img193.imageshack.us/img193/7804/normalization.jpg 规范化http://img193.imageshack.us/img193/7804/normalization.jpg
The data model: 数据模型:
VIDEO_ARTIST
table VIDEO_ARTIST
表 ARTIST_ID
, pk ARTIST_ID
,pk FIRST_NAME
LAST_NAME
VIDEOS
table VIDEOS
表 VIDEO_ID
, pk VIDEO_ID
,pk VIDEO_TITLE
ARTIST_ID
, fk ARTIST_ID
,fk RUNNING_TIME
VIDEO_COPIES
table VIDEO_COPIES
表 VIDEO_COPY_ID
, pk VIDEO_COPY_ID
,pk VIDEO_ID
, fk VIDEO_ID
,fk VIDEO_COPY_NUMBER
Notice that I'm not using the primary key for the value displayed to the users. 请注意,我没有使用主键显示给用户显示的值。
VIDEO_RENTALS
table VIDEO_RENTALS
表 VIDEO_COPY_ID
, pk, fk VIDEO_COPY_ID
,pk,fk ACCOUNT_ID
, pk, fk ACCOUNT_ID
,pk,fk DUE_DATE
, pk DUE_DATE
,pk VIDEO_RENTALS_ACCOUNTS
table VIDEO_RENTALS_ACCOUNTS
表 ACCOUNT_ID
, pk ACCOUNT_ID
,pk ACCOUNT_NUMBER
, unique ACCOUNT_NUMBER
,独一无二 FIRST_NAME
LAST_NAME
Same logic regarding the ACCOUNT_NUMBER
as with the VIDEO_COPY_NUMBER
... 关于ACCOUNT_NUMBER
与VIDEO_COPY_NUMBER
相同的逻辑...
Here's the SQL to use based on the data model to get the report example you provided: 以下是基于数据模型使用的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
Look at objects--actors: 看看对象 - 演员:
1. Customer
2. Title
3. Physical Medium (DVD, the thing you take home when borrowing)
4. Artist
5. Rental (act of renting = transaction)
Media.Status
tracks availability of a medium (DVD). Media.Status
跟踪介质(DVD)的可用性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.