Changes between Version 12 and Version 13 of Normalization


Ignore:
Timestamp:
04/21/26 15:40:37 (11 days ago)
Author:
221296
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Normalization

    v12 v13  
    5252Subscription plan / subscription / payment
    5353{{{
    54 FD4: plan_id → plan_name, price, duration_months, description, access_type
     54FD4: plan_id → plan_name, price, duration_months, plan_description, access_type
    5555FD5: subscription_id → user_id, plan_id, start_date, end_date, subscription_status
    5656FD6: payment_id → user_id, subscription_id, amount
     
    5959Support ticket
    6060{{{
    61 FD7: ticket_id → user_id, admin_id, subject, description_ticket, ticket_status, created_at
     61FD7: ticket_id → user_id, admin_id, subject, ticket_description, ticket_status, created_at
    6262}}}
    6363
     
    6868}}}
    6969
    70 CourseCategory
     70CourseCategory relation
    7171{{{
    7272The relation CourseCategory has composite key (course_id, category_id) and no additional non-trivial functional dependencies.
     
    103103=== Closure proof for K
    104104{{{
     105
    105106Let K = {payment_id, ticket_id, course_id, category_id, attempt_id, certificate_id}
    106107
     
    117118
    118119From FD4:
    119 plan_id → plan_name, price, duration_months, access_type
    120 Add: plan_name, price, duration_months, access_type
     120plan_id → plan_name, price, duration_months, plan_description, access_type
     121Add: plan_name, price, duration_months, plan_description, access_type
    121122
    122123From FD1:
     
    125126
    126127From FD7:
    127 ticket_id → admin_id, subject, description, ticket_status, created_at, user_id
    128 Add: admin_id, subject, description, ticket_status, created_at
     128ticket_id → user_id, admin_id, subject, ticket_description, ticket_status, created_at
     129Add: admin_id, subject, ticket_description, ticket_status, created_at
    129130(user_id already belongs to K+)
    130131
     
    159160
    160161From FD10:
    161 module_id → module_title, module_description, course_id
     162module_id → course_id, module_title, module_description
    162163Add: module_title, module_description
    163164(course_id already belongs to K+)
     
    171172Add: enroll_date, completion_status, progress_percentage
    172173(user_id and course_id already belong to K+)
    173 }}}
    174174
    175175Therefore, K+ contains all attributes of the universal relation R, so K is a superkey.
    176176
    177177K is also minimal, because removing any attribute from K would cause the loss of at least one independent component of the universal relation:
     178
    178179- without payment_id, payment/subscription information is lost
    179 - without ticket_id, support ticket information is lost
     180- Without ticket_id, support ticket information is lost
    180181- without course_id or category_id, the course-category association is lost
    181 - without attempt_id, quiz attempt and course content assessment information is lost
    182 - without certificate_id, certificate and enrollment completion information is lost
    183 
    184 So, K is a candidate key..
     182- without attempt_id, quiz attempt, and course content assessment information is lost
     183- Without certificate_id, certificate, and enrollment completion information is lost
     184
     185So, K is a candidate key.
    185186
    186187=== Chosen primary key