Normalizavimas ir denormalizavimas
Reliacines duomenų bazes sudaro santykiai (susijusios lentelės). Lentelės sudarytos iš kolonų. Jei lentelės yra dvi didelės (ty per daug stulpelių vienoje lentelėje), gali atsirasti duomenų bazės anomalijų. Jei lentelės yra dvi mažos (ty duomenų bazę sudaro daugybė mažesnių lentelių), tai būtų neefektyvu norint pateikti užklausas. Normalizavimas ir denormalizavimas yra du procesai, naudojami optimizuoti duomenų bazės našumą. Normalizavimas sumažina duomenų lentelėse esančių atleidimų skaičių. Denormalizavimas (atvirkštinis normalizavimas) prideda nereikalingus duomenis arba grupės duomenis.
Kas yra normalizavimas?
Normalizavimas yra procesas, atliekamas siekiant sumažinti atleidimą, esantį reliacinių duomenų bazių duomenyse. Šis procesas daugiausia suskirstys dideles lenteles į mažesnes lenteles su mažiau atleidimų (vadinamomis „įprastomis formomis“). Šios mažesnės lentelės bus susijusios viena su kita tiksliai apibrėžtais ryšiais. Gerai normalizuotoje duomenų bazėje bet kokiems duomenų pakeitimams ar pakeitimams reikės modifikuoti tik vieną lentelę. Pirmąją įprastą formą (1NF), antrąją įprastą formą (2NF) ir trečiąją įprastą formą (3NF) pristatė Edgaras F. Coddas. „Boyce-Codd Normal Form“(BCNF) 1974 m. Pristatė Coddas ir Raymondas F. Boyce'as. Aukštesnės normalios formos (4NF, 5NF ir 6NF) buvo apibrėžtos, tačiau jos naudojamos retai.
Lentelė, atitinkanti 1NF, užtikrina, kad ji iš tikrųjų reiškia ryšį (ty joje nėra jokių pasikartojančių įrašų) ir joje nėra jokių reliatyviai vertinamų atributų (ty visi atributai turėtų turėti atomines vertes). Kad lentelė atitiktų 2NF, ji turėtų atitikti 1NF ir visi atributai, kurie nėra nė vieno rakto kandidato dalis (ty ne pirminiai atributai), turėtų visiškai priklausyti nuo bet kurio iš lentelėje pateiktų raktų kandidatų. Pagal „Codd“apibrėžimą sakoma, kad lentelė yra 3NF, jei ir tik tuo atveju, jei lentelė yra antrosios įprastos formos (2NF), o kiekvienas lentelės atributas, nepriklausantis raktui kandidatui, turėtų tiesiogiai priklausyti nuo kiekvieno kandidatas tos lentelės raktas. BCNF (taip pat žinomas kaip 3.5NF) užfiksuoja kai kurias anomalijas, kurių 3NF nepaiso.
Kas yra denormalizavimas?
Denormalizavimas yra atvirkštinis normalizavimo proceso procesas. Denormalizavimas veikia pridedant nereikalingus duomenis arba grupuojant duomenis, kad būtų optimizuotas našumas. Nors nereikalingų duomenų pridėjimas skamba neproduktyviai, kartais denormalizavimas yra labai svarbus procesas siekiant pašalinti kai kuriuos reliacinės duomenų bazės programinės įrangos trūkumus, dėl kurių gali kilti didelių nuobaudų už normalizuotas duomenų bazes (net pritaikytas aukštesniam našumui). Taip yra todėl, kad sujungus kelis santykius (kurie yra normalizavimo rezultatai), norint gauti rezultatą, užklausa kartais gali būti lėta, atsižvelgiant į faktinį fizinį duomenų bazių sistemų įgyvendinimą.
Kuo skiriasi normalizavimas ir denormalizavimas? - Normalizavimas ir denormalizavimas yra du visiškai priešingi procesai. - Normalizavimas yra didesnių lentelių padalijimo į mažesnes procesas, sumažinant nereikalingus duomenis, o denormalizavimas yra nereikalingų duomenų pridėjimo procesas, siekiant optimizuoti našumą. - Normalizavimas atliekamas siekiant užkirsti kelią duomenų bazių anomalijoms. - Denormalizavimas paprastai atliekamas siekiant pagerinti duomenų bazės skaitymo našumą, tačiau dėl papildomų apribojimų, naudojamų denormalizavimui, rašymas (ty įterpimo, atnaujinimo ir ištrynimo operacijos) gali sulėtėti. Todėl denormalizuota duomenų bazė gali pasiūlyti prastesnį rašymo našumą nei normalizuota duomenų bazė. - Dažnai rekomenduojama „normalizuoti, kol skauda, denormalizuoti, kol jis veikia“. |