Să discutăm diferențele dintre 3NF și BCNF cu ajutorul diagramei de comparație prezentată mai jos.
Diagramă de comparație
Bazele comparației | 3NF | BCNF |
---|---|---|
Concept | Niciun atribut non-prime nu trebuie să depindă de tasta Candidate. | Pentru orice dependență trivială dintr-o relație R spune X-> Y, X ar trebui să fie o cheie super-relativă R. |
Dependenţă | 3NF poate fi obținut fără a sacrifica toate dependențele. | Este posibil ca dependențele să nu fie păstrate în BCNF. |
Descompunere | Descompunerea fără pierderi se poate realiza la 3NF. | Pierderea fără pierderi este dificil de realizat în BCNF. |
Definiția 3NF
Un tabel sau o relație este considerat a fi în a treia formă normală numai dacă tabela este deja în 2NF și nu există niciun atribut non-prime care să depindă tranzitoriu de cheia candidatului unei relații.
Deci, înainte de a aborda procesul de normalizare a unei mese în 3NF, permiteți-mi să discut cheia candidatului. O cheie candidată este o cheie super minimă adică o cheie super cu atribute minime care pot defini toate atributele unei relații. Deci, în procesul de normalizare a mesei, în primul rând, recunoașteți cheia candidatului unei relații date. Atributele care fac parte din cheia candidatului sunt atribute primare, iar atributele care nu fac parte din cheia candidatului sunt atributele non-prime .
Acum dacă avem o relație R (A, B, C, D, E, F) și avem următoarele dependențe de funcție pentru relația R.
Tabelul este în 2NF, deoarece niciun atribut non-prime nu depinde parțial de cheia candidatului
Dar, se observă o dependență tranzitivă între dependențele funcționale furnizate, deoarece atributul F nu depinde direct de cheia candidatului AB . În schimb, atributul F depinde tranzitoriu de cheia candidatului AB prin atributul D. Până când atributul D are o valoare pe care o putem atinge la valoarea atributului F, din cheia candidatului AB. În cazul în care valoarea atributului D este NULL, nu putem găsi / căuta valoarea F cu ajutorul tastei candidat AB. Acesta este motivul pentru care 3NF solicită eliminarea dependenței tranzitorii de relații.
Deci, pentru a elimina această dependență tranzitivă, trebuie să împărțim relația R. În timp ce împărțim o relație puneți întotdeauna cheia candidatului și toate atributele care depind de acea cheie candidat în prima relație. În următoarea relație divizată, vom plasa atributul care cauzează dependența tranzitantă, precum și atributele care depind de ea în a doua relație.
Definiția BCNF
BCNF este considerat a fi mai puternic decât 3NF. Relația R care se află în BCNF trebuie să fie în 3NF . Și oriunde o dependență funcțională non-trivială A -> B are relația R, atunci A trebuie să fie o super cheie a relației R. După cum știm, tasta Super este o cheie care are un singur atribut sau un set de atribute care determină întregul atributele unei relații.
Acum, să mergem la un exemplu pentru a înțelege BCNF într-un mod mai bun. Să presupunem că avem o relație R (A, B, C, D, F), care au următoarele dependențe funcționale.
Dar o dependență funcțională, adică D -> F, încalcă definiția BCNF, conform căreia dacă D -> F există, atunci D ar trebui să fie cheia super, care nu este cazul aici. Deci, vom împărți relația R.
Diferențe cheie între 3NF și BCNF
- 3NF afirmă că niciun atribut non-prime nu trebuie să depindă tranzitoriu de cheia candidat a relației. Pe de altă parte, BCNF afirmă că dacă există o relație trivială funcțională X -> Y pentru o relație; atunci X trebuie să fie o cheie super.
- 3NF poate fi obținut fără a sacrifica dependența relației. Cu toate acestea, dependența poate să nu fie păstrată în timpul obținerii BCNF.
- 3NF poate fi realizat fără a pierde nici o informație din tabela veche, în timp ce, în timp ce obținem BCNF, putem pierde unele informații din tabelul vechi.
Concluzie:
BCNF este mult mai restrictivă decât 3NF care ajută la normalizarea mai multă a tabelului. Relația din 3NF are o redundanță minimă care este îndepărtată ulterior de BCNF.