logo

Forma normală Boyce-Codd (BCNF)

Cerință prealabilă: Prima formă normală , A doua formă normală , A treia formă normală

Aplicarea definițiilor generale ale 2NF și 3NF poate identifica redundanță suplimentară cauzată de dependențe care încalcă una sau mai multe chei candidate. Cu toate acestea, în ciuda acestor constrângeri suplimentare, pot exista încă dependențe care vor face ca redundanța să fie prezentă în relațiile 3NF. Această slăbiciune în 3NF a dus la prezentarea unei forme normale mai puternice numite cel Boyce-Codd Forma normală (Codd, 1974) .



Deși, 3NF este o formă normală adecvată pentru bazele de date relaționale, totuși, această formă normală (3NF) poate să nu elimine redundanța 100% din cauza dependenței funcționale X−>Y dacă X nu este o cheie candidată a relației date. Acest lucru poate fi rezolvat de Boyce-Codd Normal Form (BCNF).

Forma normală Boyce-Codd (BCNF)

Boyce–Codd Normal Form (BCNF) se bazează pe dependențe funcționale care iau în considerare toate cheile candidate dintr-o relație; cu toate acestea, BCNF are, de asemenea, constrângeri suplimentare în comparație cu definiția generală a 3NF.

Reguli pentru BCNF

Regula 1: Tabelul ar trebui să fie în a treia formă normală.



Regula 2: X ar trebui să fie o supercheie pentru fiecare dependență funcțională (FD) X−>Y într-o relație dată.

Notă: Pentru a testa dacă o relație este în BCNF, identificăm toți determinanții și ne asigurăm că sunt chei candidate.

BCNF în DBMS



Ai dat peste o ierarhie similară cunoscută sub numele de Forma normală Chomsky în Teoria calculului. Acum, studiați cu atenție ierarhia de mai sus. Se poate deduce că fiecare relație din BCNF este și în 3NF . Cu alte cuvinte, o relație în 3NF nu trebuie să fie în BCNF. Gândiți-vă puțin la această afirmație.

Pentru a determina cea mai mare formă normală a unei relații date R cu dependențe funcționale, primul pas este să verificați dacă condiția BCNF este valabilă. Dacă se găsește că R este în BCNF, se poate deduce cu siguranță că relația este și în 3NF , 2NF, și 1NF după cum arată ierarhia. 1NF are cea mai puțin restrictivă constrângere – necesită doar o relație R pentru a avea valori atomice în fiecare tuplu. 2NF are o constrângere puțin mai restrictivă.

3NF are o constrângere mai restrictivă decât primele două forme normale, dar este mai puțin restrictivă decât BCNF. În acest fel, restricția crește pe măsură ce trecem în jos în ierarhie.

Exemple

Aici, vom discuta câteva exemple de bază care vă permit să înțelegeți proprietățile BCNF. Vom discuta mai multe exemple aici.

Exemplul 1

Să luăm în considerare baza de date a studenților, în care sunt menționate datele elevului.

Acest_ID Aceasta_Sucursală Stu_Curs Branch_Number Stu_Curs_Nr
101 Informatică și Inginerie SGBD B_001 201
101 Informatică și Inginerie Retele de calculatoare B_001 202
102 Inginerie electronică și comunicații Tehnologia VLSI B_003 401
102 Inginerie electronică și comunicații Comunicare mobilă B_003 402

Dependența funcțională a celor de mai sus este așa cum s-a menționat:

Stu_ID −>Stu_Branch Stu_Course −> {Branch_Number, Stu_Course_No}>

Cheile candidaților din tabelul de mai sus sunt: {This_ID, This_Course}

De ce acest tabel nu este în BCNF?

Tabelul de mai sus nu este în BCNF, deoarece, după cum putem vedea, nici Stu_ID, nici Stu_Course nu sunt o Super Cheie. Deoarece regulile menționate mai sus spun clar că pentru ca un tabel să fie în BCNF, trebuie să urmeze proprietatea că pentru dependența funcțională X−>Y, X trebuie să fie în Super Key și aici această proprietate eșuează, de aceea acest tabel nu este în BCNF .

Cum să satisfaci BCNF?

Pentru a satisface acest tabel în BCNF, trebuie să-l descompunem în tabele ulterioare. Iată procedura completă prin care transformăm acest tabel în BCNF. Să împărțim mai întâi acest tabel principal în două tabele Aceasta_Sucursală și Stu_Curs Masa.

Stu_Branch Table

Acest_ID Aceasta_Sucursală
101 Informatică și Inginerie
102 Inginerie electronică și comunicații

Cheia candidatului pentru acest tabel: Acest_ID .

câini de raft

Stu_Tabel de curs

Stu_Curs Branch_Number Stu_Curs_Nr
SGBD B_001 201
Retele de calculatoare B_001 202
Tehnologia VLSI B_003 401
Comunicare mobilă B_003 402

Cheia candidatului pentru acest tabel: Stu_Curs .

Stu_ID la Stu_Course_No Table

Acest_ID Stu_Curs_Nr
101 201
101 202
102 401
102 402

Cheia candidatului pentru acest tabel: {Stu_ID, Stu_Course_No}.

După descompunerea în tabele ulterioare, acum este în BCNF, deoarece trece condiția Super Key, că în dependența funcțională X−>Y, X este un Super Cheie.

Exemplul 2

Găsiți cea mai mare formă normală a unei relații R(A, B, C, D, E) cu FD stabilită ca:

{ BC->D, AC->BE, B->E }>>> 

Explicaţie:

  • Pasul 1: După cum putem vedea, (AC)+ ={A, C, B, E, D} dar niciuna dintre submulțimile sale nu poate determina toate atributele relației, deci AC va fi cheia candidată. A sau C nu pot fi derivate din niciun alt atribut al relației, așa că va exista doar o cheie candidată {AC}.
  • Pasul 2: Atributele prime sunt acele atribute care fac parte din cheia candidată {A, C} în acest exemplu, iar altele vor fi non-prime {B, D, E} în acest exemplu.
  • Pasul 3: Relația R este în prima formă normală, deoarece un SGBD relațional nu permite atribute cu mai multe valori sau compuse.

Relația este în a 2-a formă normală deoarece BC->D este în a 2-a formă normală (BC nu este un subset propriu al cheii candidate AC) și AC->BE este în a 2-a formă normală (AC este cheia candidată) și B->E este în a doua formă normală (B nu este un subset adecvat al cheii candidate AC).

Relația este nu în a treia formă normală pentru că în BC->D (nici BC nu este o super-cheie, nici D nu este un atribut prim) și în B->E (nici B este o super-cheie și nici E nu este un atribut prim), dar pentru a satisface a treia normală pentru , fie LHS al unui FD ar trebui să fie super-cheie, fie RHS ar trebui să fie un atribut principal. Deci cea mai înaltă formă normală de relație va fi a 2-a formă normală.

Notă: Un atribut prim nu poate fi dependent tranzitiv de o cheie în relația BCNF.

Luați în considerare aceste dependențe funcționale ale unei relații R

BC, B -> A>

A și B sunt ambele super-chei, așa că relația de mai sus este în BCNF.

Notă: Descompunerea BCNF poate să nu fie întotdeauna posibilă cu condiția de îmbinare fără pierderi. De exemplu, relația R (V, W, X, Y, Z), cu dependențe funcționale: