Kas ir normalizācija datu bāzē?
sobes.tech AI
Atbilde no AI
Datubāzes normalizācija ir process, kurā organizē datus relāciju datubāzē, lai samazinātu dublēšanos (datu atkārtošanos) un uzlabotu datu integritāti. To panāk, sadalot lielas tabulas mazākās un definējot saites starp tām.
Galvenais normalizācijas mērķis:
- Datu dublēšanās samazināšana: izvairīties no vienas un tās pašas informācijas atkārtošanās dažādās vietās.
- Datu integritātes uzlabošana: nodrošināt datu precizitāti un saskaņotību.
- Elastības nodrošināšana: vienkāršot datu bāzes struktūras maiņu un paplašināšanu.
Normalizācija tiek definēta ar noteikumu kopumu, ko sauc par normālformām. Visbiežāk sastopamas ir pirmās trīs normālformas:
-
Pirmā normālforma (1NF):
- Katram tabulas kolonnai jābūt atomārām (nešķeljamām) vērtībām.
- Nav atkārtotu kolonnu grupu.
- Katrai rindai jābūt unikālai (ar primāro atslēgu).
-
Otrā normālforma (2NF):
- Tabula ir 1NF.
- Visas neatslēgas atribūti (kolonnas, kas nav iekļautas primārajā atslēgā) pilnībā atkarīgas no visas primārās atslēgas (ja tā ir sastāvdaļa). Nav daļēju atkarību.
-
Trešā normālforma (3NF):
- Tabula ir 2NF.
- Nav transitatīvu atkarību. Neatslēgas atribūti neatkarīgi no citiem neatslēgas atribūtiem.
Ir arī augstākas normālformas (BCNF, 4NF, 5NF, 6NF), bet parasti 3NF uzskata par pietiekamu lielākajai daļai praktisku mērķu.
Piemērs (vienkāršots):
Nepareizi normalizēta tabula (klienta pasūtījums):
| Pasūtījuma ID | Klienta Vārds | Klienta Adrese | Preces | Daudzums | Cena par vienu |
|---|---|---|---|---|---|
| 101 | Ivans | Maskava | Dators | 1 | 50000 |
| 101 | Ivans | Maskava | Pele | 2 | 1000 |
| 102 | Marija | Sanktpēterburga | Tastatūra | 1 | 3000 |
Pēc normalizācijas (piemēram, līdz 3NF):
Pasūtījumu tabula:
| Pasūtījuma ID | Klienta ID | Pasūtījuma datums |
|---|---|---|
| 101 | 1 | 2023-10-26 |
| 102 | 2 | 2023-10-26 |
Klientu tabula:
| Klienta ID | Klienta Vārds | Klienta Adrese |
|---|---|---|
| 1 | Ivans | Maskava |
| 2 | Marija | Sanktpēterburga |
Pasūtījuma detaļu tabula:
| Pasūtījuma detaļu ID | Pasūtījuma ID | Preces ID | Daudzums | Cena par vienu |
|---|---|---|---|---|
| 1 | 101 | 10 | 1 | 50000 |
| 2 | 101 | 20 | 2 | 1000 |
| 3 | 102 | 30 | 1 | 3000 |
Preču tabula:
| Preces ID | Preces Nosaukums |
|---|---|
| 10 | Dators |
| 20 | Pele |
| 30 | Tastatūra |
Deminormalizācija ir pretēja normalizācijas process, kas dažreiz tiek izmantots datu lasīšanas veiktspējas uzlabošanai, palielinot dublēšanos.