Changes between Version 10 and Version 11 of Normalization


Ignore:
Timestamp:
07/07/26 18:47:39 (2 days ago)
Author:
231017
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Normalization

    v10 v11  
    88
    99- FD1: user_id -> profile_photo, email, username, full_name, password
    10 - FD2: musical_entity_id -> title, genre, me_cover, release_date, artist_id
     10- FD2: musical_entity_id -> title, genre, release_date, artist_id
    1111- FD3: song_id -> link, album_id
    1212- FD4: playlist_id -> playlist_cover, playlist_name, listener_id
     
    2828
    2929**Десно**:
    30 profile_photo, email, username, full_name, password, title, genre, release_date, me_cover, link, playlist_cover, playlist_name, event_name, location, venue, date, time, role, grade, comment
     30profile_photo, email, username, full_name, password, title, genre, release_date, link, playlist_cover, playlist_name, event_name, location, venue, date, time, role, grade, comment
    3131
    3232**Лево и десно**:
     
    3737=== Глобална релација
    3838
    39 R={ playlist_id, event_id, song_id, timestamp, admin_id, profile_photo, email, username, full_name, password, title, genre, release_date, me_cover, link, playlist_cover, playlist_name, event_name, location, venue, date, time, role, grade, comment, user_id, musical_entity_id, artist_id, non_admin_user_id, album_id, listener_id}
     39R={ playlist_id, event_id, song_id, timestamp, admin_id, profile_photo, email, username, full_name, password, title, genre, release_date, link, playlist_cover, playlist_name, event_name, location, venue, date, time, role, grade, comment, user_id, musical_entity_id, artist_id, non_admin_user_id, album_id, listener_id}
    4040   
    4141
     
    45451. **playlist_id+** = {playlist_id, playlist_name, playlist_cover, listener_id, user_id, full_name, email, password, username, profile_photo} -> **Не ги содржи сите атрибути**
    46462. **event_id+** = {event_id, event_name, location, venue, date, time, user_id, full_name, email, password, username, profile_photo} -> **Не ги содржи сите атрибути**
    47 3. **song_id+** = {song_id, link, album_id, musical_entity_id, title, genre, me_cover, release_date, artist_id, non_admin_user_id, user_id, full_name, email, password, username, profile_photo} -> **Не ги содржи сите атрибути**
     473. **song_id+** = {song_id, link, album_id, musical_entity_id, title, genre, release_date, artist_id, non_admin_user_id, user_id, full_name, email, password, username, profile_photo} -> **Не ги содржи сите атрибути**
    48484. **timestamp+** = {timestamp} -> **Не ги содржи сите атрибути**
    49495. **admin_id+** = {admin_id, user_id, full_name, email, password, username, profile_photo } -> **Не ги содржи сите атрибути**
     
    5656тие мора да бидат дел од примарниот клуч.
    5757
    58 **{playlist_id, event_id, song_id, timestamp, admin_id}+** = { playlist_id, event_id, song_id, timestamp, admin_id, playlist_name, playlist_cover, user_id, listener_id, full_name, email, password, username, profile_photo, event_name, location, venue, date, time, link, album_id, musical_entity_id, title, genre, me_cover, release_date, artist_id, non_admin_user_id, role, grade, comment}
     58**{playlist_id, event_id, song_id, timestamp, admin_id}+** = { playlist_id, event_id, song_id, timestamp, admin_id, playlist_name, playlist_cover, user_id, listener_id, full_name, email, password, username, profile_photo, event_name, location, venue, date, time, link, album_id, musical_entity_id, title, genre, release_date, artist_id, non_admin_user_id, role, grade, comment}
    5959
    6060Покривачот составен од сите атрибути кои се наоѓаат само од левата страна ги содржи сите атрибути на глобалната релација. Всушност тоа ни е и минимален суперклуч.
     
    8989R1 = R - {playlist_name, playlist_cover}
    9090
    91 R1 = { playlist_id, event_id, song_id, timestamp, admin_id, user_id, listener_id, full_name, email, password, username, profile_photo, event_name, location, venue, date, time, link, album_id, musical_entity_id, title, genre, me_cover, release_date, artist_id, non_admin_user_id, role, grade, comment}
     91R1 = { playlist_id, event_id, song_id, timestamp, admin_id, user_id, listener_id, full_name, email, password, username, profile_photo, event_name, location, venue, date, time, link, album_id, musical_entity_id, title, genre, release_date, artist_id, non_admin_user_id, role, grade, comment}
    9292
    9393Lossless join: Релацијата може да се реконструира преку join со `playlist_id`.
     
    100100R2 = R1 - {link}
    101101
    102 R2 = { playlist_id, event_id, song_id, timestamp, admin_id, user_id, listener_id, album_id, full_name, email, password, username, profile_photo, event_name, location, venue, date, time,musical_entity_id, title, genre, me_cover, release_date, artist_id,non_admin_user_id, role, grade, comment}
     102R2 = { playlist_id, event_id, song_id, timestamp, admin_id, user_id, listener_id, album_id, full_name, email, password, username, profile_photo, event_name, location, venue, date, time,musical_entity_id, title, genre, release_date, artist_id,non_admin_user_id, role, grade, comment}
    103103
    104104Lossless join: Релацијата може да се реконструира преку join со `song_id`
     
    111111R3 = R2 - {event_name, location, venue, date, time}
    112112
    113 R3 = {playlist_id, event_id, song_id, timestamp, admin_id, user_id, listener_id, album_id, full_name, email, password, username, profile_photo, musical_entity_id, title, genre, me_cover, release_date, artist_id, non_admin_user_id, role, grade, comment}
     113R3 = {playlist_id, event_id, song_id, timestamp, admin_id, user_id, listener_id, album_id, full_name, email, password, username, profile_photo, musical_entity_id, title, genre, release_date, artist_id, non_admin_user_id, role, grade, comment}
    114114
    115115Lossless join: Релацијата може да се реконструира преку join со `event_id`
     
    1311313. Events(event_id, event_name, location, venue, date, time, user_id)
    1321324. Admins(admin_id, user_id)
    133 5. R3 = { playlist_id, event_id, song_id, timestamp, admin_id, user_id, listener_id, album_id, full_name, email, password, username, profile_photo, musical_entity_id, title, genre, me_cover, release_date, artist_id, non_admin_user_id, role, grade, comment }
     1335. R3 = { playlist_id, event_id, song_id, timestamp, admin_id, user_id, listener_id, album_id, full_name, email, password, username, profile_photo, musical_entity_id, title, genre, release_date, artist_id, non_admin_user_id, role, grade, comment }
    134134
    135135
     
    162162R4 = R3 - {profile_photo, email, username, full_name, password}
    163163
    164 R4 = { playlist_id, event_id, song_id, timestamp, admin_id, user_id, listener_id, album_id, musical_entity_id, title, genre, me_cover, release_date, artist_id, non_admin_user_id, role, grade, comment}
     164R4 = { playlist_id, event_id, song_id, timestamp, admin_id, user_id, listener_id, album_id, musical_entity_id, title, genre, release_date, artist_id, non_admin_user_id, role, grade, comment}
    165165
    166166Lossless join: Релацијата може да се реконструира преку join со `user_id`
     
    172172Декомпозиција по FD12:
    173173
    174 **Albums(album_id, musical_entity_id)** -> има транзитивна преку `FD2: musical_entity_id-> title, genre, me_cover, release_date, artist_id`
     174**Albums(album_id, musical_entity_id)** -> има транзитивна преку `FD2: musical_entity_id-> title, genre, release_date, artist_id`
    175175
    176176Lossless join: Релацијата може да се реконструира преку join со `album_id`
     
    180180Декомпозиција по FD2:
    181181
    182 **Musical_Entities(musical_entity_id, title, genre, me_cover, release_date, artist_id)**
     182**Musical_Entities(musical_entity_id, title, genre, release_date, artist_id)**
    183183
    184184`Albums(album_id)` - `album_id` е всушност примарен клуч во релацијата `Albums` и надворешен клуч во релацијата `Musical_Entities`.
    185185
    186 R5 = R4 - {title, genre, me_cover, release_date}
     186R5 = R4 - {title, genre, release_date}
    187187
    188188R5 = { playlist_id, event_id, song_id, timestamp, admin_id,user_id, listener_id, album_id, musical_entity_id, artist_id, non_admin_user_id, role, grade, comment}
     
    192192Dependency preservation: FD2 е сочувана преку новата релација `Musical_Entities`
    193193
    194 `Musical_Entities(musical_entity_id, title, genre, me_cover, release_date, artist_id)` -> има транзитивна зависност преку `FD11: artist_id -> non_admin_user_id`
     194`Musical_Entities(musical_entity_id, title, genre, release_date, artist_id)` -> има транзитивна зависност преку `FD11: artist_id -> non_admin_user_id`
    195195
    196196Декомпозиција по FD11:
     
    2162167. Users(user_id, profile_photo, email, username, full_name, password)
    2172178. Albums(album_id)
    218 9. Musical_Entities(musical_entity_id, title, genre, me_cover, release_date, artist_id)
     2189. Musical_Entities(musical_entity_id, title, genre, release_date, artist_id)
    21921910. Artists(artist_id)
    22022011. R5 = { playlist_id, event_id, song_id, timestamp, admin_id, user_id, listener_id, album_id, musical_entity_id, artist_id, non_admin_user_id, role, grade, comment}
     
    2592597. Users(**user_id**, profile_photo, email, username, full_name, password) -> **задоволува БКНФ**
    2602608. Albums(**album_id**) -> **задоволува БКНФ**
    261 9. Musical_Entities(**musical_entity_id**, title, genre, me_cover, release_date, artist_id) -> **задоволува БКНФ**
     2619. Musical_Entities(**musical_entity_id**, title, genre, release_date, artist_id) -> **задоволува БКНФ**
    26226210. Artist_Contributions(**artist_id, musical_entity_id**, role) -> **задоволува БКНФ**
    26326311. Reviews(**listener_id, musical_entity_id**, grade, comment) -> **задоволува БКНФ**
     
    2962967. Users(**user_id**, profile_photo, email, username, full_name, password)
    2972978. Albums(**album_id**)
    298 9. Musical_Entities(**musical_entity_id**, title, genre, me_cover, release_date, artist_id)
     2989. Musical_Entities(**musical_entity_id**, title, genre, release_date, artist_id)
    29929910. Artist_Contributions(**artist_id, musical_entity_id**, role)
    30030011. Reviews(**listener_id, musical_entity_id**, grade, comment)