| 195 |  | ==== | 
          
            |  | 195 | ==== BCNF правило: за секој FD X -> A во релацијата Ri, X мора да биде суперклуч на Ri. | 
          
            |  | 196 |  | 
          
            |  | 197 | Ја проверуваме секоја релација произведена во 3NF: | 
          
            |  | 198 |  | 
          
            |  | 199 | Users(user_id, ...) — FD лево од user_id е PK ⇒ BCNF. | 
          
            |  | 200 |  | 
          
            |  | 201 | Hotel_Building(building_id, ...) — building_id е PK ⇒ BCNF. | 
          
            |  | 202 |  | 
          
            |  | 203 | Room(room_number, building_id, ...) — (room_number, building_id) е сложен PK ⇒ BCNF. | 
          
            |  | 204 |  | 
          
            |  | 205 | Staff(user_id, building_id) — user_id е PK ⇒ BCNF. | 
          
            |  | 206 |  | 
          
            |  | 207 | Reservation(reservation_id, ...) — reservation_id е PK ⇒ BCNF. | 
          
            |  | 208 |  | 
          
            |  | 209 | Service(service_id, ...) — service_id е PK ⇒ BCNF. | 
          
            |  | 210 |  | 
          
            |  | 211 | Payment(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 |  |