Atšķirība starp normalizāciju un denormalizāciju

Normalizācija pret denormalizāciju

Relāciju datu bāzes veido attiecības (saistītās tabulas). Tabulas sastāv no kolonnām. Ja tabulas ir divas lielas (t.i., vienā tabulā ir pārāk daudz kolonnu), tad var rasties datu bāzes anomālijas. Ja tabulas ir divas mazas (t.i., datu bāze sastāv no daudzām mazākām tabulām), vaicāšana nebūtu efektīva. Normalizācija un denormalizācija ir divi procesi, kurus izmanto, lai optimizētu datu bāzes darbību. Normalizēšana samazina datu tabulās esošo atlaišanu. Denormalizācija (normalizācijas apgrieztā puse) pievieno liekus vai grupas datus.

Kas ir normalizēšana?

Normalizācija ir process, kas tiek veikts, lai samazinātu atlaišanu, kas ir relāciju datu bāzu datos. Šajā procesā lielās tabulas galvenokārt tiks sadalītas mazākās tabulās ar mazāku atlaišanu (sauktas “parastās formas”). Šīs mazākās tabulas būs savstarpēji saistītas, izmantojot precīzi noteiktas attiecības. Labi normalizētā datu bāzē jebkurām datu izmaiņām vai modifikācijām būs jāmaina tikai viena tabula. Pirmo normālo formu (1NF), otro normālo formu (2NF) un trešo normālo formu (3NF) ieviesa Edgars F. Kods. Boyce-Codd parasto formu (BCNF) 1974. gadā ieviesa Codd un Raymond F. Boyce. Ir noteiktas augstākas normālas formas (4NF, 5NF un 6NF), taču tās tiek izmantotas reti.

Tabula, kas atbilst 1NF, nodrošina, ka tā faktiski attēlo sakarību (t.i., tajā nav neviena ieraksta, kas atkārtojas) un nesatur atribūtus, kuriem ir relatīva vērtība (t.i., visiem atribūtiem vajadzētu būt atomu vērtībām). Lai tabula atbilstu 2NF, tai būtu jāatbilst 1NF, un jebkuram atribūtam, kas neietilpst nevienā kandidāta atslēgā (t.i., primārajos atribūtos), jābūt pilnībā atkarīgam no jebkura tabulā esošā kandidāta atslēgas. Saskaņā ar Codd definīciju tabula tiek uzskatīta par 3NF tikai un vienīgi tad, ja šī tabula ir otrajā normālajā formā (2NF), un katram tabulas atribūtam, kas nepieder kandidāta atslēgai, jābūt tieši atkarīgam no katra šīs tabulas kandidāta atslēga. BCNF (pazīstams arī kā 3.5NF) uztver dažas anomālijas, kuras 3NF neatrisina.

Kas ir denormalizācija?

Denormalizācija ir normalizācijas procesa apgrieztais process. Denormalizācija darbojas, pievienojot liekus datus vai grupējot datus, lai optimizētu veiktspēju. Kaut arī lieku datu pievienošana izklausās neproduktīvi, dažkārt denormalizācija ir ļoti svarīgs process, lai novērstu dažus no relāciju datu bāzes programmatūras trūkumiem, par kuriem normalizētās datu bāzēs var rasties lielas soda sankcijas (pat noregulētas lielākai veiktspējai). Tas ir tāpēc, ka vairāku attiecību (kas tiek normalizētas) apvienošana, lai iegūtu rezultātu vaicājumam, dažreiz var būt lēna, atkarībā no datu bāzes sistēmu faktiskās fiziskās ieviešanas..

Kāda ir atšķirība starp normalizēšanu un denormalizāciju?

- Normalizācija un denormalizācija ir divi procesi, kas ir pilnīgi pretēji.

- Normalizēšana ir process, kurā lielākas tabulas tiek sadalītas mazākās, samazinot liekos datus, savukārt normalizēšana ir lieku datu pievienošanas process, lai optimizētu veiktspēju.

- Normalizācija tiek veikta, lai novērstu datu bāzu anomālijas.

- Denormalizāciju parasti veic, lai uzlabotu datu bāzes lasīšanas veiktspēju, taču sakarā ar papildu ierobežojumiem, ko izmanto denormalizēšanai, raksta (t.i., ievietošanas, atjaunināšanas un dzēšanas operācijas) var kļūt lēnāka. Tāpēc denormalizēta datu bāze var piedāvāt sliktāku rakstīšanas veiktspēju nekā normalizēta datu bāze.

- Bieži ieteicams “normalizēt, līdz tas sāp, denormalizēt, līdz tas darbojas”.