Changes between Version 2 and Version 3 of Normalization
- Timestamp:
- 09/16/26 14:47:08 (12 days ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Normalization
v2 v3 226 226 === Декомпозиција по FD4 227 227 228 ''' HighSchool'''(''__high_school_id__'', user_id, gpa, hs_type)228 '''!HighSchool'''(''__high_school_id__'', user_id, gpa, hs_type) 229 229 230 230 R6 = R5 − { gpa, hs_type } … … 232 232 * Клучеви: high_school_id (примарен), user_id (алтернативен, поради FD3 - врската е 1:1) 233 233 * ''Lossless join'': спојување по high_school_id. 234 * ''Dependency preservation'': FD3 и FD4 се сочувани во HighSchool.234 * ''Dependency preservation'': FD3 и FD4 се сочувани во !HighSchool. 235 235 236 236 === Декомпозиција по FD6 … … 246 246 === Декомпозиција по FD13 247 247 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) 249 249 250 250 R8 = R7 − { enrolled_quota, note, student_comment, enrolled_created_at, last_change, completed } … … 253 253 * Транзитивна зависност: payment_id → enrolled_id → атрибутите на запишувањето 254 254 * ''Lossless join'': спојување по enrolled_id. 255 * ''Dependency preservation'': FD13 и FD14 се сочувани во EnrolledSemesters.255 * ''Dependency preservation'': FD13 и FD14 се сочувани во !EnrolledSemesters. 256 256 257 257 === Декомпозиција по FD7 … … 268 268 === Декомпозиција по FD8 269 269 270 ''' ActiveSemesters'''(''__semester_id__'', year, semester_type)270 '''!ActiveSemesters'''(''__semester_id__'', year, semester_type) 271 271 272 272 R10 = R9 − { year, semester_type } … … 275 275 * Транзитивна зависност: enrolled_id → semester_id → year, semester_type 276 276 * ''Lossless join'': спојување по semester_id. 277 * ''Dependency preservation'': FD8 и FD9 се сочувани во ActiveSemesters.277 * ''Dependency preservation'': FD8 и FD9 се сочувани во !ActiveSemesters. 278 278 279 279 === Декомпозиција по FD15 280 280 281 ''' SemestersSubjects'''(''__sem_subject_id__'', enrolled_id, subject_id, professor_id, signature)281 '''!SemestersSubjects'''(''__sem_subject_id__'', enrolled_id, subject_id, professor_id, signature) 282 282 283 283 R11 = R10 − { professor_id, signature } … … 285 285 * Клучеви: sem_subject_id (примарен), (enrolled_id, subject_id) (алтернативен, поради FD16) 286 286 * ''Lossless join'': спојување по sem_subject_id. 287 * ''Dependency preservation'': FD15 и FD16 се сочувани во SemestersSubjects.287 * ''Dependency preservation'': FD15 и FD16 се сочувани во !SemestersSubjects. 288 288 289 289 === Декомпозиција по FD17 290 290 291 ''' PassedSubjects'''(''__passed_id__'', sem_subject_id, grade, date_passed)291 '''!PassedSubjects'''(''__passed_id__'', sem_subject_id, grade, date_passed) 292 292 293 293 R12 = R11 − { grade, date_passed } … … 295 295 * Клучеви: passed_id (примарен), sem_subject_id (алтернативен, поради FD18 - врската е 1:1) 296 296 * ''Lossless join'': спојување по passed_id. 297 * ''Dependency preservation'': FD17 и FD18 се сочувани во PassedSubjects.297 * ''Dependency preservation'': FD17 и FD18 се сочувани во !PassedSubjects. 298 298 299 299 === Декомпозиција по FD22 300 300 301 ''' MajorSubjects'''(''__major_id__'', ''__subject_id__'', mandatory_semester)301 '''!MajorSubjects'''(''__major_id__'', ''__subject_id__'', mandatory_semester) 302 302 303 303 R13 = R12 − { mandatory_semester } … … 306 306 * Зависноста FD22 има сложена лева страна која не е клуч на R12, што ја нарушува 3НФ. 307 307 * ''Lossless join'': спојување по (major_id, subject_id). 308 * ''Dependency preservation'': FD22 е сочувана во MajorSubjects.308 * ''Dependency preservation'': FD22 е сочувана во !MajorSubjects. 309 309 310 310 '''Резултат по 3НФ:''' … … 323 323 324 324 * Users - детерминанти user_id и email, обата се кандидат клучеви → БКНФ 325 * HighSchool - детерминанти high_school_id и user_id, обата се кандидат клучеви → БКНФ325 * !HighSchool - детерминанти high_school_id и user_id, обата се кандидат клучеви → БКНФ 326 326 * Contact - детерминанти contact_id и user_id, обата се кандидат клучеви → БКНФ 327 327 * Major - детерминанта major_id → БКНФ 328 * ActiveSemesters - детерминанти semester_id и (year, semester_type) → БКНФ328 * !ActiveSemesters - детерминанти semester_id и (year, semester_type) → БКНФ 329 329 * 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 → БКНФ 333 333 * Documents - детерминанта document_id → БКНФ 334 334 * Token - детерминанта token_id → БКНФ 335 335 * Payment - детерминанта payment_id → БКНФ 336 * MajorSubjects - детерминанта (major_id, subject_id) → БКНФ336 * !MajorSubjects - детерминанта (major_id, subject_id) → БКНФ 337 337 338 338 === Пронајдено нарушување на БКНФ … … 355 355 Payment(''__payment_id__'', enrolled_id, amount) 356 356 357 user_id се добива со спојување преку EnrolledSemesters.358 359 * ''Lossless join'': enrolled_id е надворешен клуч кон EnrolledSemesters, каде е клуч, па спојувањето е без загуба.357 user_id се добива со спојување преку !EnrolledSemesters. 358 359 * ''Lossless join'': enrolled_id е надворешен клуч кон !EnrolledSemesters, каде е клуч, па спојувањето е без загуба. 360 360 * ''Dependency preservation'': FD21 останува сочувана, бидејќи payment_id → enrolled_id, amount е во Payment, а payment_id → user_id се изведува транзитивно преку FD13. 361 361 … … 371 371 '''Декомпозиција по 4НФ:''' 372 372 373 * ''' UserDocuments'''(''__user_id__'', ''__document_id__'') - од FD23374 * ''' DependencySubject'''(''__subject_id__'', ''__prerequisite_id__'') - од FD24375 * ''' ProfessourSubjects'''(''__teaching_prof_id__'', ''__semester_id__'', ''__subject_id__'') - од FD25373 * '''!UserDocuments'''(''__user_id__'', ''__document_id__'') - од FD23 374 * '''!DependencySubject'''(''__subject_id__'', ''__prerequisite_id__'') - од FD24 375 * '''!ProfessourSubjects'''(''__teaching_prof_id__'', ''__semester_id__'', ''__subject_id__'') - од FD25 376 376 377 377 Останатите идентификатори од R13 (high_school_id, contact_id, major_id, … … 387 387 388 388 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) 390 390 3. '''Contact'''(''__contact_id__'', user_id, city, municipality, address, phone_number, microsoft_email) 391 391 4. '''Major'''(''__major_id__'', major_name) 392 5. ''' ActiveSemesters'''(''__semester_id__'', year, semester_type)392 5. '''!ActiveSemesters'''(''__semester_id__'', year, semester_type) 393 393 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) 397 397 10. '''Documents'''(''__document_id__'', document_type, document_body, document_cost) 398 11. ''' UserDocuments'''(''__user_id__'', ''__document_id__'')398 11. '''!UserDocuments'''(''__user_id__'', ''__document_id__'') 399 399 12. '''Token'''(''__token_id__'', user_id, token_value, expires_at, is_valid) 400 400 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__'') 404 404 405 405 Сите 16 релации се во БКНФ, декомпозицијата ги сочувува сите функционални … … 433 433 релација). Токму таа проверка го откри нарушувањето кај Payment. 434 434 435 == Користење на вештачка интелигенција 436 437 [wiki:NormalizationAIUsage NormalizationAIUsage] 438 435 439 == Историјат 436 440
