1NF vs 2NF vs 3NF
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 bet kokiems duomenų pakeitimams ar modifikacijoms reikės modifikuoti tik vieną lentelę. Pirmąją normaliąją formą (1NF), antrąją normaliąją formą (2NF) ir trečiąją normaliąją formą (3NF) pristatė Edgaras F. Coddas, kuris taip pat yra reliacinio modelio ir normalizavimo koncepcijos išradėjas.
Kas yra 1NF?
1NF yra pirmoji normalioji forma, kuri pateikia minimalius reikalavimus reliacinės duomenų bazės normalizavimui. 1NF atitinkanti lentelė užtikrina, kad ji iš tikrųjų atspindi ryšį (ty joje nėra jokių pasikartojančių įrašų), tačiau nėra visuotinai priimto 1NF apibrėžimo. Viena svarbi savybė yra ta, kad lentelėje, atitinkančioje 1NF, negali būti jokių atributų, kurių vertė būtų santykinė (t. y. visi atributai turi turėti atomines reikšmes).
Kas yra 2NF?
2NF yra antroji normali forma, naudojama reliacinėse duomenų bazėse. Kad lentelė atitiktų 2NF, ji turi atitikti 1NF, o bet koks atributas, kuris nėra jokio kandidato rakto dalis (t. y. nepagrindiniai atributai), turėtų visiškai priklausyti nuo bet kurio iš siūlomų raktų lentelėje.
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, jei ta lentelė yra antrosios normalios formos (2NF), ir kiekvienas lentelės atributas, nepriklausantis kandidato raktui, turėtų tiesiogiai priklausyti ant kiekvieno tos lentelės kandidato rakto.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.
Kuo skiriasi 1NF ir 2NF ir 3NF?
1NF, 2NF ir 3NF yra įprastos formos, naudojamos reliacinėse duomenų bazėse siekiant sumažinti lentelių perteklius. 3NF laikomas stipresne normalia forma nei 2NF, ir jis laikomas stipresne normalia forma nei 1NF. Todėl apskritai norint gauti lentelę, kuri atitinka 3NF formą, reikės išskaidyti lentelę, esančią 2NF. Panašiai, norint gauti lentelę, kuri atitinka 2NF, reikės išskaidyti lentelę, kuri yra 1NF. Tačiau jei lentelėje, atitinkančioje 1NF, yra kandidatų raktų, kuriuos sudaro tik vienas atributas (t. y. nesudėtiniai kandidatų raktai), tokia lentelė automatiškai atitiktų 2NF. Išskaidžius lenteles, vykdant užklausas bus atliekamos papildomos sujungimo operacijos (arba Dekarto produktai). Tai padidins skaičiavimo laiką. Kita vertus, lentelėse, atitinkančiose stipresnes įprastas formas, būtų mažiau pertekliaus nei lentelėse, atitinkančiose tik silpnesnes įprastas formas.