Mis on normaliseerimine?
Normaliseerimine on andmebaasi kujundamise tehnika, mis vähendab andmete üleliigsust ja välistab soovimatud omadused nagu sisestamise, värskendamise ja kustutamise anomaaliad. Normaliseerimise reeglid jagavad suuremad tabelid väiksemateks tabeliteks ja seovad need seoste abil. SQL-is normaliseerimise eesmärk on kõrvaldada üleliigsed (korduvad) andmed ja tagada andmete loogiline salvestamine.
Relatsioonimudeli leiutaja Edgar Codd esitas andmete normaliseerimise teooria esimese normvormi kasutuselevõtuga ning ta jätkas teooria laiendamist teise ja kolmanda normvormiga. Hiljem liitus ta Raymond F. Boyce'iga, et töötada välja Boyce-Coddi normaalkuju teooria.
Andmebaasi tavalised vormid
Siin on loetelu tavalistest vormidest
- 1NF (esimene tavaline vorm)
- 2NF (teine tavaline vorm)
- 3NF (kolmas normvorm)
- BCNF (Boyce-Coddi tavaline vorm)
- 4NF (neljas normvorm)
- 5NF (viies normvorm)
- 6NF (kuues normvorm)
Andmete normaliseerimise teooriat SQL serveris arendatakse endiselt edasi. Näiteks arutatakse isegi 6. normvormi üle . Kuid kõige praktilisi rakendusi, normaliseerumine saavutab oma parima 3 rd Tavaline vorm . SQL-i normaliseerimise teooriate arengut illustreeritakse allpool-

Andmebaasi normaliseerimine näidetega
Andmebaasi normaliseerimise näidet saab juhtumiuuringu abil hõlpsasti mõista. Oletame, et videoteegis on renditud filmide andmebaas. Ilma andmebaasis normaliseerimiseta salvestatakse kogu teave ühte tabelisse, nagu allpool näidatud. Mõistame andmebaasi normaliseerimist koos tabelitega:
Siin näete, et veerul Filmid renditud on mitu väärtust. Nüüd liigume 1. tavalisse vormi:
1NF (esimene tavaline vorm) reeglid
- Iga tabeli lahter peaks sisaldama ühte väärtust.
- Iga kirje peab olema ainulaadne.
Ülaltoodud tabel 1NF-
1NF näide
Enne jätkamist mõistame mõnda asja -
Mis on võti?
KEY on väärtus, mida kasutatakse tabeli kirje kordumatuks tuvastamiseks. KEY võib olla üks veerg või mitme veeru kombinatsioon
Märkus. Tabeli veerge, mida EI kasutata kirje kordumatuks tuvastamiseks, nimetatakse võtmeta veergudeks.
Mis on esmane võti?

Esmane on ühe veeru väärtus, mida kasutatakse andmebaasikirje kordumatuks tuvastamiseks.
Sellel on järgmised atribuudid
- Esmane võti ei saa olla NULL
- Esmane võti peab olema kordumatu
- Esmaseid võtmeväärtusi tuleks harva muuta
- Uue kirje sisestamisel tuleb esmasele võtmele anda väärtus.
Mis on liitvõti?
Liitvõti on primaarvõti, mis koosneb mitmest veerust, mida kasutatakse kirje kordumatuks tuvastamiseks
Meie andmebaasis on kaks inimest sama nimega Robert Phil, kuid nad elavad erinevates kohtades.
Seega nõuame kirje kordumatuks tuvastamiseks nii täisnime kui ka aadressi. See on liitvõti.
Liigume teise normaalsesse vormi 2NF
2NF (teine tavaline vorm) reeglid
- Reegel 1 - Ole 1NF-is
- Reegel 2 - ühe veeru esmane võti
On selge, et me ei saa edasi liikuda, et muuta meie lihtne andmebaas 2 nd normaliseerimine, kui me jagage tabelis eespool.
Oleme oma 1NF tabeli jaganud kaheks tabeliks, nimelt. Tabelid 1 ja 2. Tabel 1 sisaldab teavet liikmete kohta. Tabel 2 sisaldab teavet renditud filmide kohta.
Oleme kasutusele võtnud uue veeru nimega Membership_id, mis on tabeli 1 peamine võti. Kirjeid saab tabelis 1 unikaalselt tuvastada, kasutades liikmesuse ID-d
Andmebaas - välisvõti
Tabelis 2 on Membership_ID välisvõti
Välisvõtmes viidatakse teise tabeli primaarvõtmele! See aitab teie tabeleid ühendada
- Võõrvõtmel võib olla esmase võtmest erinev nimi
- See tagab, et ühe tabeli ridadel on vastavad read teises
- Erinevalt Esmane võtmest ei pea need olema ainulaadsed. Enamasti nad ei ole
- Võõrvõtmed võivad olla tühised, kuigi esmased võtmed ei saa
Miks vajate võõrast võtit?
Oletame, et algaja lisab tabelisse B sellise kirje nagu
Võõrvõtmesse saate sisestada ainult väärtusi, mis eksisteerivad vanematabeli unikaalses võtmes. See aitab kaasa referentsiaalsele terviklikkusele.
Ülaltoodud probleemist saab üle, kui kuulutada tabeli 2 liikmesuse ID tabeli 1 liikmelisuse id-i võti
Kui nüüd keegi proovib sisestada väljale liikmelisuse ID väärtuse, mida vanematabelis pole, kuvatakse viga!
Mis on transitiivsed funktsionaalsed sõltuvused?
Transitiivne funktsionaalne sõltuvus on võtmevaba veeru muutmine, mis võib põhjustada mõne muu võtmevaba veeru muutumise
Vaadake tabelit 1. Mittevõtmelise veeru Täisnimi muutmine võib tervitust muuta.
Liigume 3NF-i
3NF (kolmas normvorm) reeglid
- Reegel 1 - Ole 2NF-is
- Reegel 2 - tal pole transitiivseid funktsionaalseid sõltuvusi
Meie 2NF tabeli teisaldamiseks 3NF-iks peame jälle oma tabeli jagama.
3NF näide
Allpool on 3NF näide SQL-i andmebaasis:
Oleme taas oma tabelid jaganud ja loonud uue tabeli, kus on salutatsioonid.
Transitiivseid funktsionaalseid sõltuvusi pole ja seega on meie tabel 3NF-is
Tabelis 3 on tervitamise ID primaarvõti ja tabelis 1 tabeli 3 primaarvõtme võti
Nüüd on meie väike näide tasemel, mida ei saa normaliseerimise kõrgemate normaalsete vormide saavutamiseks edasi lagundada. Tegelikult on see juba kõrgema normaliseerimise vormides. Tavaliselt on keerulistes andmebaasides vaja teha eraldi jõupingutusi andmete normaliseerimiseks järgmistele tasanditele. Järgnevalt käsitleme lühidalt järgmisi normaliseerimise tasemeid.
BCNF (Boyce-Coddi tavaline vorm)
Isegi kui andmebaas on 3 rd Tavaline vorm, ikka oleks kõrvalekaldeid tekkinud, kui see on rohkem kui üks kandidaat Key.
Mõnikord nimetatakse BCNF-i ka kui 3,5 tavalist vormi.
4NF (neljas normvorm) reeglid
Kui ei andmebaasi tabeli Näiteks sisaldab kahte või enamat, sõltumatu ja paljuväärtuselise kirjeldavad andmed asjaomaste isikutega, siis on 4 th Tavaline vorm.
5NF (viies normvorm) reeglid
Laud on 5 th Tavaline vorm üksnes juhul, kui see on 4NF ja seda ei saa jaotada tahes hulk väiksemaid tabelid kaotamata andmeid.
Kavandatud 6NF (kuues normvorm)
6. normvormi ei ole standardiseeritud, kuid andmebaasieksperdid arutavad seda mõnda aega. Loodetavasti on meil lähitulevikus selge ja standardiseeritud määratlus 6. normvormi jaoks …
See on kõik SQL-i normaliseerimiseks !!!
Kokkuvõte
- Andmekogude kujundamine on ettevõtte süsteemi andmenõuetele vastava andmebaasihaldussüsteemi eduka juurutamise jaoks ülioluline.
- DBMS-i normaliseerimisprotsess aitab toota kulutõhusaid ja paremate turbemudelitega andmebaasisüsteeme.
- Funktsionaalsed sõltuvused on andmete normaliseerimise protsessis väga oluline komponent
- Enamik andmebaasisüsteeme on normaliseeritud andmebaasid kuni kolmanda normaalkujuni.
- Ainulaadselt identifitseeritav primaarvõti on tabelis kirje ja ei saa olla null
- Võõrvõti aitab tabelit ühendada ja viitab primaarvõtmele