Ką žinote apie normalias formas duomenų bazėse?
sobes.tech AI
Atsakymas iš AI
Normalios formos (NF) – tai taisyklių ir rekomendacijų rinkinys, skirtas reliacinės duomenų bazės struktūros projektavimui, siekiant sumažinti perteklinius duomenis ir išvengti anomalijų įterpimo, atnaujinimo ir ištrynimo metu.
Pagrindinės normalios formos:
-
Pirmoji normalioji forma (1NF):
- Kiekvienas atributas (stulpelis) turi turėti atomines (nepadalijamas) reikšmes.
- Neturi būti pasikartojančių atributų grupių.
- Kiekviena eilutė turi būti unikali (su pagrindiniu raktu).
-
Antroji normalioji forma (2NF):
- Yra 1NF.
- Kiekvienas ne-raktinis atributas turi būti visiškai priklausomas nuo viso pirminio rakto (jei pirminis raktas sudėtinis).
-
Trečioji normalioji forma (3NF):
- Yra 2NF.
- Neturi būti tranzityvinių priklausomybių tarp ne-raktinių atributų (ne-raktinis atributas neturi priklausyti nuo kito ne-raktinio atributo).
-
Boyce-Codd forma (BCNF):
- Griežtesnė 3NF versija.
- Kiekviena neliečiama priklausomybė $X \to Y$ turi turėti $X$ kaip superraktą.
-
Ketvirtoji normalioji forma (4NF):
- Yra BCNF.
- Neturi būti daugreikšmių priklausomybių.
-
Penktoji normalioji forma (5NF):
- Yra 4NF.
- Neturi būti jungimo priklausomybių.
Normalizacijos tikslai:
- Duomenų pertekliaus mažinimas.
- Anomalių prevencija (įterpimas, atnaujinimas, ištrynimas).
- Duomenų vientisumo užtikrinimas.
- Bazės struktūros supaprastinimas.
Pavyzdys:
Duomenų pertekliaus turinti lentelė (ne 1NF):
| ЗаказID | Товар | Цена |
|---|---|---|
| 1 | Ноутбук, Мышь | 1000, 20 |
| 2 | Клавиатура | 50 |
Normalizuota lentelė (1NF ir aukštesnė):
"Заказы" lentelė:
| ЗаказID |
|---|
| 1 |
| 2 |
"Позиции заказа" lentelė:
| ПозицияID | ЗаказID | Товар | Цена |
|---|---|---|---|
| 1 | 1 | Ноутбук | 1000 |
| 2 | 1 | Мышь | 20 |
| 3 | 2 | Клавиатура | 50 |
Normalizacija yra svarbus projektavimo etapas, tačiau per didelė normalizacija gali lemti didesnį jungčių skaičių užklausose, kas gali neigiamai paveikti našumą. Optimalus lygis priklauso nuo konkrečių reikalavimų ir kompromisų. Kartais naudojama denormalizacija, siekiant optimizuoti našumą tam tikruose scenarijuose, sąmoningai pažeidžiant normalios formos taisykles.