3NF pret BCNF
Normalizācija ir process, kas tiek veikts, lai samazinātu atlaišanu, kas ir relāciju datu bāzu datos. Šajā procesā lielās tabulas galvenokārt tiks sadalītas mazākās tabulās ar mazāku atlaišanu. Šīs mazākās tabulas būs savstarpēji saistītas, izmantojot precīzi noteiktas attiecības. Labi normalizētā datu bāzē jebkurām datu izmaiņām vai modifikācijām būs jāmaina tikai viena tabula. Trešo parasto formu (3NF) 1971. gadā ieviesa Edgars F. Kods, kurš ir arī relāciju modeļa un normalizācijas jēdziena izgudrotājs. Boyce-Codd parasto formu (BCNF) 1974. gadā ieviesa Codd un Raymond F. Boyce.
Kas ir 3NF?
3NF ir trešā normālā forma, ko izmanto relāciju datu bāzes normalizēšanai. Saskaņā ar Codd definīciju tabula tiek uzskatīta par 3NF tikai un vienīgi tad, ja šī tabula ir otrajā normālajā formā (2NF), un katram tabulas atribūtam, kas nepieder kandidāta atslēgai, jābūt tieši atkarīgam no katra kandidāta atslēga tabulā. 1982. gadā Karlo Zaniolo izstrādāja atšķirīgi izteiktu 3NF definīciju. Tabulās, kas atbilst 3NF, parasti nav noviržu, kas rodas, ievietojot, dzēšot vai atjauninot ierakstus tabulā.
Kas ir BCNF?
BCNF (pazīstams arī kā 3.5NF) ir vēl viena normāla forma, ko izmanto relāciju datu bāzes normalizēšanai. Tas tika ieviests, lai uztvertu dažas anomālijas, kuras 3NF neatrisina. Tabula tiek uzskatīta BCNF formātā, ja un tikai tad, ja attiecībā uz katru no formas A → B atkarībām, kas nav triviāla, A ir superatslēga. Tabulas, kas nav BCNF parastajā formā, sadalīšana negarantē tabulu ražošanu BCNF formā (vienlaikus saglabājot atkarības, kas bija sākotnējā tabulā).
Kāda ir atšķirība starp 3NF un BCNF?
Gan 3NF, gan BCNF ir normālas formas, kuras izmanto relāciju datu bāzēs, lai samazinātu dublēšanos tabulās. Tabulā, kas ir BCNF normālā formā, par katru formu A → B, kas nav triviāla, funkcionālā atkarība, A ir superatslēga, turpretī 3NF atbilstošai tabulai jābūt 2NF, un katrai neprivarai. atribūtam jābūt tieši atkarīgam no katras tabulas kandidāta atslēgas. BCNF tiek uzskatīts par spēcīgāku normālu formu nekā 3NF, un tas tika izstrādāts, lai uztvertu dažas anomālijas, kuras 3NF nevarēja uztvert. Lai iegūtu tabulu, kas atbilst BCNF formai, būs jāsadala tabula, kas atrodas 3NF. Šīs sadalīšanās rezultātā rodas papildu pievienošanās operācijas (vai Dekarta izstrādājumi), izpildot vaicājumus. Tas palielinās aprēķina laiku. No otras puses, tabulās, kas atbilst BCNF, būs mazāk atlaižu nekā tabulās, kas atbilst tikai 3NF. Turklāt lielākoties ir iespējams iegūt tabulu, kas atbilst 3NF, netraucējot atkarības saglabāšanu un bezzaudējumu pievienošanos. Bet tas ne vienmēr ir iespējams ar BCNF.