FANormalFormas1-3_2026_lv
1. Funkcionālās atkarības un Normālformas
2. Piemērs
FilialePilseta
Noguldijumi
Klients
Konts
Summa
Centrs
Rīga
18700 Kalniņš
K-34
12000
Nomale
Rīga
2450 Bērziņš
K-45
150
Centrs
Rīga
18700 Kalniņš
K-99
6700
Pils
Jēkabpils
4500 Zummers
K-22
4500
Nomale
Rīga
2450 Sīlis
K-83
2300
• insert, update
• Veicot šīs darbības ir jāseko līdzi, lai noguldījumu kopsumma atbilstu
attiecīgās filiāles noguldījumu kopsummai
3. Piemērs
FilialePilseta
Noguldijumi
Klients
Konts
Summa
Centrs
Rīga
18700 Kalniņš
K-34
12000
Nomale
Rīga
2450 Bērziņš
K-45
150
Centrs
Rīga
18700 Kalniņš
K-99
6700
Pils
Jēkabpils
4500 Zummers
K-22
4500
Nomale
Rīga
2450 Sīlis
K-83
2300
• Ir spēkā atkarība
• Filiale->Noguldijumi
• Nav spēkā atkarība
• Filiale->Konts
4. Funkcionālā atkarība
• Dota tabula ar kolonnu kopu S, a ir dažas no tabulas kolonām un b irdažas no tabulas kolonām. Saka, ka kolonnu kopā K eksistē funkcionālā
atkarība
a->b
tad, ja katrai korektai tabulai t(S), katram rindu pārim r1, r2 no t, izpildās,
ka ja šajās rindās ir vienāds kolonnu a saturs, tad ir vienāds arī kolonnu b
saturs.
Tas nozīmē, ka ja es zinu kolonas/kolonu a saturu, tad es viennozīmīgi
varu pateikt, kāds būs kolonas/kolonu b saturs.
Jeb drusku savādāk formulējot – tabulā visām rindām, kurām ir viena
konkrēta a vērtība, būs viena un tā pati b vērtība. (Tas attiecas uz
jebkuru iespējamo a vērtību.)
5. Funkcionālā atkarība
FilialePilseta
Noguldijumi
Klients
Konts
Summa
Centrs
Rīga
18700 Kalniņš
K-34
12000
Nomale
Rīga
2450 Bērziņš
K-45
150
Centrs
Rīga
18700 Kalniņš
K-99
6700
Pils
Jēkabpils
4500 Zummers
K-22
4500
Nomale
Rīga
2450 Sīlis
K-83
2300
• Izpildās atkarības
• Konts->Summa
• Konts->Filiale
• Filiale->Pilseta
Tabulā katrai Konts vērtībai ir tikai viena rinda
Pilseta ir atkarīga no Filiale, tāpēc konkrētai lauka Filiale vērtība ir tā pati lauka Pilseta vērtība visās
rindas, kurās ir tā konkrētā lauka Filiale vērtība
• Neizpildās atkarības
• Klients->Konts
Klientam var būt vairāki konti
6. Funkcionālo atkarību izmantojums
• Definēt ierobežojumus tabulām• Pārbaudīt, vai konkrētām tabulām izpildās funkcionālās atkarības
7. Nesamazināmās funkcionālās atkarības
• No kreisās puses nesamazināmās funkcionālās atkarības(FA) ir FA, kurām nav iespējams no kreisās puses izmest
kādu atribūtu “nesabojājot” FA.
• {Filiale, Konts} -> Klients
• {Konts} -> Klients
• Saka, ka atribūts Klients ir nesamazināmi atkarīgs no
atribūta Konts.
• Reizēm tiek lietots termins “atribūts ir pilnīgi atkarīgs no citiem
atribūtiem”.
8. Funkcionālo atkarību grafs
PilsetaKlients
Konts
Filiale
Summa
Noguldijumi
FA grafu zīmē katrai tabulai atsevišķi. FA grafa
virsotnes ir tabulas lauki, un šķautnes norāda, kurš
lauks no kura ir atkarīgs.
9. Normālformas
10. Ievadpiemērs
RazotajaNrRazotajaPilseta
DetalasNr
Skaits
R1
Rīga
D1
300
R1
Rīga
D2
200
R1
Rīga
D3
300
R1
Rīga
D4
400
R1
Rīga
D5
100
R1
Rīga
D6
200
R2
Liepāja
D1
100
R2
Liepāja
D2
300
R3
Liepāja
D2
100
R4
Rīga
D2
100
R4
Rīga
D4
200
Kādas FA ir spēkā?
RažotājaNr -> Ražotāja pilsēta
RažotājaNr, DetalasNr -> Skaits
11. Daži apsvērumi
• Lieka informācija – pie katra ražotāja ir informācija, kur ražotājsatrodas. Ko darīt datu maiņas gadījumā?
Labais stils – viena veida fakts vienā tabulā
Normalizācija – šo ideju formalizēts izklāsts
12. Normālformu hierarhija
Visas tabulas1NF esošas tabulas
2NF esošas tabulas
3NF esošas tabulas
BCNF esošas tabulas
4NF esošas tabulas
5NF esošas tabulas
13. Normalizācija
• Normalizācija – dotā tabulu komplekta pārveidošanalīdz kādai “labākai” formai.
• Normalizācija ir atgriezenisks process t.i. vienmēr var
iegūt atpakaļ sākotnējās tabulas. Tas nozīmē, ka
normalizācijas procesā informācija netiek zaudēta.
• Reizēm par normalizāciju sauc datu bāzes shēmas
pārveidošanu līdz 1NF, reizēm līdz 3NF, reizēm līdz 5NF.
• Normalizāciju veic sadalot tabulu vienā vai vairākās
tabulās ar mazāk laukiem katrā.
14. Dekompozīcija
RazotajaNrRazotajaStatuss
RazotajaPilseta
R3
30
Rīga
R5
30
Valmiera
RazotajaNr
RazotajaStatuss
RazotajaNr
RazotajaPilseta
R3
30
R3
Rīga
R5
30
R5
Valmiera
RazotajaNr
RazotajaStauss
RazotajaStatuss
RazotajaPilseta
R3
30
30
Rīga
R5
30
30
Valmiera
Pirmajā gadījumā veicot JOIN pēc atribūta RazotajaNr, iegūst sākotnējo relāciju.
Otrajā gadījumā veicot JOIN pēc atribūta RazotajaStatuss neiegūst sākotnējo
relāciju
15. Dekompozīcija
RazotajaNrRazotajaStatuss
RazotajaPilseta
R3
30
Rīga
R5
30
Valmiera
Funkcionālās atkarības:
RazotajaNr->RazotajaStatuss
RazotajaNr->RazotajaPilseta
Heza (Heath) teorēma:
Pieņemsim, ka dota tabula R{A,B,C}. (A, B, C ir R kolonu
kopas) Ja ir spēkā FA A->B, tad R ir vienāds ar savu
projekciju {A, B} un {A, C} savienojumu (join), t.i. R = {A,B}
JOIN {A,C}
Sekas: Dekompozīcija jāveic tā, lai nepazaudētu funcionālās atkarības.
16. Pirmā normālforma
• Domēns ir atomārs, ja tā vērtības ir nedalāmas.• Tabula R ir 1. Normālformā (1NF), ja visu tās atribūtu domēni ir
atomāri.
Filiale
Pilseta
Ieguldijumi
Klients
Konts
Summa
Centrs
Rīga
18700 Kalniņš
K-34
12000
Nomale
Rīga
2450 Bērziņš
K-45
150
Centrs
Rīga
18700 Kalniņš
K-99
6700
Pils
Jēkabpils
4500 Zummers
K-22
4500
Nomale
Rīga
2450 Sīlis
K-83
2300
17. Pirmā normālforma
StudentIDFirstName
LastName
CourseID
CourseName
Grade
AA11223
John
Smith
CZ453
Calculus
7
AA11223
John
Smith
BX563
Biology
8
CD54672
Anna
Brown
CZ453
Calculus
9
CD54672
Anna
Brown
BX563
Biology
9
CD54672
Anna
Brown
MD902
Music
10
18. Otrā normālforma
• Tabula ir 2. Normālformā, ja tā ir 1. Normālformā, un katrs atribūts,kas nav potenciālā/primārā atslēga (potenciālās/primārās atslēgas
atribūts) ir funkcionāli pilnīgi atkarīgs no jebkuras iespējamās
potenciālās atslēgas.
19. 2. un 3. Normālformas
StudentIDCourseID
Grade
AA11223
CZ453
7
AA11223
BX563
8
CD54672
CZ453
9
CD54672
BX563
9
CD54672
MD902
10
StudentID
FirstName
LastName
AA11223
John
Smith
CD54672
Anna
Brown
CourseID
CourseName
CZ453
Calculus
BX563
Biology
MD902
Music
20. Piemērs 2NF
FilialePilseta
Noguldijumi
Klients
Konts
Summa
Centrs
Rīga
150000 Kalniņš
K-34
12000
Nomale
Rīga
50000 Bērziņš
K-45
150
Centrs
Rīga
150000 Kalniņš
K-99
6700
Pils
Jēkabpils
34500 Zummers
K-22
4500
Nomale
Rīga
50000 Sīlis
K-83
2300
Pilseta
Klients
Konts
Summa
Filiale
Noguldijumi
21. Piemērs
• Problēmas• Ja filiālei mainās atrašanās vieta, tai ir jāmaina atrašanās vieta daudz rindās
• Ja filiālei mainās noguldījumi, tad kopējā noguldījumu summa jāmaina visās
rindās, kur pieminēta šī filiāle
• Kāpēc
• Filiāles atrašanās vieta un kopējā filiālē noguldītā summa ir filiāles
informācija, nevis konta informācija. (Problēmu rada tas, ka daži atribūti ir
atkarīgi no atribūtiem, kas nav potenciālā/primārā atslēga)
• Ko darīt
• Sadalīt tabulu divās tabulās, atdalot filiāles informāciju atsevišķā tabulā
22. Piemērs 3NF
KlientsFiliale
Konts
Summa
Kalniņš
K-34
12000
Nomale Bērziņš
K-45
150
Centrs
Kalniņš
K-99
6700
Pils
Zummers
K-22
4500
Nomale Sīlis
K-83
2300
Filiale
Pilseta
Noguldijumi
Centrs
Rīga
150000
Nomale
Rīga
50000
Pils
Jēkabpils
34500
Centrs
Klients
Konts
Filiale
Summa
Pilseta
Filiale
Noguldijumi
23. Piemērs 3NF
PKStAplNr
Vards
Uzvards
010101
148378
Jānis
Kalniņš
150201
275594
Maija
Bērziņa
241102
704326
Pēteris
Kalniņš
170801
110452
Maija
Ose
041000
639258
Zane
Sīle
Par primāro atslēgu var izvēlēties
vai nu PK vai StAplNr.
Izstrādātājs lemj, kurš no šiem
laukiem ir piemērotāks konkrētajā
situācijā.
PK
Vards
StAplNr
Uzvards
24. Trešā normālforma
• Tabula ir 3. Normālformā, ja katra rinda sastāv no primārās atslēgas (vaipotenciālajām atslēgām un primārās atslēgas) un vai nu null vērtībām,
vai arī no atribūtiem, kas ir funkcionāli pilnīgi atkarīgi no potenciālajām
atslēgām un primārās atslēgas un nav atkarīgi viens no otra.
• 3. normālformas definīcijas variants: Tabula ir 3. normālformā, ja
atribūti, kas nav potenciālās (un primārās) atslēgas atribūti, ir atkarīgi no
potenciālās (un primārās) atslēgas atribūtiem un nav atkarīgi viens no
otra.
25. Papildus lietas
• Nosaukumi• Var būt vairākas tabulas ar vienāda nosaukuma laukiem, kas
pēc būtības satur dažāda tipa vērtības
• Denormalizācija ātrdarbībai
• Lielās sistēmās, kur ir daudz tabulu, daudz datu un sarežģīti
pieprasījumi, ātrdarbības nolūkos var atkāpties no 3.
normālformas uz 2. normālformu vai pat 1. normālformu
(denormalizēt)
• Citi apsvērumi
• Dažādu gadu datu glabāšana – pa tabulām, pa kolonām,
ievedot papildus atribūtu ‘gads’