Esimene normaalkuju
Esimese normaalkuju nõuded
- Atribuutide väärtused peavad olema atomaarsed (ehk jagamatud) ja
- andmetabelis pole ühesuguseid korteeže (ehk kõik read on unikaalsed) ja
- igas veerus hoitakse ainult sama tüüpi andmeid.
Nõue: Atribuutide väärtused peavad olema atomaarsed (ehk jagamatud). Väärtus on atomaarne kui ta on jagatud väikseimaks loogiliseks osaks. See tähendab, et iga relatsiooni atribuut (teatud mööndustega võime kasutada sõna “lahter”) peab sisaldama ühte ja ainult ühte väärtust.
Vaatame järgmist relatsiooni, kus hoitakse õpilaste hindeid.
Relatsioon Opilased, mis ei vasta esimese normaalkuju nõudele.
Eesnimi | Perenimi | Oppeained | Hinded |
---|---|---|---|
Mari | Maasikas | Matemaatika, Keemia | 5, 4 |
Jaan | Tamm | Keemia, Füüsika, Muusika | 4, 4, 2 |
Marko | Ööbik | Inglise keel | 3 |
Jakob | Nisu | Matemaatika | 4 |
Probleem: Selles relatsioonis (tabelis) hoitakse nii õppeainete kui ka hinnete lahtrites mitut väärtust korraga, seega pole need andmed atomaarsed ning relatsioon pole esimeses normaalkujus. Näiteks oleks hetkel Jaani füüsika hinde leidmiseks vaja koostada üpris keerukas päring.
Esimesele normaalkujule saamiseks tuleb andmed ümber korraldada nii, et igas lahtris oleks ainult üks väärtus.
Relatsioon Opilased, mis vastab esimesele normaalkuju nõudele.
Eesnimi | Perenimi | Oppeained | Hinded |
---|---|---|---|
Mari | Maasikas | Matemaatika | 5 |
Mari | Maasikas | Keemia | 4 |
Jaan | Tamm | Keemia | 4 |
Jaan | Tamm | Füüsika | 4 |
Jaan | Tamm | Muusika | 2 |
Marko | Ööbik | Inglise keel | 3 |
Jakob | Nisu | Matemaatika | 4 |
Kuigi tekib andmeliiasus, on nüüd kõik andmed atomaarsed ja relatsioon on esimeses normaalkujus.
Nõue: Andmetabelis pole ühesuguseid korteeže (ehk kõik read on unikaalsed). See tähendab, et relatsioonis ei tohi esineda ühesuguseid korteeže ehk read ei tohi olla täpselt samasugused.
Vaatame relatsiooni, kus hoitakse muusikaalbumitega seotud infot.
Relatsioon Albumid, mis ei vasta esimese normaalkuju nõudele.
Katalooginumber | Esitaja | Albumi nimi | Ilmumisaasta |
---|---|---|---|
SO-383 | The Beatles | Abbey Road | 1969 |
EPC 85930 | Michael Jackson | Thriller | 1982 |
CRELP 139 | Slowdive | Souvlaki | 1993 |
B0031994-02 | The Weeknd | After Hours | 2020 |
EPC 85930 | Michael Jackson | Thriller | 1982 |
Hetkel näeme, et oranžiga märgitud korteežid on identsed (tekib andmeliiasus) ja seega pole relatsioon esimeses normaalkujus. Probleemi lahendamiseks kustutame ühe nendest korteežidest.
Relatsioon Albumid, mis vastab esimese normaalkuju nõudele.
Katalooginumber | Esitaja | Albumi nimi | Ilmumisaasta |
---|---|---|---|
SO-383 | The Beatles | Abbey Road | 1969 |
EPC 85930 | Michael Jackson | Thriller | 1982 |
CRELP 139 | Slowdive | Souvlaki | 1993 |
B0031994-02 | The Weeknd | After Hours | 2020 |
Nüüd on kõik korteežid erinevad ja relatsioon esimeses normaalkujus.
Nõue: Igas veerus hoitakse ainult sama tüüpi andmeid.
Vaatleme relatsiooni, kus on raamatupoes müügil olevate raamatute info.
Relatsioon Raamatud, mis ei vasta esimesele normaalkuju nõudele.
Pealkiri | Autor | Ilmumisaasta | Kogus |
---|---|---|---|
Harry Potter ja Tarkade Kivi | J.K. Rowling | 1997 | 10 |
Suur Gatsby | F. Scott Fitzgerald | 1925 | 13 |
Tõde ja Õigus | Anton Hansen Tammsaare | 1926 | Kakskümmend |
Kuristik rukkis | J.D. Salinger | 1951 | Seitse |
Koguste veerus on kasutatud koguse märkimiseks nii arvulisi kui ka sõnalisi väärtusi ja seega pole relatsioon esimeses normaalkujus. Kuna päringute koostamine on selliste andmete põhjal keeruline ning ka esimene normaalkuju nõuab, et iga veerg sisaldaks ainult ühte tüüpi andmeid, peame kõik kogused viima ühtsele kujule.
Teeme kõik kogused numbrilisteks.
Relatsioon Raamatud, mis vastab esimesele normaalkuju nõudele.
Pealkiri | Autor | Ilmumisaasta | Kogus |
---|---|---|---|
Harry Potter ja Tarkade Kivi | J.K. Rowling | 1997 | 10 |
Suur Gatsby | F. Scott Fitzgerald | 1925 | 13 |
Tõde ja Õigus | Anton Hansen Tammsaare | 1926 | 20 |
Kuristik rukkis | J.D. Salinger | 1951 | 7 |
Nüüd kasutatakse koguse veerus ainult ühte tüüpi andmeid (täisarvud, ingl integer) ja seega on relatsioon esimeses normaalkujus.
Normaalkujud | Teine normaalkuju |