Diferența dintre 3NF și BCNF

Autor: Laura McKinney
Data Creației: 1 Aprilie 2021
Data Actualizării: 17 Mai 2024
Anonim
Difference between 3NF and BCNF, De-normalization
Video: Difference between 3NF and BCNF, De-normalization

Conţinut


Normalizare este o metodă care elimină redundanţă dintr-o relație minimizând astfel anomaliile de inserție, ștergere și actualizare care degradează performanța bazelor de date. În acest articol, vom diferenția între două forme normale superioare, adică 3NF și BCNF. Diferența de bază între 3NF și BCNF este că 3NF elimină dependența tranzitorie dintr-o relație și un tabel pentru a fi în BCNF, dependența funcțională banală X-> Y într-o relație trebuie să păstreze, numai dacă X este super-cheie.

Să discutăm diferențele dintre 3NF și BCNF cu ajutorul graficului de comparație prezentat mai jos.

  1. Diagramă de comparație
  2. Definiție
  3. Diferențele cheie
  4. Concluzie

Diagramă de comparație

Baza pentru comparație3NFBCNF
ConceptNiciun atribut non-prim nu trebuie să depindă tranzitiv de cheia Candidat.Pentru orice dependență banală într-o relație R spune X-> Y, X ar trebui să fie o cheie superă a relației 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.
DescompunereDescompunerea fără pierderi poate fi realizată în 3NF.Descompunerea fără pierderi este greu de obținut în BCNF.


Definiția 3NF

Un tabel sau o relație este considerat a fi în A treia formă normală numai dacă tabelul este deja înăuntru 2NF și nu există non-prime atribut tranzitiv dependentă de cheie de candidat a unei relații.

Deci, înainte de a aborda procesul de normalizare a unui tabel în 3NF, permiteți-mi să discut despre cheia de candidat. A Cheia candidatului este super-cheie minimă adică o super-cheie cu atribute minime care poate defini toate atributele unei relații. Deci, în procesul de normalizare a mesei, mai întâi, recunoști cheia candidatului unei relații date. Atributele care fac parte din cheia candidatului sunt atribute principaleși atributele care nu fac parte din cheia candidatului sunt atribute non-prime.

Acum, dacă avem o relație R (A, B, C, D, E, F) și avem următoarele dependențe funcționale pentru relația R.


Observând dependențele funcționale, putem concluziona că AB este o cheie candidată pentru relația R, deoarece folosind cheia AB putem căuta valoarea tuturor atributului dintr-o relație R. Deci A, B devine atribute principale întrucât împreună fac cheia candidatului. Atributele C, D, E, F devine non-prime atribute deoarece niciunul dintre ele nu face parte dintr-o cheie de candidat.

Tabelul este în 2NF, deoarece niciun atribut non-prim nu depinde parțial de cheia candidatului

Dar, o dependență tranzitorie este observată printre dependențele funcționale furnizate, ca atribut F nu depinde direct de cheia candidatului AB. În schimb, atribut F este tranzitiv dependentă de cheia candidatului AB prin atribut D. Atributul Till D are o valoare pe care o putem atinge pentru a atribui valoarea F, de la cheia de candidat AB. În cazul în care valoarea atributului D este NULL, nu putem găsi / căuta valoarea F cu ajutorul tastei AB. Acesta este motivul pentru care 3NF cere să înlăture dependența tranzitorie din relații.

Așadar, pentru a elimina această dependență tranzitivă, trebuie să împărțim relația R. În timp ce împărțim o relație, întotdeauna plasăm 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 provoacă dependența tranzitorie și, de asemenea, atributele care depind de acesta în a doua relație.

Acum, tabelele R1 și R2 sunt în 3NF deoarece nu au mai rămas dependențe parțiale și tranzitive. Relație R1 (A, B, C, D, E) are o cheie de candidat AB întrucât, relația R2 (D, E) are D ca cheie de candidat.

Definiția BCNF

BCNF este considerat a fi cel mai puternic decât 3NF. Relația R pentru a fi în BCNF trebuie să fie în 3NF. Și oriunde a dependență funcțională trivială A -> B ține atunci în relația R A trebuie să fie a superkey a relației R. După cum știm, Super-cheie este o cheie care are un singur atribut sau un set de atribute care determină, întregii atribute ale unei relații.

Acum, să trecem 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 dependențe funcționale următoare.

Observând relația R, putem spune că A și BF sunt cheile candidatului a relației R, deoarece singurele pot căuta valoarea tuturor atributelor din relația R. Deci A, B, F sunt prim atribute întrucât, C și D sunt non-prime atribute. Nu se observă dependență tranzitorie în dependențele funcționale prezente mai sus. Prin urmare, tabelul R este în 3NF.

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 super cheie ceea ce nu este cazul aici. Deci vom împărți relația R.

Acum, tabelele R1 și R2 sunt în BCNF. Relație R1 Are doua candidat chei A și B, dependența funcțională banală a lui R1 adică A-> BCD și B -> ACD, mențineți BCNF deoarece A și B sunt super cheile relației. Relație R2 are D ca fiind cheie de candidat iar dependența funcțională D -> F este valabilă și pentru BCNF, deoarece D este o super cheie.

  1. 3NF afirmă că niciun atribut non-prim nu trebuie să depindă tranzitiv de cheia candidată a relației. Pe de altă parte, BCNF afirmă că dacă există o dependență funcțională banală X -> Y pentru o relație; atunci X trebuie să fie o cheie super.
  2. 3NF poate fi obținut fără a sacrifica dependența de relație. Cu toate acestea, este posibil ca dependența să nu fie păstrată în timpul obținerii BCNF.
  3. 3NF poate fi obținut fără a pierde informații din tabelul vechi, î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ă tabelă. Relația în 3NF a rămas cu redundanță minimă, care este eliminată în continuare de BCNF.