Changes between Version 15 and Version 16 of normalization
- Timestamp:
- 01/30/26 11:07:45 (5 hours ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
normalization
v15 v16 300 300 }}} 301 301 302 '''Проверка за lossless join:''' Може да се реконструира преку course_translate_id 302 '''Проверка за lossless join:''' Може да се реконструира преку course_translate_id <br> 303 303 '''Проверка за dependency preservation:''' FD28 е зачувана во Course_What_Will_Be_Learned 304 304 … … 391 391 }}} 392 392 393 '''Проверка за lossless join:''' Може да се реконструира преку user_id 393 '''Проверка за lossless join:''' Може да се реконструира преку user_id <br> 394 394 '''Проверка за dependency preservation:''' FD2 е зачувана во Verification_Token 395 395 … … 426 426 }}} 427 427 428 '''Проверка за lossless join:''' Може да се реконструира преку user_id 428 '''Проверка за lossless join:''' Може да се реконструира преку user_id <br> 429 429 '''Проверка за dependency preservation:''' FD3 е зачувана во Meeting_Reminder 430 430 … … 461 461 }}} 462 462 463 '''Проверка за lossless join:''' Може да се реконструира преку expert_id 463 '''Проверка за lossless join:''' Може да се реконструира преку expert_id <br> 464 464 '''Проверка за dependency preservation:''' FD4 е зачувана во Expert 465 465 … … 495 495 }}} 496 496 497 '''Проверка за lossless join:''' Може да се реконструира преку tag_id 497 '''Проверка за lossless join:''' Може да се реконструира преку tag_id <br> 498 498 '''Проверка за dependency preservation:''' FD10 е зачувана во Tag_Translate 499 499 … … 528 528 }}} 529 529 530 '''Проверка за lossless join:''' Може да се реконструира преку course_id 530 '''Проверка за lossless join:''' Може да се реконструира преку course_id <br> 531 531 '''Проверка за dependency preservation:''' FD12 е зачувана во Course_Translate 532 532 … … 560 560 }}} 561 561 562 '''Проверка за lossless join:''' Може да се реконструира преку course_content_id 562 '''Проверка за lossless join:''' Може да се реконструира преку course_content_id <br> 563 563 '''Проверка за dependency preservation:''' FD14 е зачувана во Course_Content_Translate 564 564 … … 591 591 }}} 592 592 593 '''Проверка за lossless join:''' Може да се реконструира преку course_lecture_id 593 '''Проверка за lossless join:''' Може да се реконструира преку course_lecture_id <br> 594 594 '''Проверка за dependency preservation:''' FD16 е зачувана во Course_Lecture_Translate 595 595 … … 621 621 }}} 622 622 623 '''Проверка за lossless join:''' Може да се реконструира преку enrollment_id и course_lecture_id 623 '''Проверка за lossless join:''' Може да се реконструира преку enrollment_id и course_lecture_id <br> 624 624 '''Проверка за dependency preservation:''' FD17 е зачувана во User_Course_Progress 625 625 … … 769 769 }}} 770 770 771 '''Проверка за lossless join:''' Може да се реконструира преку enrollment_id 771 '''Проверка за lossless join:''' Може да се реконструира преку enrollment_id <br> 772 772 '''Проверка за dependency preservation:''' FD1 е зачувана во User 773 773 … … 792 792 }}} 793 793 794 '''Проверка за lossless join:''' Може да се реконструира преку enrollment_id → course_version_id 794 '''Проверка за lossless join:''' Може да се реконструира преку enrollment_id → course_version_id <br> 795 795 '''Проверка за dependency preservation:''' FD5 е зачувана во Course 796 796 … … 815 815 }}} 816 816 817 '''Проверка за lossless join:''' Може да се реконструира преку enrollment_id 817 '''Проверка за lossless join:''' Може да се реконструира преку enrollment_id <br> 818 818 '''Проверка за dependency preservation:''' FD6 е зачувана во Enrollment 819 819 … … 837 837 }}} 838 838 839 '''Проверка за lossless join:''' Може да се реконструира преку enrollment_id 839 '''Проверка за lossless join:''' Може да се реконструира преку enrollment_id <br> 840 840 '''Проверка за dependency preservation:''' FD7 е зачувана во Payment 841 841 … … 858 858 }}} 859 859 860 '''Проверка за lossless join:''' Може да се реконструира преку enrollment_id 860 '''Проверка за lossless join:''' Може да се реконструира преку enrollment_id <br> 861 861 '''Проверка за dependency preservation:''' FD8 е зачувана во Review 862 862 … … 879 879 }}} 880 880 881 '''Проверка за lossless join:''' Може да се реконструира преку tag_id 881 '''Проверка за lossless join:''' Може да се реконструира преку tag_id <br> 882 882 '''Проверка за dependency preservation:''' FD9 е зачувана во Tag 883 883 … … 899 899 }}} 900 900 901 '''Проверка за lossless join:''' Може да се реконструира преку enrollment_id 901 '''Проверка за lossless join:''' Може да се реконструира преку enrollment_id <br> 902 902 '''Проверка за dependency preservation:''' FD11 е зачувана во Course_Version 903 903 … … 918 918 }}} 919 919 920 '''Проверка за lossless join:''' Може да се реконструира преку enrollment_id → course_version_id 920 '''Проверка за lossless join:''' Може да се реконструира преку enrollment_id → course_version_id <br> 921 921 '''Проверка за dependency preservation:''' FD13 е зачувана во Course_Content 922 922 … … 936 936 }}} 937 937 938 '''Проверка за lossless join:''' Може да се реконструира преку enrollment_id → course_version_id → course_content_id 938 '''Проверка за lossless join:''' Може да се реконструира преку enrollment_id → course_version_id → course_content_id <br> 939 939 '''Проверка за dependency preservation:''' FD15 е зачувана во Course_Lecture 940 940 … … 1139 1139 1140 1140 {{{ 1141 Course_What_Will_Be_Learned(course_translate_id, course_what_will_be_learned) 1142 - Примарен клуч: course_translate_id, course_what_will_be_learned 1143 - Кандидат клучеви: course_translate_id, course_what_will_be_learned 1144 - Надворешни клучеви: course_translate_id 1145 1141 1146 User(user_id, user_name, user_email, user_login_provider, user_password_hash, user_verified, user_profile_complete, user_used_free_consultation, user_company_size, user_work_position, user_points) 1142 1147 - Примарен клуч: user_id … … 1224 1229 - Надворешни клучеви: tag_id 1225 1230 1231 User_Tag(user_id, tag_id) 1232 - Примарен клуч: user_id, tag_id 1233 - Кандидат клучеви: user_id, tag_id 1234 - Надворешни клучеви: user_id, tag_id 1235 1236 Course_Tag(course_id, tag_id) 1237 - Примарен клуч: course_id, tag_id 1238 - Кандидат клучеви: course_id, tag_id 1239 - Надворешни клучеви: course_id, tag_id 1240 1241 Expert_Course(expert_id, course_id) 1242 - Примарен клуч: expert_id, course_id 1243 - Кандидат клучеви: expert_id, course_id 1244 - Надворешни клучеви: expert_id, course_id 1226 1245 }}} 1227 1246 1228 1247 === 8.2 Дискусија на разликите од моделот во Фаза P2 === 1229 1248 1230 Преку процесот на нормализација, тргнувајќи од една универзална релација, дојдовме до '''2 0релации'''1231 (17 од функционални зависности + 3 many-to-many junction tables ). Споредбата со концептуалниот модел1249 Преку процесот на нормализација, тргнувајќи од една универзална релација, дојдовме до '''21 релации''' 1250 (17 од функционални зависности + 3 many-to-many junction tables + 1 multi-value). Споредбата со концептуалниот модел 1232 1251 од Фаза P2 покажува следно: 1233 1252 … … 1258 1277 18. '''Expert_Course''' - junction table за many-to-many релација помеѓу Expert и Course 1259 1278 19. '''Course_Tag''' - junction table за many-to-many релација помеѓу Course и Tag 1260 20. '''User_Tag''' (User_Favorite_Course_Ids во P2) - junction table за many-to-many релација помеѓу User и Tag/Course1279 20. '''User_Tag''' - junction table за many-to-many релација помеѓу User и Tag 1261 1280 1262 1281 ==== Релација со мултивредносен атрибут ==== 1263 1282 1264 *'''Course_What_Will_Be_Learned''' - беше дел од Course_Translate во концептуалниот модел, но се издвои во посебна релација во 1NF декомпозицијата поради мултивредносна природа (еден курс има повеќе "what will be learned" ставки).1283 21. '''Course_What_Will_Be_Learned''' - беше дел од Course_Translate во концептуалниот модел, но се издвои во посебна релација во 1NF декомпозицијата поради мултивредносна природа (еден курс има повеќе "what will be learned" ставки). 1265 1284 1266 1285 ==== Клучни наоди ==== 1267 1286 1268 1. '''Концептуалниот модел беше правилно дизајниран''' - 17 од 17 ентитети од ER моделот соодветствуваат на релациите добиени преку нормализација. Ова покажува дека оригиналниот дизајн ги почитуваше принципите на нормализација уште во концептуалната фаза. 1269 1270 2. '''Процесот на нормализација го потврди дизајнот''' - секоја декомпозиција базирана на функционалните зависности резултираше со релација која одговара на ентитет од оригиналниот модел. 1271 1272 3. '''Клучот на универзалната релација''' - примарниот клуч беше идентификуван како композитен клуч од 8 атрибути: {verification_token_uuid, meeting_reminder_id, user_course_progress_id, expert_id, course_lecture_translate_id, course_content_translate_id, course_translate_id, tag_translate_id, course_what_will_be_learned}. Овој клуч беше идентификуван преку анализа на функционалните зависности и класификација лева/десна страна на атрибутите. 1273 1274 4. '''Мултивредносни атрибути''' - концептуалниот модел имаше еден мултивредносен атрибут (course_what_will_be_learned) кој беше правилно идентификуван и декомпониран во 1NF фазата. 1275 1276 5. '''Сите релации се во BCNF''' - после анализа на сите 20 релации, потврдено е дека нема функционална зависност каде детерминантот не е суперклуч. Ова значи дека не е потребна дополнителна декомпозиција. 1277 1278 6. '''Декомпозицијата е lossless''' - на секој чекор од процесот на нормализација, оригиналната информација може да се реконструира преку JOIN операции на заедничките атрибути (foreign keys). 1279 1280 7. '''Сите функционални зависности се зачувани''' - сите 27 функционални зависности (FD1-FD27) се зачувани во соодветните релации, што значи дека ограничувањата можат да се проверуваат без потреба од скапи JOIN операции. 1281 1282 8. '''Many-to-many релации''' - junction tables (Expert_Course, Course_Tag, User_Tag) не произлегуваат од функционални зависности, туку од ER моделот и бизнис логиката. Овие релации немаат свои атрибути освен composite primary key од два foreign keys. 1287 1. '''Процесот на нормализација го потврди дизајнот''' - секоја декомпозиција базирана на функционалните зависности резултираше со релација која одговара на ентитет од оригиналниот модел. 1288 1289 2. '''Клучот на универзалната релација''' - примарниот клуч беше идентификуван како композитен клуч од 8 атрибути: {verification_token_uuid, meeting_reminder_id, user_course_progress_id, expert_id, course_lecture_translate_id, course_content_translate_id, course_translate_id, tag_translate_id, course_what_will_be_learned}. Овој клуч беше идентификуван преку анализа на функционалните зависности и класификација лева/десна страна на атрибутите. 1290 1291 3. '''Декомпозицијата е lossless''' - на секој чекор од процесот на нормализација, оригиналната информација може да се реконструира преку JOIN операции на заедничките атрибути (foreign keys). 1292 1293 4. '''Сите функционални зависности се зачувани''' - сите 27 функционални зависности (FD1-FD27) се зачувани во соодветните релации, што значи дека ограничувањата можат да се проверуваат без потреба од скапи JOIN операции. 1294 1295 5. '''Many-to-many релации''' - junction tables (Expert_Course, Course_Tag, User_Tag) не произлегуваат од функционални зависности, туку од ER моделот и бизнис логиката. Овие релации немаат свои атрибути освен composite primary key од два foreign keys. 1283 1296 1284 1297 ==== Заклучок ==== 1285 1298 1286 Процесот на нормализација '''целосно го потврди дизајнот''' од концептуалната фаза (P2). Не беа потребни 1287 значајни промени - единствената декомпозиција беше издвојувањето на мултивредносниот атрибут course_what_will_be_learned во посебна релација. Ова покажува дека оригиналниот ER модел беше креиран според 1288 принципите на добра база на податоци (минимална редундантност, јасна сепарација на концепти, правилна идентификација на ентитети и релации). 1299 Процесот на нормализација '''целосно го потврди дизајнот''' од концептуалната фаза (P2). Ова покажува дека оригиналниот ER модел беше креиран според принципите на добра база на податоци (минимална редундантност, јасна сепарација на концепти, правилна идентификација на ентитети и релации). 1289 1300 1290 1301 '''Финалниот релационен модел ќе биде идентичен со моделот од Фаза P2'''.
