期限切れの DVD レンタルのレポート テーブルがあります。店舗には同じ DVD の複数のコピーがあります (それらはすべて識別できるように番号が付けられています)。このデータを正規化して 3NF 要件を満たすにはどうすればよいですか?
正規化 http://img193.imageshack.us/img193/7804/normalization.jpg
期限切れの DVD レンタルのレポート テーブルがあります。店舗には同じ DVD の複数のコピーがあります (それらはすべて識別できるように番号が付けられています)。このデータを正規化して 3NF 要件を満たすにはどうすればよいですか?
正規化 http://img193.imageshack.us/img193/7804/normalization.jpg
データモデル:
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_NAMEACCOUNT_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
オブジェクトを見てください--アクター:
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