3NF vs BCNF
Normalizavimas yra procesas, kuris atliekamas siekiant sumažinti atleidimų skaičių, esantį santykinėse duomenų bazėse esančiuose duomenyse. Šis procesas daugiausia padalins dideles lenteles į mažesnes lenteles su mažiau atleidimų. Šios mažesnės lentelės bus susijusios viena su kita per tiksliai apibrėžtus ryšius. Tinkamai normalizuotoje duomenų bazėje bet kokius duomenų pakeitimus ar modifikacijas reikės pakeisti tik viena lentele. Trečioji normalioji forma (3NF) buvo įvesta 1971 m. Edgaro F. Coddo, kuris taip pat yra reliacinio modelio ir normalizacijos koncepcijos išradėjas. „Boyce-Codd Normal Form“ (BCNF) 1974 m. Pristatė Codd ir Raymond F. Boyce.
Kas yra 3NF?
3NF yra trečioji normalioji forma, naudojama reliacinių duomenų bazių normalizavimui. Pagal Codd apibrėžimą, lentelė yra 3NF, jei ir tik tada, jei ta lentelė yra antros normalios formos (2NF), o kiekvienas lentelės atributas, nepriklausantis kandidato raktui, turėtų tiesiogiai priklausyti nuo kiekvienas kandidatas tos lentelės raktas. 1982 m. Carlo Zaniolo pateikė skirtingai išreikštą 3NF apibrėžimą. Lentelėse, kurios atitinka 3NF, paprastai nėra anomalijų, atsirandančių įdedant, ištrinant ar atnaujinant įrašus lentelėje.
Kas yra BCNF?
BCNF (taip pat žinomas kaip 3.5NF) yra dar viena normali forma, naudojama reliacinių duomenų bazių normalizavimui. Jis buvo įvestas norint užfiksuoti kai kurias anomalijas, kurių 3NF nenagrinėja. Sakoma, kad lentelė yra BCNF, jei ir tik tada, kai kiekvienai iš A → B formos priklausomybių, kurios nėra trivialios, A yra superraktas. Skildami lentelę, kuri nėra normalios BCNF formos, negarantuojame, kad bus gaminamos BCNF formos lentelės (išlaikant priklausomybes, kurios buvo pradinėje lentelėje).
Kuo skiriasi 3NF ir BCNF?
Tiek 3NF, tiek BCNF yra normalios formos, kurios yra naudojamos reliacinėse duomenų bazėse, siekiant sumažinti perteklių lentelėse. Lentelėje, kuri yra normalios BCNF formos forma, kiekvienai A → B formos ne trivialiai funkcinei priklausomybei A yra super klavišas, tuo tarpu 3NF atitinkanti lentelė turėtų būti 2NF ir kiekviena nepriminė. atributas turėtų tiesiogiai priklausyti nuo kiekvieno kandidato tos lentelės rakto. BCNF yra laikoma stipresne normalia forma nei 3NF ir ji buvo sukurta norint užfiksuoti kai kurias anomalijas, kurių 3NF negalėjo užfiksuoti. Norėdami gauti lentelę, atitinkančią BCNF formą, reikės suskaidyti lentelę, esančią 3NF. Šis skaidymas atliks papildomas prisijungimo operacijas (arba Dekarto gaminius), kai bus vykdomos užklausos. Tai padidins skaičiavimo laiką. Kita vertus, lentelėse, kurios atitinka BCNF, bus mažiau atleidimų nei lentelėse, kurios atitinka tik 3NF. Be to, dažniausiai galima gauti 3NF reikalavimus atitinkančią lentelę, netrukdant išsaugoti priklausomybes ir be nuostolių prisijungti. Bet tai ne visada įmanoma naudojant BCNF.