| Version 4 (modified by , 10 days ago) ( diff ) |
|---|
Normalization
De-normalized Database Form
First, we combine every attribute in the entire model into one single relation - Universal Relation R.
R(
user_id,
email,
username,
password,
date_created,
shipping_address,
telephone_number,
admin_type,
discount_percentage,
points_collected,
artist_id,
artist_name,
artist_description,
artist_photo,
release_id,
title,
record_label,
genre,
release_date,
cover_photo,
duration,
song_id,
song_name,
song_duration,
product_id,
format,
price,
product_description,
stock,
order_id,
payment_method,
purchase_date,
points_earned,
points_used,
status,
modification_id,
date_modified,
type_of_modification,
discount,
wishlist_id,
quantity,
price_at_purchase,
added_at,
release_ordinal,
type,
song_ordinal
)
Functional Dependencies
FD01: user_id → email, username, password, date_created, shipping_address, telephone_number FD02: email → user_id FD03: username → user_id FD04: user_id → admin_type, discount_percentage FD05: user_id → points_collected FD06: artist_id → artist_name, artist_description, artist_photo FD07: release_id → title, record_label, genre, release_date, cover_photo, duration FD08: song_id → song_name, song_duration FD09: product_id → release_id, format, price, product_description, stock FD10: order_id → user_id, payment_method, purchase_date, points_earned, points_used, status FD11: modification_id → admin_id, date_modified, type_of_modification, discount FD12: wishlist_id → user_id FD13: user_id → wishlist_id FD14: (order_id, product_id) → price_at_purchase, quantity FD15: (wishlist_id, product_id) → added_at FD16: (release_id, artist_id) → release_ordinal, release_artist_type FD17: (song_id, artist_id) → song_ordinal
LHS only:
artist_id, song_id, product_id, order_id, modification_id
RHS only:
email, username, password, date_created, shipping_address, telephone_number, admin_type, discount_percentage, points_collected, artist_name, artist_description, artist_photo, title, record_label, genre, release_date, cover_photo, duration, song_name, song_duration, format, price, product_description, stock, payment_method, purchase_date, points_earned, points_used, status, date_modified, type_of_modification, discount, price_at_purchase, quantity, release_ordinal, release_artist_type, added_at, song_ordinal
Both LHS and RHS:
user_id, wishlist_id, release_id
Candidate Keys and Primary Key
1NF decomposition
…
2NF decomposition
…
3NF decomposition
…
BCNF if possible
…
