3NF vs BCNF
Normalizarea este un proces care se realizează pentru a minimiza concedierile care există în datele din bazele de date relaționale. Acest proces va împărți în principal tabele mari în tabele mai mici, cu redundanțe mai puține. Aceste tabele mai mici vor fi legate între ele prin relații bine definite. Într-o bază de date bine normalizată, orice modificare sau modificare a datelor va necesita modificarea doar a unui singur tabel. A treia formă normală (3NF) a fost introdusă în 1971 de către Edgar F. Codd, care este de asemenea inventatorul modelului relațional și al conceptului de normalizare. Forma normală Boyce-Codd (BCNF) a fost introdusă în 1974 de Codd și Raymond F. Boyce.
Ce este 3NF?
3NF este a treia formă normală folosită în normalizarea bazelor de date relaționale. Conform definiției Codd, se spune că un tabel este în 3NF, dacă și numai dacă tabelul este în a doua formă normală (2NF), și fiecare atribut din tabel care nu aparține unei chei candidate trebuie să depindă în mod direct de fiecare cheie candidată a acelei mese. În 1982, Carlo Zaniolo a produs o definiție diferită exprimată pentru 3NF. Tabelele care respectă standardul 3NF nu conțin, în general, anomalii care apar atunci când inserați, ștergeți sau actualizați înregistrările din tabel.
Ce este BCNF?
BCNF (cunoscut și sub numele de 3.5NF) este o altă formă normală utilizată în normalizarea bazelor de date relaționale. A fost introdus pentru a surprinde unele anomalii care nu sunt abordate de 3NF. Se spune că o tabelă se află în BCNF, dacă și numai dacă, pentru fiecare dintre dependențele formulei A → B, care este non-trivială, A este un super-cheie. Descompunerea unei mese care nu este în forma normală a BCNF nu garantează producerea de tabele în forma BCNF (păstrând în același timp dependențele care erau prezente în tabela originală).
Care este diferența dintre 3NF și BCNF?
Atât 3NF cât și BCNF sunt forme normale care sunt utilizate în baze de date relaționale pentru a reduce la minimum disponibilizările din tabele. Într-un tabel care este în forma normală BCNF, pentru fiecare dependență funcțională non-trivială a formei A → B, A este super-cheie, în timp ce un tabel care respectă 3NF ar trebui să fie în 2NF, și fiecare non-prime atributul ar trebui să depindă în mod direct de fiecare cheie candidată a acelui tabel. BCNF este considerat ca o formă normală mai puternică decât 3NF și a fost dezvoltat pentru a surprinde unele dintre anomaliile care nu au putut fi capturate de 3NF. Obținerea unui tabel care respectă formularul BCNF va necesita descompunerea unui tabel care este în 3NF. Această descompunere va avea ca rezultat operațiuni suplimentare de îmbinare (sau produse carteziene) atunci când se execută interogări. Acest lucru va crește timpul de calcul. Pe de altă parte, tabelele care respectă BCNF ar avea mai puține concedieri decât tabelele care respectă doar 3NF. În plus, în majoritatea timpului, este posibil să se obțină o masă care să respecte 3NF fără a împiedica conservarea dependenței și îmbinarea fără pierderi. Dar acest lucru nu este întotdeauna posibil cu BCNF.