3NF prieš BCNF
Normalizavimas yra procesas, kuris atliekamas siekiant sumažinti reliacinių duomenų bazių duomenų perteklių. Šis procesas daugiausia padalija dideles lenteles į mažesnes lenteles su mažiau perteklinių. Šios mažesnės lentelės bus susietos viena su kita per gerai apibrėžtus ryšius. Gerai normalizuotoje duomenų bazėje dėl bet kokių duomenų pakeitimų ar modifikacijų reikės modifikuoti tik vieną lentelę. Trečiąją normaliąją formą (3NF) 1971 m. pristatė Edgaras F. Coddas, kuris taip pat yra reliacinio modelio ir normalizavimo koncepcijos išradėjas. Boyce-Codd normalią formą (BCNF) 1974 m. pristatė Coddas ir Raymondas F. Boyce.
Kas yra 3NF?
3NF yra trečioji normalioji forma, naudojama reliacinės duomenų bazės normalizavimui. Remiantis Codd apibrėžimu, sakoma, kad lentelė yra 3NF, tada ir tik tada, kai ta lentelė yra antrosios normalios formos (2NF), ir kiekvienas lentelės atributas, nepriklausantis kandidato raktui, turėtų tiesiogiai priklausyti nuo kiekvienas tos lentelės kandidato raktas. 1982 m. Carlo Zaniolo sukūrė kitaip išreikštą 3NF apibrėžimą. Lentelėse, kurios atitinka 3NF, paprastai nėra anomalijų, atsirandančių įterpiant, ištrinant arba atnaujinant lentelės įrašus.
Kas yra BCNF?
BCNF (taip pat žinomas kaip 3.5NF) yra dar viena įprasta forma, naudojama reliacinės duomenų bazės normalizavimui. Jis buvo pristatytas siekiant užfiksuoti kai kurias anomalijas, kurių 3NF nesprendžia. Sakoma, kad lentelė yra BCNF, jei ir tik tada, kai kiekvienai netrivialinei formos A → B priklausomybei A yra superraktas. Neįprastos BCNF formos lentelės išskaidymas negarantuoja BCNF formos lentelių sudarymo (išsaugant priklausomybes, kurios buvo pradinėje lentelėje).
Kuo skiriasi 3NF ir BCNF?
Tiek 3NF, tiek BCNF yra įprastos formos, naudojamos reliacinėse duomenų bazėse siekiant sumažinti lentelių perteklius. Lentelėje, kuri yra įprastos BCNF formos, kiekvienai netrivialinei funkcinei priklausomybei formos A → B atveju A yra superraktas, o lentelė, atitinkanti 3NF, turėtų būti 2NF, o kiekviena ne pirminė. atributas turėtų tiesiogiai priklausyti nuo kiekvieno tos lentelės kandidato rakto. BCNF laikomas stipresne normalia forma nei 3NF ir buvo sukurtas siekiant užfiksuoti kai kurias anomalijas, kurių 3NF negalėjo užfiksuoti. Norint gauti lentelę, atitinkančią BCNF formą, reikės išskaidyti lentelę, esančią 3NF. Dėl šio išskaidymo vykdant užklausas bus atliekamos papildomos sujungimo operacijos (arba Dekarto produktai). Tai padidins skaičiavimo laiką. Kita vertus, lentelėse, kurios atitinka BCNF, būtų mažiau perteklinių dalykų nei lentelėse, kurios atitinka tik 3NF. Be to, dažniausiai galima gauti lentelę, atitinkančią 3NF, netrukdant išlaikyti priklausomybę ir prisijungti be nuostolių. Tačiau tai ne visada įmanoma naudojant BCNF.