Kas yra normalizavimas?
Normalizavimas yra duomenų bazės projektavimo technika, kuri sumažina duomenų perteklių ir pašalina nepageidaujamas charakteristikas, tokias kaip įterpimo, atnaujinimo ir ištrynimo anomalijos. Normalizavimo taisyklės padalija didesnes lenteles į mažesnes lenteles ir susieja jas naudodamos ryšius. SQL normalizavimo tikslas yra pašalinti nereikalingus (pasikartojančius) duomenis ir užtikrinti, kad duomenys būtų saugomi logiškai.
Reliacinio modelio išradėjas Edgaras Coddas pasiūlė duomenų normalizavimo teoriją, įvedant Pirmąją normalią formą, ir jis toliau plėtojo teoriją antrąja ir trečiąja normalia forma. Vėliau jis prisijungė prie Raymondo F. Boyce'o, kurdamas „Boyce-Codd Normal Form“ teoriją.
Duomenų bazės įprastos formos
Čia yra įprastų formų sąrašas
- 1NF (pirmoji įprasta forma)
- 2NF (antroji įprasta forma)
- 3NF (trečioji įprasta forma)
- BCNF („Boyce-Codd“ normali forma)
- 4NF (ketvirtoji įprasta forma)
- 5NF (penktoji įprasta forma)
- 6NF (šeštoji įprasta forma)
Duomenų normalizavimo SQL serveryje teorija vis dar tobulinama. Pavyzdžiui, diskutuojama net apie 6 -ąją įprastą formą. Tačiau daugumoje praktinių rezultatų normalizavimas geriausiai pasiekiamas 3 -ąja įprasta forma . SQL normalizavimo teorijų raida iliustruojama žemiau-
Duomenų bazės normalizavimas su pavyzdžiais
Duomenų bazės normalizavimo pavyzdys gali būti lengvai suprantamas naudojant atvejo analizę. Tarkime, vaizdo biblioteka tvarko išsinuomotų filmų duomenų bazę. Be duomenų bazės normalizavimo, visa informacija yra saugoma vienoje lentelėje, kaip parodyta žemiau. Supraskime duomenų bazės normalizavimą su lentelėmis:
Čia matote Nuomojamų filmų stulpelio vertes. Dabar pereikime prie 1-osios įprastos formos:
1NF (pirmoji įprasta forma) taisyklės
- Kiekvienoje lentelės langelyje turėtų būti viena vertė.
- Kiekvienas įrašas turi būti unikalus.
Aukščiau pateikta lentelė 1NF-
1NF pavyzdys
Prieš tęsdami, supraskime keletą dalykų -
Kas yra RAKTAS?
RAKTAS yra reikšmė, naudojama norint unikaliai identifikuoti lentelės įrašą. RAKTAS gali būti vienas stulpelis arba kelių stulpelių derinys
Pastaba: Lentelės stulpeliai, kurie NENaudojami unikaliam įrašo identifikavimui, vadinami stulpeliais be rakto.
Kas yra pagrindinis raktas?
Pirminė yra vieno stulpelio vertė, naudojama unikaliai identifikuoti duomenų bazės įrašą.
Jis turi šiuos atributus
- Pagrindinis raktas negali būti NULL
- Pagrindinio rakto reikšmė turi būti unikali
- Pagrindinės pagrindinės reikšmės turėtų būti retai keičiamos
- Įterpiant naują įrašą pirminiam raktui turi būti suteikta vertė.
Kas yra sudėtinis raktas?
Sudėtinis raktas yra pagrindinis raktas, sudarytas iš kelių stulpelių, naudojamų unikaliam įrašo identifikavimui
Mūsų duomenų bazėje turime du žmones tuo pačiu vardu Robertas Philas, tačiau jie gyvena skirtingose vietose.
Taigi, norėdami unikaliai identifikuoti įrašą, reikalaujame ir vardo, ir pavardės, ir adreso. Tai yra sudėtinis raktas.
Pereikime į antrą įprastą formą 2NF
2NF (antroji įprasta forma) taisyklės
- 1 taisyklė - būk 1NF
- 2 taisyklė. Vieno stulpelio pagrindinis raktas
Akivaizdu, kad mes negalime judėti į priekį, norėdami sukurti savo paprastą duomenų bazę antroje normalizavimo formoje, nebent padalinsime aukščiau pateiktą lentelę.
Mes padalijome savo 1NF lentelę į dvi lenteles, t. 1 lentelė ir 2 lentelė. 1 lentelėje pateikiama informacija apie narius. 2 lentelėje pateikiama informacija apie nuomojamus filmus.
Pristatėme naują stulpelį pavadinimu Narystės_id, kuris yra pagrindinis 1 lentelės raktas. Įrašus galima unikaliai identifikuoti 1 lentelėje naudojant narystės ID
Duomenų bazė - užsienio raktas
2 lentelėje narystės_ID yra užsienio raktas
Užsienio raktas nurodo pagrindinį kitos lentelės raktą! Tai padeda sujungti jūsų lenteles
- Užsienio raktas gali skirtis nuo pirminio rakto
- Tai užtikrina, kad vienos lentelės eilutėse būtų atitinkamos eilutės kitoje
- Skirtingai nuo pirminio rakto, jie neturi būti unikalūs. Dažniausiai taip nėra
- Užsienio raktai gali būti niekiniai, net jei pagrindiniai raktai negali
Kodėl jums reikalingas svetimas raktas?
Tarkime, naujokas įrašo įrašą į B lentelę, pvz
Į užsienio raktą galėsite įterpti tik tas vertes, kurios yra pagrindiniame lentelėje esančiame unikaliame rakte. Tai padeda užtikrinti referencinį vientisumą.
Pirmiau pateiktą problemą galima įveikti paskelbus narystės ID iš 2 lentelės kaip narystės ID užsienio raktą iš 1 lentelės
Dabar, jei kas nors bando į narystės ID lauką įterpti vertę, kurios nėra pagrindinėje lentelėje, bus rodoma klaida!
Kas yra tranzityvinės funkcinės priklausomybės?
Transityvinė funkcinė priklausomybė yra keičiant stulpelį be rakto, gali pasikeisti bet kuris kitas stulpelis be rakto
Apsvarstykite 1 lentelę. Pakeitus stulpelį be rakto „Pilnas vardas“, gali pasikeisti pasveikinimas.
Persikelkime į 3NF
3NF (trečioji įprasta forma) taisyklės
- 1 taisyklė - būk 2NF
- 2 taisyklė neturi tranzityvinių funkcinių priklausomybių
Norėdami perkelti savo 2NF lentelę į 3NF, vėl turime dar kartą padalyti savo lentelę.
3NF pavyzdys
Žemiau yra 3NF pavyzdys SQL duomenų bazėje:
Mes vėl suskirstėme lenteles ir sukūrėme naują lentelę, kurioje saugomi pasveikinimai.
Tranzityvinių funkcinių priklausomybių nėra, todėl mūsų lentelė yra 3NF
3 lentelėje sveikinimo ID yra pagrindinis raktas, o 1 lentelėje sveikinimo ID yra svetimas pagrindiniam raktui, nurodytam 3 lentelėje
Dabar mūsų mažasis pavyzdys yra tokio lygio, kurio negalima toliau skaidyti, norint pasiekti aukštesnes normalias normalizavimo formas. Tiesą sakant, tai jau yra aukštesnio normalizavimo formos. Sudėtingose duomenų bazėse paprastai reikia atskirų pastangų pereinant į kitus duomenų normalizavimo lygius. Tačiau toliau aptarsime kitus normalizavimo lygius.
BCNF („Boyce-Codd“ normali forma)
Net jei duomenų bazė yra trečioje įprastoje formoje, vis tiek būtų anomalijų, jei ji turi daugiau nei vieną raktą kandidatą .
Kartais BCNF taip pat vadinamas 3,5 normalia forma.
4NF (ketvirtoji normali forma) taisyklės
Jei nė vienoje duomenų bazės lentelės egzemplioriuje nėra dviejų ar daugiau nepriklausomų ir daugiavalandžių duomenų, apibūdinančių atitinkamą objektą, tai yra 4 -oji įprasta forma.
5NF (penktoji įprasta forma) taisyklės
Lentelė yra 5 -osios normalios formos tik tuo atveju, jei ji yra 4NF ir jos negalima suskaidyti į bet kokį skaičių mažesnių lentelių, neprarandant duomenų.
Siūloma 6NF (šeštoji įprasta forma)
6 -oji įprasta forma nėra standartizuota, tačiau ją kurį laiką diskutuoja duomenų bazės ekspertai. Tikimės, kad artimiausiu metu turėsime aiškų ir standartizuotą 6 -osios įprastos formos apibrėžimą ...
Tai viskas į SQL normalizavimą !!!
Santrauka
- Duomenų bazių projektavimas yra labai svarbus norint sėkmingai įdiegti duomenų bazių valdymo sistemą, atitinkančią įmonės sistemos duomenų reikalavimus.
- DBVS normalizavimo procesas padeda sukurti duomenų bazių sistemas, kurios yra ekonomiškos ir turi geresnius saugos modelius.
- Funkcinės priklausomybės yra labai svarbus duomenų normalizavimo proceso komponentas
- Dauguma duomenų bazių sistemų yra normalizuotos duomenų bazės iki trečiųjų įprastų formų.
- Unikaliai identifikuojamas pagrindinis raktas yra įrašas lentelėje ir negali būti nulinis
- Užsienio raktas padeda susieti lentelę ir nurodo pagrindinį raktą