Changes between Version 10 and Version 11 of Normalization


Ignore:
Timestamp:
09/23/25 03:08:13 (44 hours ago)
Author:
215010
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Normalization

    v10 v11  
    1931933NF статус: секоја FD X -> A во Fc е локален на една од креираните релации (зачувување на зависноста). Бидејќи ги отстранивме атрибутите што предизвикуваа транзитивни ФЗ од нивните релации што содржат (на пр., не го задржавме price_per_night во Reservation), нема преостанати транзитивни зависности во релациите. Значи, сите релации се во 3NF.
    194194
    195 ====
     195==== BCNF правило: за секој FD X -> A во релацијата Ri, X мора да биде суперклуч на Ri.
     196
     197Ја проверуваме секоја релација произведена во 3NF:
     198
     199Users(user_id, ...) — FD лево од user_id е PK ⇒ BCNF.
     200
     201Hotel_Building(building_id, ...) — building_id е PK ⇒ BCNF.
     202
     203Room(room_number, building_id, ...) — (room_number, building_id) е сложен PK ⇒ BCNF.
     204
     205Staff(user_id, building_id) — user_id е PK ⇒ BCNF.
     206
     207Reservation(reservation_id, ...) — reservation_id е PK ⇒ BCNF.
     208
     209Service(service_id, ...) — service_id е PK ⇒ BCNF.
     210
     211Payment(reservation_id PK, ...) — reservation_id е PK ⇒ BCNF.
     212
     213Бидејќи секоја детерминанта во секоја релација е примарен клуч на релацијата (или суперклуч), секоја релација е во BCNF под овие избори на клучеви.
     214
     215Забелешка (компромис): BCNF декомпозицијата понекогаш може да ве принуди да изберете клуч кој не е најзгоден (на пр., ако Payment го воспостави p_id како PK, но reservation_id -> p_id постои, Payment би го прекршил BCNF — решивме со тоа што reservation_id го направивме PK за да го задоволиме BCNF без понатамошно декомпозиција). Ако претпочитате p_id како PK за да дозволите повеќекратни плаќања по резервација (1:N), тогаш p_id би бил детерминанта во Payment, а BCNF исто така важи.
     216