Changes between Version 6 and Version 7 of Normalization
- Timestamp:
- 02/18/26 22:03:23 (10 days ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Normalization
v6 v7 8 8 9 9 - FD1: user_id -> profile_photo, email, username, full_name, password 10 - FD 3: musical_entity_id -> title, genre, me_cover, release_date, artist_id11 - FD 4: song_id -> link, album_id12 - FD 5: playlist_id -> playlist_cover, playlist_name, listener_id13 - FD 6: event_id -> event_name, location, venue, date, time, user_id14 - FD 7: (artist_id, musical_entity_id) -> role15 - FD 8: (listener_id, musical_entity_id) -> grade, comment16 17 - FD 9: non_admin_user_id -> user_id18 - FD 10: admin_id -> user_id19 - FD1 1: listener_id -> non_admin_user_id20 - FD1 2: artist_id -> non_admin_user_id21 - FD1 3: album_id -> musical_entity_id22 - FD1 4: (listener_id,song_id,timestamp) -> /10 - FD2: musical_entity_id -> title, genre, me_cover, release_date, artist_id 11 - FD3: song_id -> link, album_id 12 - FD4: playlist_id -> playlist_cover, playlist_name, listener_id 13 - FD5: event_id -> event_name, location, venue, date, time, user_id 14 - FD6: (artist_id, musical_entity_id) -> role 15 - FD7: (listener_id, musical_entity_id) -> grade, comment 16 17 - FD8: non_admin_user_id -> user_id 18 - FD9: admin_id -> user_id 19 - FD10: listener_id -> non_admin_user_id 20 - FD11: artist_id -> non_admin_user_id 21 - FD12: album_id -> musical_entity_id 22 - FD13: (listener_id,song_id,timestamp) -> / 23 23 24 24 … … 93 93 Lossless join: Релацијата може да се реконструира преку join со `playlist_id`. 94 94 95 Dependency preservation: FD 5е сочувана преку новата релација `Playlists`.95 Dependency preservation: FD4 е сочувана преку новата релација `Playlists`. 96 96 97 97 … … 104 104 Lossless join: Релацијата може да се реконструира преку join со `song_id` 105 105 106 Dependency preservation: FD 4е сочувана преку новата релација `Songs`106 Dependency preservation: FD3 е сочувана преку новата релација `Songs` 107 107 108 108 … … 115 115 Lossless join: Релацијата може да се реконструира преку join со `event_id` 116 116 117 Dependency preservation: FD 6е сочувана преку новата релација `Events`117 Dependency preservation: FD5 е сочувана преку новата релација `Events` 118 118 119 119 … … 122 122 Lossless join: Релацијата може да се реконструира преку join со `admin_id` 123 123 124 Dependency preservation: FD 10е сочувана преку новата релација `Admins`124 Dependency preservation: FD9 е сочувана преку новата релација `Admins` 125 125 126 126 … … 136 136 137 137 == Проверка за 3НФ 138 Поради постоењето на транзитивни зависности во добиените релации, можеме да заклучиме дека **е нарушена 3НФ**. На пример: `Playlists(playlist_id, playlist_name, playlist_cover, listener_id)` има транзитивна зависност преку `FD1 1: listener_id -> non_admin_user_id`138 Поради постоењето на транзитивни зависности во добиените релации, можеме да заклучиме дека **е нарушена 3НФ**. На пример: `Playlists(playlist_id, playlist_name, playlist_cover, listener_id)` има транзитивна зависност преку `FD10: listener_id -> non_admin_user_id` 139 139 140 140 == Декомпозиција по 3НФ 141 141 142 1. `Playlists(playlist_id, playlist_name, playlist_cover, listener_id)` -> има транзитивна зависност преку `FD1 1: listener_id -> non_admin_user_id`143 144 Декомпозиција по FD1 1:145 146 **Listeners(listener_id, non_admin_user_id)** -> има транзитивна зависност преку `FD 9: non_admin_user_id -> user_id`147 148 Декомпозиција по FD 9:142 1. `Playlists(playlist_id, playlist_name, playlist_cover, listener_id)` -> има транзитивна зависност преку `FD10: listener_id -> non_admin_user_id` 143 144 Декомпозиција по FD10: 145 146 **Listeners(listener_id, non_admin_user_id)** -> има транзитивна зависност преку `FD8: non_admin_user_id -> user_id` 147 148 Декомпозиција по FD8: 149 149 150 150 **Non_Admin_Users(non_admin_user_id, user_id)** … … 167 167 Dependency preservation: FD1 е сочувана преку новата релација `Users` 168 168 169 2. `Songs(song_id, link, album_id)` -> има транзитивна зависност преку `FD1 3: album_id -> musical_entity_id`170 171 Декомпозиција по FD1 3:172 173 **Albums(album_id, musical_entity_id)** -> има транзитивна преку `FD 3: musical_entity_id-> title, genre, me_cover, release_date, artist_id`169 2. `Songs(song_id, link, album_id)` -> има транзитивна зависност преку `FD12: album_id -> musical_entity_id` 170 171 Декомпозиција по FD12: 172 173 **Albums(album_id, musical_entity_id)** -> има транзитивна преку `FD2: musical_entity_id-> title, genre, me_cover, release_date, artist_id` 174 174 175 175 Lossless join: Релацијата може да се реконструира преку join со `album_id` 176 176 177 Dependency preservation: FD1 3е сочувана преку новата релација `Albums`178 179 Декомпозиција по FD 3:177 Dependency preservation: FD12 е сочувана преку новата релација `Albums` 178 179 Декомпозиција по FD2: 180 180 181 181 **Musical_Entities(musical_entity_id, title, genre, me_cover, release_date, artist_id)** … … 188 188 Lossless join: Релацијата може да се реконструира преку join со `musical_entity_id` 189 189 190 Dependency preservation: FD 3е сочувана преку новата релација `Musical_Entities`191 192 `Musical_Entities(musical_entity_id, title, genre, me_cover, release_date, artist_id)` -> има транзитивна зависност преку `FD1 2: artist_id -> non_admin_user_id`193 194 Декомпозиција по FD1 2:190 Dependency preservation: FD2 е сочувана преку новата релација `Musical_Entities` 191 192 `Musical_Entities(musical_entity_id, title, genre, me_cover, release_date, artist_id)` -> има транзитивна зависност преку `FD11: artist_id -> non_admin_user_id` 193 194 Декомпозиција по FD11: 195 195 196 196 **Artists(artist_id)** - `artist_id` е всушност примарен клуч во релацијата `Artists` и надворешен клуч во релацијата `Non_Admin_Users`, каде е надворешен клуч во релацијата `Users`. Сите останати релации се добиени преку претходните декомпозиции. … … 220 220 221 221 222 5. Бидејќи `role` е определен од `(artist_id, musical_entity_id)` -> имаме транзитивна зависност преку `FD 7:(artist_id, musical_entity_id) -> role`223 224 Декомпозиција по FD 7:222 5. Бидејќи `role` е определен од `(artist_id, musical_entity_id)` -> имаме транзитивна зависност преку `FD6:(artist_id, musical_entity_id) -> role` 223 224 Декомпозиција по FD6: 225 225 226 226 **Artist_Contributions(artist_id, musical_entity_id, role)** … … 231 231 Lossless join: Релацијата може да се реконструира преку join со `(artist_id, musical_entity_id)` 232 232 233 Dependency preservation: FD 7е сочувана преку новата релација `Musical_Entities`234 235 6. Бидејќи `grade`, `comment` се определени од `(listener_id, musical_entity_id)` -> имаме транзитивна зависност преку `FD 8: (listener_id, musical_entity_id) -> grade, comment`236 237 Декомпозиција по FD 8:233 Dependency preservation: FD6 е сочувана преку новата релација `Musical_Entities` 234 235 6. Бидејќи `grade`, `comment` се определени од `(listener_id, musical_entity_id)` -> имаме транзитивна зависност преку `FD7: (listener_id, musical_entity_id) -> grade, comment` 236 237 Декомпозиција по FD7: 238 238 239 239 **Reviews(listener_id, musical_entity_id, grade, comment)** … … 243 243 Lossless join: Релацијата може да се реконструира преку join со `(listener_id, musical_entity_id)`. 244 244 245 Dependency preservation: FD 8е сочувана преку новата релација `Reviews`.245 Dependency preservation: FD7 е сочувана преку новата релација `Reviews`. 246 246 247 247
