1NF vs 2NF vs 3NF

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. Pirmąją normaliąją formą (1NF), antrąją normaliąją formą (2NF) ir trečiąją normaliąją formą (3NF) įvedė Edgaras F. Coddas, kuris yra ir reliacinio modelio bei normalizacijos sampratos išradėjas.

Kas yra 1NF?

1NF yra pirmoji normali forma, kurioje pateikiami minimalūs reikalavimai, keliami normalizuojant reliacinę duomenų bazę. 1NF atitinkanti lentelė garantuoja, kad ji iš tikrųjų atspindi ryšį (ty joje nėra jokių įrašų, kurie kartojasi), tačiau nėra visuotinai priimto 1NF apibrėžimo. Viena svarbi savybė yra ta, kad 1NF atitinkančioje lentelėje negali būti jokių atributų, kurie yra santykinai vertingi (ty visi atributai turėtų turėti atomines reikšmes).

Kas yra 2NF?

2NF yra antroji įprasta forma, naudojama reliacinėse duomenų bazėse. Kad lentelė atitiktų 2NF, jos turėtų būti laikomasi 1NF, o kiekvienas požymis, kuris nėra nė vieno kandidato rakto dalis (ty nepaprastieji atributai), turėtų visiškai priklausyti nuo bet kurio iš kandidato raktų lentelėje.

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. ant kiekvieno kandidato tos lentelės rakto. 1982 m. Carlo Zaniolo pateikė skirtingai išreikštą 3NF apibrėžimą. 3NF reikalavimus atitinkančiose lentelėse paprastai nėra anomalijų, atsirandančių įrašant, ištrinant ar atnaujinant įrašus lentelėje.

Kuo skiriasi 1NF nuo 2NF ir 3NF?

1NF, 2NF ir 3NF yra normalios formos, naudojamos reliacinėse duomenų bazėse, siekiant sumažinti perteklių lentelėse. 3NF yra laikomas stipresne normaliąja forma nei 2NF, ir yra laikomas stipresne normaliąja forma nei 1NF. Taigi, norint gauti lentelę, atitinkančią 3NF formą, reikės suskaidyti 2NF esančią lentelę. Panašiai, norint gauti lentelę, atitinkančią 2NF, reikės suskaidyti lentelę, kuri yra 1NF. Tačiau jei 1NF atitinkančioje lentelėje yra kandidatų raktai, kuriuos sudaro tik vienas požymis (ty nesudėtiniai kandidato raktai), tokia lentelė automatiškai atitiktų 2NF. Skildami lentelėmis, atlikdami užklausas, turėsite papildomų prisijungimo operacijų (arba Dekarto gaminių). Tai padidins skaičiavimo laiką. Kita vertus, lentelėse, kurios atitinka stipresnes normaliąsias formas, bus mažiau atleidimų nei lentelėse, kurios atitinka tik silpnesnes normalias formas.