Changes between Version 11 and Version 12 of normalization


Ignore:
Timestamp:
01/30/26 01:12:52 (15 hours ago)
Author:
231175
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • normalization

    v11 v12  
    627627
    628628{{{
    629 R1(productId, product_name, product_description, product_sku, product_unit_price, product_reorder_level, categoryId, supplierId)
    630    PK: productId
    631 
    632 R2(saleId, sale_date_time, sale_total_amount, userId, customerId, warehouseId)
    633    PK: saleId
    634 
    635 R3(poId, po_order_date, po_expected_delivery_date, po_status, supplierId, warehouseId)
    636    PK: poId
    637 
    638 R4(saleId, productId, saleitem_quantity, saleitem_unit_price_at_sale)
    639    PK: {saleId, productId}
    640 
    641 R5(poId, productId, poitem_quantity, poitem_unit_cost)
    642    PK: {poId, productId}
    643 
    644 U5(saleId, poId, productId, userId, user_username, user_password, user_full_name, user_email, user_role, user_is_active,
    645    customerId, customer_name, customer_email, customer_phone, customer_address,
    646    categoryId, category_name, category_description,
    647    supplierId, supplier_name, supplier_contact_person, supplier_phone, supplier_email, supplier_address,
    648    warehouseId, warehouse_name, warehouse_location, warehouse_capacity,
    649    stock_quantity_on_hand, stock_last_updated)
    650    PK: {saleId, poId, productId}
     629Verification_Token(verification_token_uuid, token_created_at, token_expired_at, user_id)
     630   PK: verification_token_uuid
     631
     632Meeting_Reminder(meeting_reminder_id, meeting_at, meeting_scheduled_at, meeting_sent, meeting_link, user_id)
     633   PK: meeting_reminder_id
     634
     635Expert(expert_id, expert_name, expert_email, expert_login_provider, expert_password_hash)
     636   PK: expert_id
     637
     638Tag_Translate(tag_translate_id, tag_translate_language, tag_value, tag_id)
     639   PK: tag_translate_id
     640
     641Course_Translate(course_translate_id, course_translate_language, course_title_short, course_title, course_description_short, course_description, course_description_long, course_id)
     642   PK: course_translate_id
     643
     644Course_Content_Translate(course_content_translate_id, content_translate_title, content_translate_language, course_content_id)
     645   PK: course_content_translate_id
     646
     647Course_Lecture_Translate(course_lecture_translate_id, lecture_title, lecture_language, lecture_content_file_name, lecture_description, lecture_content_text, course_lecture_id)
     648   PK: course_lecture_translate_id
     649
     650User_Course_Progress(user_course_progress_id, progress_completed, progress_completed_at, enrollment_id, course_lecture_id)
     651   PK: user_course_progress_id
     652
     653Universal_Relation_Shifter_Base_8(
     654user_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,
     655expert_id,
     656course_id, course_image_url, course_color, course_difficulty, course_duration_minutes, course_price,
     657course_version_id, version_number, version_creation_date, version_active,
     658enrollment_id, enrollment_status, enrollment_purchase_date, enrollment_activation_date, enrollment_completion_date,
     659payment_id, payment_amount, payment_date, payment_method, payment_status,
     660review_id, review_rating, review_comment, review_date,
     661course_content_id, content_position,
     662course_lecture_id, lecture_duration_minutes, lecture_position, lecture_content_type,
     663tag_id, tag_type
     664)
     665   PK: ∅
    651666}}}
    652667
     
    657672=== Проверка за транзитивни зависности во секоја релација ===
    658673
    659 ==== R1(productId, product_name, product_description, product_sku, product_unit_price, product_reorder_level, categoryId, supplierId) ====
     674==== Verification_Token(verification_token_uuid, token_created_at, token_expired_at, user_id) ====
    660675
    661676'''Транзитивни зависности:'''
    662  * productId → categoryId → category_name, category_description?
    663    * category_name и category_description НЕ се во R1, па нема транзитивна зависност во оваа релација.
    664  * productId → supplierId → supplier_*?
    665    * supplier_* атрибутите НЕ се во R1.
    666 
    667 '''Заклучок:''' R1 е во 3NF ✓
    668 
    669 ==== R2(saleId, sale_date_time, sale_total_amount, userId, customerId, warehouseId) ====
     677 * verification_token_uuid → user_id → user_*?
     678   * user_* НЕ се во Verification_Token, па нема транзитивна зависност во оваа релација.
     679
     680'''Заклучок:''' Verification_Token е во 3NF ✓
     681
     682==== Meeting_Reminder(meeting_reminder_id, meeting_at, meeting_scheduled_at, meeting_sent, meeting_link, user_id) ====
    670683
    671684'''Транзитивни зависности:'''
    672  * saleId → userId → user_*?
    673    * user_* атрибутите НЕ се во R2.
    674  * saleId → customerId → customer_*?
    675    * customer_* атрибутите НЕ се во R2.
    676  * saleId → warehouseId → warehouse_*?
    677    * warehouse_* атрибутите НЕ се во R2.
    678 
    679 '''Заклучок:''' R2 е во 3NF ✓
    680 
    681 ==== R3(poId, po_order_date, po_expected_delivery_date, po_status, supplierId, warehouseId) ====
    682 
    683 '''Транзитивни зависности:'''
    684  * Слично како R2, supplier_* и warehouse_* не се во R3.
    685 
    686 '''Заклучок:''' R3 е во 3NF ✓
    687 
    688 ==== R4(saleId, productId, saleitem_quantity, saleitem_unit_price_at_sale) ====
     685 * meeting_reminder_id → userId → user_*?
     686   * user_* атрибутите НЕ се во Meeting_Reminder.
     687
     688'''Заклучок:''' Meeting_Reminder е во 3NF ✓
     689
     690==== Expert(expert_id, expert_name, expert_email, expert_login_provider, expert_password_hash) ====
    689691
    690692'''Транзитивни зависности:'''
    691693 * Нема не-клучни атрибути кои одредуваат други не-клучни атрибути.
    692694
    693 '''Заклучок:''' R4 е во 3NF ✓
    694 
    695 ==== R5(poId, productId, poitem_quantity, poitem_unit_cost) ====
    696 
    697 '''Заклучок:''' R5 е во 3NF ✓
    698 
    699 ==== U5 - Проверка за транзитивни зависности ====
    700 
    701 Примарен клуч на U5: '''{saleId, poId, productId}'''
     695'''Заклучок:''' Expert е во 3NF ✓
     696
     697==== Tag_Translate(tag_translate_id, tag_translate_language, tag_value, tag_id) ====
     698
     699'''Транзитивни зависности:'''
     700 * tag_translate_id → tag_id → tag_*?
     701   * tag_* атрибутите НЕ се во Tag_Translate.
     702
     703'''Заклучок:''' Tag_Translate е во 3NF ✓
     704
     705==== Course_Translate(course_translate_id, course_translate_language, course_title_short, course_title, course_description_short, course_description, course_description_long, course_id) ====
     706
     707'''Транзитивни зависности:'''
     708 * course_translate_id → course_id → course_*?
     709   * course_* атрибутите НЕ се во Course_Translate.
     710
     711'''Заклучок:''' Course_Translate е во 3NF ✓
     712
     713==== Course_Content_Translate(course_content_translate_id, content_translate_title, content_translate_language, course_content_id) ====
     714
     715'''Транзитивни зависности:'''
     716 * course_content_translate_id → course_content_id → course_content_*?
     717   * course_content_* атрибутите НЕ се во Course_Content_Translate.
     718
     719'''Заклучок:''' Course_Content_Translate е во 3NF ✓
     720
     721==== Course_Lecture_Translate(course_lecture_translate_id, lecture_title, lecture_language, lecture_content_file_name, lecture_description, lecture_content_text, course_lecture_id) ====
     722
     723'''Транзитивни зависности:'''
     724 * course_lecture_translate_id → course_lecture_id → course_lecture_*?
     725   * course_lecture_* атрибутите НЕ се во Course_Lecture_Translate.
     726
     727'''Заклучок:''' Course_Lecture_Translate е во 3NF ✓
     728
     729==== User_Course_Progress(user_course_progress_id, progress_completed, progress_completed_at, enrollment_id, course_lecture_id) ====
     730
     731'''Транзитивни зависности:'''
     732 * user_course_progress_id → enrollment_id → enrollment_*?
     733   * enrollment_* атрибутите НЕ се во User_Course_Progress.
     734 * user_course_progress_id → course_lecture_id → course_lecture_*?
     735   * course_lecture_* атрибутите НЕ се во User_Course_Progress.
     736
     737'''Заклучок:''' User_Course_Progress е во 3NF ✓
     738
     739==== Universal_Relation_Shifter_Base_8 - Проверка за транзитивни зависности ====
     740
     741Примарен клуч на Universal_Relation_Shifter_Base_8: '''{saleId, poId, productId}'''
    702742
    703743'''Транзитивни зависности во U5:'''