Changes between Version 9 and Version 10 of Normalization


Ignore:
Timestamp:
09/23/25 03:04:36 (2 days ago)
Author:
215010
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Normalization

    v9 v10  
    8383Нема повторувачки групи или низи, значи R е во 1NF.
    8484
    85 2NF (отстранување на делумни зависности)
     85==== 2NF (отстранување на делумни зависности)
    8686
    87872NF тест: ако релацијата има композитен кандидатски клуч, секој не-примарен атрибут мора да зависи од целиот клуч, а не од дел.
     
    9393Ги извлекуваме детерминантите и нивните зависни во посебни релации:
    9494
    95 ==== Users
     95===== Users
    9696
    9797R1: Users(user_id, first_name, last_name, phone, email, password)
     
    103103R1 е во BCNF.
    104104
    105 ==== Hotel_Building
     105===== Hotel_Building
    106106
    107107R2: Hotel_Building(building_id, address, city, floors, num_rooms, manager_id)
     
    113113R2 е во BCNF.
    114114
    115 ==== Room
     115===== Room
    116116
    117117R3: Room(room_number, building_id, room_type, number_of_beds, price_per_night, available)
     
    123123R3 е во BCNF.
    124124
    125 ==== Staff
     125===== Staff
    126126
    127127R4: Staff(user_id /*staff_id*/, building_id)
     
    133133R4 е во BCNF.
    134134
    135 ==== Reservation
     135===== Reservation
    136136
    137137R5: Reservation(reservation_id, start_date, end_date, reserv_date, status, room_number, building_id, customer_id, manager_id)
     
    143143R5 е во BCNF.
    144144
    145 ==== Service
     145===== Service
    146146
    147147R6: Service(service_id, service_type, service_date, service_status, room_number, building_id, staff_id)
     
    162162
    163163R7 е во BCNF.
     164
     165По извлекувањето на овие релации, сите делумни зависности во однос на големиот суперклуч се отстрануваат - атрибутите што не се клуч на секоја релација сега целосно зависат од клучот на таа релација. Значи, сме во 2NF.
     166
     167==== 3NF (отстранување на транзитивни зависности) преку 3NF Синтеза
     168
     169Цел на 3NF: елиминирање на транзитивни зависности (не клучен атрибут кој зависи од друг не клучен атрибут). Канонскиот алгоритам за синтеза на 3NF е најдобар бидејќи ги зачувува зависностите.
     170
     171Имплементирана постапка:
     172
     173Пресметај канонична покриеност Fc на FDs. За секоја лева страна X соберете ги сите атрибути A т.е. X -> A во една релација R_X.
     174
     175Креирај релации за секоја детерминанта:
     176
     177Users(user_id, first_name, last_name, phone, email, password) — oд user_id FDs.
     178
     179Hotel_Building(building_id, address, city, floors, num_rooms, manager_id) — oд building_id.
     180
     181Room(room_number, building_id, room_type, number_of_beds, price_per_night, available) — од (room_number, building_id).
     182
     183Staff(user_id, building_id) — од staff_id.
     184
     185Reservation(reservation_id, start_date, end_date, reserv_date, status, room_number, building_id, customer_id, manager_id) — од reservation_id.
     186
     187Service(service_id, service_type, service_date, service_status, room_number, building_id, staff_id) — од service_id.
     188
     189Payment(reservation_id, p_id, p_method, amount, p_date, customer_id) — од reservation_id (1:1).
     190
     191Се осигуруваме дека релацијата содржи клуч за оригиналниот R (имаме многу клучеви, но унијата на креирани релации ги вклучува сите детерминанти и со тоа ги зачувува клучевите).
     192
     1933NF статус: секоја FD X -> A во Fc е локален на една од креираните релации (зачувување на зависноста). Бидејќи ги отстранивме атрибутите што предизвикуваа транзитивни ФЗ од нивните релации што содржат (на пр., не го задржавме price_per_night во Reservation), нема преостанати транзитивни зависности во релациите. Значи, сите релации се во 3NF.
     194
     195====