Skirtumas tarp normalizavimo ir denormalizacijos

Normalizavimas prieš denormalizavimą

Reliacines duomenų bazes sudaro santykiai (susijusios lentelės). Lenteles sudaro stulpeliai. Jei lentelės yra dvi didelės (t. Y. Per daug stulpelių vienoje lentelėje), tada gali atsirasti duomenų bazės anomalijų. Jei lentelės yra dvi mažos (t. Y. Duomenų bazę sudaro daugybė mažesnių lentelių), užklausų atlikti neveiksminga. Normalizavimas ir denormalizavimas yra du procesai, naudojami duomenų bazės našumui optimizuoti. Normalizavimas sumažina duomenų lentelėse esančių atleidimų skaičių. Denormalizavimas (atvirkštinis normalizavimas) prideda nereikalingus arba grupės duomenis.

Kas yra normalizavimas?

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ų (vadinamomis „normaliomis formomis“). Š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) pristatė Edgaras F. Coddas. „Boyce-Codd Normal Form“ (BCNF) 1974 m. Pristatė Codd ir Raymond F. Boyce. Buvo apibrėžtos aukštesnės normalios formos (4NF, 5NF ir 6NF), tačiau jos naudojamos retai.

1NF atitinkanti lentelė garantuoja, kad ji iš tikrųjų žymi ryšį (t. Y. Joje nėra jokių įrašų, kurie kartojasi) ir neturi atributų, kurie būtų santykinai vertinami (t. Y. Visi atributai turėtų turėti atomines reikšmes). Kad lentelė atitiktų 2NF, jos turėtų būti laikomasi 1NF, o bet kuris atributas, kuris nėra jokio kandidato rakto dalis (t. Y. Nepagrindiniai atributai), turėtų visiškai priklausyti nuo bet kurio iš kandidato raktų lentelėje. Pagal Codd apibrėžimą, lentelė yra 3NF, jei ir tik tada, jei ta lentelė yra antros normalios formos (2NF) ir kiekvienas lentelės atributas, nepriklausantis klavišui kandidatui, turėtų tiesiogiai priklausyti nuo kiekvieno tos lentelės kandidato raktas. BCNF (dar žinomas kaip 3.5NF) fiksuoja kai kurias anomalijas, kurių 3NF nenagrinėja.

Kas yra denormalizacija?

Denormalizavimas yra atvirkštinis normalizacijos proceso procesas. Denormalizavimas atliekamas pridedant nereikalingus duomenis arba sugrupuojant duomenis, siekiant optimizuoti našumą. Nepaisant to, kad nereikalingų duomenų pridėjimas atrodo neproduktyvus, kartais denormalizavimas yra labai svarbus procesas, siekiant pašalinti kai kuriuos reliacinių duomenų bazių programinės įrangos trūkumus, dėl kurių normalizuotos duomenų bazės (net pritaikytos didesniam našumui) gali užtraukti dideles bausmes už efektyvumą. Taip yra todėl, kad sujungus kelis ryšius (kurie normalizuojami) norint gauti rezultatą, užklausa kartais gali būti lėta, atsižvelgiant į faktinį duomenų bazių sistemų fizinį įgyvendinimą.

Kuo skiriasi normalizavimas ir denormalizavimas??

- Normalizavimas ir denormalizavimas yra du procesai, visiškai priešingi.

- Normalizavimas yra didesnis lentelių padalijimas į mažesnes, siekiant sumažinti nereikalingus duomenis, o denormalizavimas - nereikalingų duomenų pridėjimas, siekiant optimizuoti našumą..

- Normalizavimas atliekamas siekiant išvengti duomenų bazių anomalijų.

- Denormalizavimas paprastai atliekamas siekiant pagerinti duomenų bazės skaitymo efektyvumą, tačiau dėl papildomų apribojimų, naudojamų denormalizavimui, raštai (t. Y. Įterpimo, atnaujinimo ir naikinimo operacijos) gali būti lėtesni. Todėl denormalizuota duomenų bazė gali pasiūlyti blogesnį rašymo našumą nei normalizuota duomenų bazė.

- Dažnai rekomenduojama „normalizuoti, kol skaudės, denormalizuoti, kol veiks“.