3NF vs BCNF
Normalizimi është një proces që kryhet për të minimizuar tepricat që janë të pranishme në të dhënat në bazat e të dhënave relacionale. Ky proces kryesisht do të ndajë tabelat e mëdha në tabela më të vogla me më pak teprica. Këto tabela më të vogla do të lidhen me njëra-tjetrën përmes marrëdhënieve të përcaktuara mirë. Në një bazë të dhënash të normalizuar mirë, çdo ndryshim ose modifikim në të dhëna do të kërkojë modifikimin e vetëm një tabele të vetme. Forma e Tretë Normale (3NF) u prezantua në vitin 1971 nga Edgar F. Codd, i cili është gjithashtu shpikësi i modelit relacional dhe konceptit të normalizimit. Forma Normale Boyce-Codd (BCNF) u prezantua në 1974 nga Codd dhe Raymond F. Boyce.
Çfarë është 3NF?
3NF është forma e tretë normale e përdorur në normalizimin e bazës së të dhënave relacionale. Sipas përkufizimit të Codd, një tabelë thuhet se është në 3NF, nëse dhe vetëm nëse, ajo tabelë është në formën e dytë normale (2NF), dhe çdo atribut në tabelë që nuk i përket një çelësi kandidat duhet të varet drejtpërdrejt nga çdo çelës kandidat të asaj tabele. Në 1982 Carlo Zaniolo prodhoi një përkufizim të shprehur ndryshe për 3NF. Tabelat që përputhen me 3NF në përgjithësi nuk përmbajnë anomali që ndodhin gjatë futjes, fshirjes ose përditësimit të të dhënave në tabelë.
Çfarë është BCNF?
BCNF (i njohur gjithashtu si 3.5NF) është një formë tjetër normale e përdorur në normalizimin e bazës së të dhënave relacionale. U prezantua për të kapur disa anomali që nuk adresohen nga 3NF. Një tabelë thuhet se është në BCNF, nëse dhe vetëm nëse, për secilën prej varësive të formës A → B që janë jo të parëndësishme, A është një super-çelës. Zbërthimi i një tabele që nuk është në formën normale BCNF nuk garanton prodhimin e tabelave në formën BCNF (duke ruajtur varësitë që ishin të pranishme në tabelën origjinale).
Cili është ndryshimi midis 3NF dhe BCNF?
Të dyja, 3NF dhe BCNF janë forma normale që përdoren në bazat e të dhënave relacionale për të minimizuar tepricat në tabela. Në një tabelë që është në formën normale BCNF, për çdo varësi funksionale jo të parëndësishme të formës A → B, A është një super-çelës ndërsa, një tabelë që përputhet me 3NF duhet të jetë në 2NF, dhe çdo jo-prim atributi duhet të varet drejtpërdrejt nga çdo çelës kandidat i asaj tabele. BCNF konsiderohet si një formë normale më e fortë se 3NF dhe është zhvilluar për të kapur disa nga anomalitë që nuk mund të kapeshin nga 3NF. Marrja e një tabele që përputhet me formën BCNF do të kërkojë zbërthimin e një tabele që është në 3NF. Ky zbërthim do të rezultojë në operacione shtesë të bashkimit (ose produkte karteziane) gjatë ekzekutimit të pyetjeve. Kjo do të rrisë kohën e llogaritjes. Nga ana tjetër, tabelat që përputhen me BCNF do të kishin më pak teprica sesa tabelat që përputhen vetëm me 3NF. Për më tepër, në shumicën e rasteve, është e mundur të merret një tabelë që përputhet me 3NF pa penguar ruajtjen e varësisë dhe bashkimin pa humbje. Por kjo nuk është gjithmonë e mundur me BCNF.