Changes between Version 2 and Version 3 of Normalization


Ignore:
Timestamp:
09/16/26 14:47:08 (12 days ago)
Author:
233149
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Normalization

    v2 v3  
    226226=== Декомпозиција по FD4
    227227
    228  '''HighSchool'''(''__high_school_id__'', user_id, gpa, hs_type)
     228 '''!HighSchool'''(''__high_school_id__'', user_id, gpa, hs_type)
    229229
    230230 R6 = R5 − { gpa, hs_type }
    … …  
    232232 * Клучеви: high_school_id (примарен), user_id (алтернативен, поради FD3 - врската е 1:1)
    233233 * ''Lossless join'': спојување по high_school_id.
    234  * ''Dependency preservation'': FD3 и FD4 се сочувани во HighSchool.
     234 * ''Dependency preservation'': FD3 и FD4 се сочувани во !HighSchool.
    235235
    236236=== Декомпозиција по FD6
    … …  
    246246=== Декомпозиција по FD13
    247247
    248  '''EnrolledSemesters'''(''__enrolled_id__'', user_id, enrolled_quota, major_id, note, student_comment, enrolled_created_at, last_change, completed, semester_id)
     248 '''!EnrolledSemesters'''(''__enrolled_id__'', user_id, enrolled_quota, major_id, note, student_comment, enrolled_created_at, last_change, completed, semester_id)
    249249
    250250 R8 = R7 − { enrolled_quota, note, student_comment, enrolled_created_at, last_change, completed }
    … …  
    253253 * Транзитивна зависност: payment_id → enrolled_id → атрибутите на запишувањето
    254254 * ''Lossless join'': спојување по enrolled_id.
    255  * ''Dependency preservation'': FD13 и FD14 се сочувани во EnrolledSemesters.
     255 * ''Dependency preservation'': FD13 и FD14 се сочувани во !EnrolledSemesters.
    256256
    257257=== Декомпозиција по FD7
    … …  
    268268=== Декомпозиција по FD8
    269269
    270  '''ActiveSemesters'''(''__semester_id__'', year, semester_type)
     270 '''!ActiveSemesters'''(''__semester_id__'', year, semester_type)
    271271
    272272 R10 = R9 − { year, semester_type }
    … …  
    275275 * Транзитивна зависност: enrolled_id → semester_id → year, semester_type
    276276 * ''Lossless join'': спојување по semester_id.
    277  * ''Dependency preservation'': FD8 и FD9 се сочувани во ActiveSemesters.
     277 * ''Dependency preservation'': FD8 и FD9 се сочувани во !ActiveSemesters.
    278278
    279279=== Декомпозиција по FD15
    280280
    281  '''SemestersSubjects'''(''__sem_subject_id__'', enrolled_id, subject_id, professor_id, signature)
     281 '''!SemestersSubjects'''(''__sem_subject_id__'', enrolled_id, subject_id, professor_id, signature)
    282282
    283283 R11 = R10 − { professor_id, signature }
    … …  
    285285 * Клучеви: sem_subject_id (примарен), (enrolled_id, subject_id) (алтернативен, поради FD16)
    286286 * ''Lossless join'': спојување по sem_subject_id.
    287  * ''Dependency preservation'': FD15 и FD16 се сочувани во SemestersSubjects.
     287 * ''Dependency preservation'': FD15 и FD16 се сочувани во !SemestersSubjects.
    288288
    289289=== Декомпозиција по FD17
    290290
    291  '''PassedSubjects'''(''__passed_id__'', sem_subject_id, grade, date_passed)
     291 '''!PassedSubjects'''(''__passed_id__'', sem_subject_id, grade, date_passed)
    292292
    293293 R12 = R11 − { grade, date_passed }
    … …  
    295295 * Клучеви: passed_id (примарен), sem_subject_id (алтернативен, поради FD18 - врската е 1:1)
    296296 * ''Lossless join'': спојување по passed_id.
    297  * ''Dependency preservation'': FD17 и FD18 се сочувани во PassedSubjects.
     297 * ''Dependency preservation'': FD17 и FD18 се сочувани во !PassedSubjects.
    298298
    299299=== Декомпозиција по FD22
    300300
    301  '''MajorSubjects'''(''__major_id__'', ''__subject_id__'', mandatory_semester)
     301 '''!MajorSubjects'''(''__major_id__'', ''__subject_id__'', mandatory_semester)
    302302
    303303 R13 = R12 − { mandatory_semester }
    … …  
    306306 * Зависноста FD22 има сложена лева страна која не е клуч на R12, што ја нарушува 3НФ.
    307307 * ''Lossless join'': спојување по (major_id, subject_id).
    308  * ''Dependency preservation'': FD22 е сочувана во MajorSubjects.
     308 * ''Dependency preservation'': FD22 е сочувана во !MajorSubjects.
    309309
    310310'''Резултат по 3НФ:'''
    … …  
    323323
    324324 * Users - детерминанти user_id и email, обата се кандидат клучеви → БКНФ
    325  * HighSchool - детерминанти high_school_id и user_id, обата се кандидат клучеви → БКНФ
     325 * !HighSchool - детерминанти high_school_id и user_id, обата се кандидат клучеви → БКНФ
    326326 * Contact - детерминанти contact_id и user_id, обата се кандидат клучеви → БКНФ
    327327 * Major - детерминанта major_id → БКНФ
    328  * ActiveSemesters - детерминанти semester_id и (year, semester_type) → БКНФ
     328 * !ActiveSemesters - детерминанти semester_id и (year, semester_type) → БКНФ
    329329 * Subjects - детерминанти subject_id, subject_name, subject_code, сите кандидат клучеви → БКНФ
    330  * EnrolledSemesters - детерминанти enrolled_id и (user_id, semester_id) → БКНФ
    331  * SemestersSubjects - детерминанти sem_subject_id и (enrolled_id, subject_id) → БКНФ
    332  * PassedSubjects - детерминанти passed_id и sem_subject_id → БКНФ
     330 * !EnrolledSemesters - детерминанти enrolled_id и (user_id, semester_id) → БКНФ
     331 * !SemestersSubjects - детерминанти sem_subject_id и (enrolled_id, subject_id) → БКНФ
     332 * !PassedSubjects - детерминанти passed_id и sem_subject_id → БКНФ
    333333 * Documents - детерминанта document_id → БКНФ
    334334 * Token - детерминанта token_id → БКНФ
    335335 * Payment - детерминанта payment_id → БКНФ
    336  * MajorSubjects - детерминанта (major_id, subject_id) → БКНФ
     336 * !MajorSubjects - детерминанта (major_id, subject_id) → БКНФ
    337337
    338338=== Пронајдено нарушување на БКНФ
    … …  
    355355 Payment(''__payment_id__'', enrolled_id, amount)
    356356
    357  user_id се добива со спојување преку EnrolledSemesters.
    358 
    359  * ''Lossless join'': enrolled_id е надворешен клуч кон EnrolledSemesters, каде е клуч, па спојувањето е без загуба.
     357 user_id се добива со спојување преку !EnrolledSemesters.
     358
     359 * ''Lossless join'': enrolled_id е надворешен клуч кон !EnrolledSemesters, каде е клуч, па спојувањето е без загуба.
    360360 * ''Dependency preservation'': FD21 останува сочувана, бидејќи payment_id → enrolled_id, amount е во Payment, а payment_id → user_id се изведува транзитивно преку FD13.
    361361
    … …  
    371371'''Декомпозиција по 4НФ:'''
    372372
    373  * '''UserDocuments'''(''__user_id__'', ''__document_id__'') - од FD23
    374  * '''DependencySubject'''(''__subject_id__'', ''__prerequisite_id__'') - од FD24
    375  * '''ProfessourSubjects'''(''__teaching_prof_id__'', ''__semester_id__'', ''__subject_id__'') - од FD25
     373 * '''!UserDocuments'''(''__user_id__'', ''__document_id__'') - од FD23
     374 * '''!DependencySubject'''(''__subject_id__'', ''__prerequisite_id__'') - од FD24
     375 * '''!ProfessourSubjects'''(''__teaching_prof_id__'', ''__semester_id__'', ''__subject_id__'') - од FD25
    376376
    377377Останатите идентификатори од R13 (high_school_id, contact_id, major_id,
    … …  
    387387
    388388 1. '''Users'''(''__user_id__'', user_name, embg, surname, index_no, bday, email, password, role, quota, enrollment_year, user_created_at)
    389  2. '''HighSchool'''(''__high_school_id__'', user_id, gpa, hs_type)
     389 2. '''!HighSchool'''(''__high_school_id__'', user_id, gpa, hs_type)
    390390 3. '''Contact'''(''__contact_id__'', user_id, city, municipality, address, phone_number, microsoft_email)
    391391 4. '''Major'''(''__major_id__'', major_name)
    392  5. '''ActiveSemesters'''(''__semester_id__'', year, semester_type)
     392 5. '''!ActiveSemesters'''(''__semester_id__'', year, semester_type)
    393393 6. '''Subjects'''(''__subject_id__'', subject_name, subject_code, awarded_credits, dependency_credit)
    394  7. '''EnrolledSemesters'''(''__enrolled_id__'', user_id, enrolled_quota, major_id, note, student_comment, enrolled_created_at, last_change, completed, semester_id)
    395  8. '''SemestersSubjects'''(''__sem_subject_id__'', enrolled_id, subject_id, professor_id, signature)
    396  9. '''PassedSubjects'''(''__passed_id__'', sem_subject_id, grade, date_passed)
     394 7. '''!EnrolledSemesters'''(''__enrolled_id__'', user_id, enrolled_quota, major_id, note, student_comment, enrolled_created_at, last_change, completed, semester_id)
     395 8. '''!SemestersSubjects'''(''__sem_subject_id__'', enrolled_id, subject_id, professor_id, signature)
     396 9. '''!PassedSubjects'''(''__passed_id__'', sem_subject_id, grade, date_passed)
    397397 10. '''Documents'''(''__document_id__'', document_type, document_body, document_cost)
    398  11. '''UserDocuments'''(''__user_id__'', ''__document_id__'')
     398 11. '''!UserDocuments'''(''__user_id__'', ''__document_id__'')
    399399 12. '''Token'''(''__token_id__'', user_id, token_value, expires_at, is_valid)
    400400 13. '''Payment'''(''__payment_id__'', enrolled_id, amount)
    401  14. '''MajorSubjects'''(''__major_id__'', ''__subject_id__'', mandatory_semester)
    402  15. '''DependencySubject'''(''__subject_id__'', ''__prerequisite_id__'')
    403  16. '''ProfessourSubjects'''(''__teaching_prof_id__'', ''__semester_id__'', ''__subject_id__'')
     401 14. '''!MajorSubjects'''(''__major_id__'', ''__subject_id__'', mandatory_semester)
     402 15. '''!DependencySubject'''(''__subject_id__'', ''__prerequisite_id__'')
     403 16. '''!ProfessourSubjects'''(''__teaching_prof_id__'', ''__semester_id__'', ''__subject_id__'')
    404404
    405405Сите 16 релации се во БКНФ, декомпозицијата ги сочувува сите функционални
    … …  
    433433релација). Токму таа проверка го откри нарушувањето кај Payment.
    434434
     435== Користење на вештачка интелигенција
     436
     437 [wiki:NormalizationAIUsage NormalizationAIUsage]
     438
    435439== Историјат
    436440