Changes between Version 15 and Version 16 of normalization


Ignore:
Timestamp:
01/30/26 11:07:45 (5 hours ago)
Author:
231175
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • normalization

    v15 v16  
    300300}}}
    301301
    302 '''Проверка за lossless join:''' Може да се реконструира преку course_translate_id
     302'''Проверка за lossless join:''' Може да се реконструира преку course_translate_id <br> 
    303303'''Проверка за dependency preservation:''' FD28 е зачувана во Course_What_Will_Be_Learned
    304304
     
    391391}}}
    392392
    393 '''Проверка за lossless join:''' Може да се реконструира преку user_id
     393'''Проверка за lossless join:''' Може да се реконструира преку user_id <br> 
    394394'''Проверка за dependency preservation:''' FD2 е зачувана во Verification_Token
    395395
     
    426426}}}
    427427
    428 '''Проверка за lossless join:''' Може да се реконструира преку user_id
     428'''Проверка за lossless join:''' Може да се реконструира преку user_id <br> 
    429429'''Проверка за dependency preservation:''' FD3 е зачувана во Meeting_Reminder
    430430
     
    461461}}}
    462462
    463 '''Проверка за lossless join:''' Може да се реконструира преку expert_id
     463'''Проверка за lossless join:''' Може да се реконструира преку expert_id <br> 
    464464'''Проверка за dependency preservation:''' FD4 е зачувана во Expert
    465465
     
    495495}}}
    496496
    497 '''Проверка за lossless join:''' Може да се реконструира преку tag_id
     497'''Проверка за lossless join:''' Може да се реконструира преку tag_id <br> 
    498498'''Проверка за dependency preservation:''' FD10 е зачувана во Tag_Translate
    499499
     
    528528}}}
    529529
    530 '''Проверка за lossless join:''' Може да се реконструира преку course_id
     530'''Проверка за lossless join:''' Може да се реконструира преку course_id <br> 
    531531'''Проверка за dependency preservation:''' FD12 е зачувана во Course_Translate
    532532
     
    560560}}}
    561561
    562 '''Проверка за lossless join:''' Може да се реконструира преку course_content_id
     562'''Проверка за lossless join:''' Може да се реконструира преку course_content_id <br> 
    563563'''Проверка за dependency preservation:''' FD14 е зачувана во Course_Content_Translate
    564564
     
    591591}}}
    592592
    593 '''Проверка за lossless join:''' Може да се реконструира преку course_lecture_id
     593'''Проверка за lossless join:''' Може да се реконструира преку course_lecture_id <br> 
    594594'''Проверка за dependency preservation:''' FD16 е зачувана во Course_Lecture_Translate
    595595
     
    621621}}}
    622622
    623 '''Проверка за lossless join:''' Може да се реконструира преку enrollment_id и course_lecture_id
     623'''Проверка за lossless join:''' Може да се реконструира преку enrollment_id и course_lecture_id <br> 
    624624'''Проверка за dependency preservation:''' FD17 е зачувана во User_Course_Progress
    625625
     
    769769}}}
    770770
    771 '''Проверка за lossless join:''' Може да се реконструира преку enrollment_id
     771'''Проверка за lossless join:''' Може да се реконструира преку enrollment_id <br> 
    772772'''Проверка за dependency preservation:''' FD1 е зачувана во User
    773773
     
    792792}}}
    793793
    794 '''Проверка за lossless join:''' Може да се реконструира преку enrollment_id → course_version_id
     794'''Проверка за lossless join:''' Може да се реконструира преку enrollment_id → course_version_id <br> 
    795795'''Проверка за dependency preservation:''' FD5 е зачувана во Course
    796796
     
    815815}}}
    816816
    817 '''Проверка за lossless join:''' Може да се реконструира преку enrollment_id
     817'''Проверка за lossless join:''' Може да се реконструира преку enrollment_id <br> 
    818818'''Проверка за dependency preservation:''' FD6 е зачувана во Enrollment
    819819
     
    837837}}}
    838838
    839 '''Проверка за lossless join:''' Може да се реконструира преку enrollment_id
     839'''Проверка за lossless join:''' Може да се реконструира преку enrollment_id <br> 
    840840'''Проверка за dependency preservation:''' FD7 е зачувана во Payment
    841841
     
    858858}}}
    859859
    860 '''Проверка за lossless join:''' Може да се реконструира преку enrollment_id
     860'''Проверка за lossless join:''' Може да се реконструира преку enrollment_id <br> 
    861861'''Проверка за dependency preservation:''' FD8 е зачувана во Review
    862862
     
    879879}}}
    880880
    881 '''Проверка за lossless join:''' Може да се реконструира преку tag_id
     881'''Проверка за lossless join:''' Може да се реконструира преку tag_id <br> 
    882882'''Проверка за dependency preservation:''' FD9 е зачувана во Tag
    883883
     
    899899}}}
    900900
    901 '''Проверка за lossless join:''' Може да се реконструира преку enrollment_id
     901'''Проверка за lossless join:''' Може да се реконструира преку enrollment_id <br> 
    902902'''Проверка за dependency preservation:''' FD11 е зачувана во Course_Version
    903903
     
    918918}}}
    919919
    920 '''Проверка за lossless join:''' Може да се реконструира преку enrollment_id → course_version_id
     920'''Проверка за lossless join:''' Може да се реконструира преку enrollment_id → course_version_id <br> 
    921921'''Проверка за dependency preservation:''' FD13 е зачувана во Course_Content
    922922
     
    936936}}}
    937937
    938 '''Проверка за lossless join:''' Може да се реконструира преку enrollment_id → course_version_id → course_content_id
     938'''Проверка за lossless join:''' Може да се реконструира преку enrollment_id → course_version_id → course_content_id <br> 
    939939'''Проверка за dependency preservation:''' FD15 е зачувана во Course_Lecture
    940940
     
    11391139
    11401140{{{
     1141Course_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
    11411146User(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)
    11421147  - Примарен клуч: user_id
     
    12241229  - Надворешни клучеви: tag_id
    12251230
     1231User_Tag(user_id, tag_id)
     1232  - Примарен клуч: user_id, tag_id
     1233  - Кандидат клучеви: user_id, tag_id
     1234  - Надворешни клучеви: user_id, tag_id
     1235
     1236Course_Tag(course_id, tag_id)
     1237  - Примарен клуч: course_id, tag_id
     1238  - Кандидат клучеви: course_id, tag_id
     1239  - Надворешни клучеви: course_id, tag_id
     1240
     1241Expert_Course(expert_id, course_id)
     1242  - Примарен клуч: expert_id, course_id
     1243  - Кандидат клучеви: expert_id, course_id
     1244  - Надворешни клучеви: expert_id, course_id
    12261245}}}
    12271246
    12281247=== 8.2 Дискусија на разликите од моделот во Фаза P2 ===
    12291248
    1230 Преку процесот на нормализација, тргнувајќи од една универзална релација, дојдовме до '''20 релации'''
    1231 (17 од функционални зависности + 3 many-to-many junction tables). Споредбата со концептуалниот модел
     1249Преку процесот на нормализација, тргнувајќи од една универзална релација, дојдовме до '''21 релации'''
     1250(17 од функционални зависности + 3 many-to-many junction tables + 1 multi-value). Споредбата со концептуалниот модел
    12321251од Фаза P2 покажува следно:
    12331252
     
    12581277 18. '''Expert_Course''' - junction table за many-to-many релација помеѓу Expert и Course
    12591278 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/Course
     1279 20. '''User_Tag''' - junction table за many-to-many релација помеѓу User и Tag
    12611280
    12621281==== Релација со мултивредносен атрибут ====
    12631282
    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" ставки).
    12651284
    12661285==== Клучни наоди ====
    12671286
    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.
    12831296
    12841297==== Заклучок ====
    12851298
    1286 Процесот на нормализација '''целосно го потврди дизајнот''' од концептуалната фаза (P2). Не беа потребни
    1287 значајни промени - единствената декомпозиција беше издвојувањето на мултивредносниот атрибут course_what_will_be_learned во посебна релација. Ова покажува дека оригиналниот ER модел беше креиран според
    1288 принципите на добра база на податоци (минимална редундантност, јасна сепарација на концепти, правилна идентификација на ентитети и релации).
     1299Процесот на нормализација '''целосно го потврди дизајнот''' од концептуалната фаза (P2). Ова покажува дека оригиналниот ER модел беше креиран според принципите на добра база на податоци (минимална редундантност, јасна сепарација на концепти, правилна идентификација на ентитети и релации).
    12891300
    12901301'''Финалниот релационен модел ќе биде идентичен со моделот од Фаза P2'''.