database normalization tutorial
Ta vadnica bo razložila, kaj je normalizacija zbirke podatkov in različni običajni obrazci, kot sta 1NF 2NF 3NF in BCNF z primeri kode SQL:
Normalizacija baze podatkov je dobro znana tehnika, ki se uporablja za oblikovanje sheme baze podatkov.
Glavni namen uporabe normalizacijske tehnike je zmanjšati odvečnost in odvisnost podatkov. Normalizacija nam pomaga razstaviti velike tabele na več majhnih tabel, tako da definiramo logično razmerje med njimi.
Kaj se boste naučili:
- Kaj je normalizacija baze podatkov?
- Zaključek
Kaj je normalizacija baze podatkov?
Normalizacija baze podatkov ali normalizacija SQL nam pomaga, da povezane podatke združimo v eno samo tabelo. Vsi atributni podatki ali posredno povezani podatki so vneseni v različne tabele in te tabele so povezane z logičnim razmerjem med nadrejeno in podrejeno tabelo.
Leta 1970 je Edgar F. Codd zasnoval koncept normalizacije. Delil je članek z naslovom »Relacijski model podatkov za velike deljene banke«, v katerem je predlagal »Prvi običajni obrazec (1NF)«.
Prednosti normalizacije DBMS
Normalizacija zbirke podatkov ponuja naslednje osnovne prednosti:
- Normalizacija poveča doslednost podatkov, saj se izogne podvajanju podatkov, tako da podatke shrani samo na enem mestu.
- Normalizacija pomaga pri razvrščanju podobnih ali sorodnih podatkov v isto shemo, kar ima za posledico boljše razvrščanje podatkov v skupine.
- Normalizacija izboljša iskanje hitreje, saj je mogoče indekse ustvariti hitreje. Zato se za OLTP (spletna obdelava transakcij) uporablja normalizirana baza podatkov ali tabela.
Slabosti normalizacije baze podatkov
Normalizacija DBMS ima naslednje pomanjkljivosti:
- Povezanih podatkov, recimo za izdelek ali zaposlenega, ne moremo najti na enem mestu in pridružiti se moramo več kot eni tabeli. To povzroči zamudo pri pridobivanju podatkov.
- Tako normalizacija ni dobra izbira pri transakcijah OLAP (spletna analitična obdelava).
Preden nadaljujemo, razumemo naslednje pojme:
- Entiteta: Entiteta je resnični objekt, kjer so podatki, povezani s takim objektom, shranjeni v tabeli. Primer takšnih predmetov so zaposleni, oddelki, študenti itd.
- Lastnosti: Atributi so značilnosti entitete, ki dajejo nekaj informacij o entiteti. Na primer, če so tabele entitete, so stolpci njihovi atributi.
Vrste običajnih obrazcev
# 1) 1NF (prvi običajni obrazec)
Po definiciji lahko entiteto, ki nima ponavljajočih se stolpcev ali podatkovnih skupin, označimo kot prvi običajni obrazec. V prvem običajnem obrazcu je vsak stolpec edinstven.
Spodaj je videti, kako bi bila videti naša tabela zaposlenih in oddelkov, če bi bila v prvi običajni obliki (1NF):
empNum | priimek | ime | deptName | deptCity | deptCountry |
---|---|---|---|---|---|
1001 | Andrews | Jack | Računi | New York | Združene države |
1002 | Schwatz | Mike | Tehnologija | New York | Združene države |
1009 | Pokal | Harry | HR | Berlin | Nemčija |
1007 | Harvey | Parker | Skrbnik | London | Združeno kraljestvo |
1007 | Harvey | Parker | HR | London | Združeno kraljestvo |
Tu so vsi stolpci tabel Zaposleni in Oddelki združeni v enega in povezave stolpcev, kot je deptNum, ni potrebna, saj so vsi podatki na voljo na enem mestu.
Toda tabela, kot je ta z vsemi zahtevanimi stolpci v njej, bi bila ne le težka za upravljanje, temveč tudi za izvajanje operacij in tudi neučinkovita s stališča shranjevanja.
# 2) 2NF (druga običajna oblika)
Po definiciji je entiteta, ki je 1NF, in eden od njenih atributov definiran kot primarni ključ, preostali atributi pa so odvisni od primarnega ključa.
Sledi primer, kako bi izgledala tabela zaposlenih in oddelkov:
Tabela zaposlenih:
empNum | priimek | ime |
---|---|---|
1001 | Andrews | Jack |
1002 | Schwatz | Mike |
1009 | Pokal | Harry |
1007 | Harvey | Parker |
1007 | Harvey | Parker |
Tabela oddelkov:
deptNum | deptName | deptCity | deptCountry |
---|---|---|---|
1. | Računi | New York | Združene države |
dva | Tehnologija | New York | Združene države |
3. | HR | Berlin | Nemčija |
4. | Skrbnik | London | Združeno kraljestvo |
Tabela EmpDept:
empDeptID | empNum | deptNum |
---|---|---|
1. | 1001 | 1. |
dva | 1002 | dva |
3. | 1009 | 3. |
4. | 1007 | 4. |
5. | 1007 | 3. |
Tu lahko opazimo, da smo tabelo v obliki 1NF razdelili na tri različne tabele. tabela Zaposleni je entiteta o vseh zaposlenih v podjetju in njeni atributi opisujejo lastnosti vsakega zaposlenega. Primarni ključ za to tabelo je empNum.
Podobno je tabela oddelkov entiteta o vseh oddelkih podjetja in njeni atributi opisujejo lastnosti vsakega oddelka. Primarni ključ za to tabelo je deptNum.
V tretji tabeli smo združili primarne ključe obeh tabel. Primarni ključi tabel Zaposleni in oddelki se v tej tretji tabeli imenujejo tuji ključi.
Če uporabnik želi izhod, podoben tistemu, ki smo ga imeli v 1NF, mora uporabnik združiti vse tri tabele s pomočjo primarnih ključev.
Vzorec poizvedbe bi bil videti, kot je prikazano spodaj:
SELECT empNum, lastName, firstName, deptNum, deptName, deptCity, deptCountry FROM Employees A, Departments B, EmpDept C WHERE A.empNum = C.empNum AND B.deptNum = C.deptNum WITH UR;
# 3) 3NF (tretja običajna oblika)
Po definiciji se tabela obravnava v tretji normalni obliki, če je tabela / entiteta že v drugi normalni obliki in so stolpci tabele / entitete neprehodno odvisni od primarnega ključa.
Razumejmo neprehodno odvisnost s pomočjo naslednjega primera.
Recimo tabelo z imenom, stranka ima spodnje stolpce:
Identifikacijska številka stranke - Primarni ključ, ki identificira edinstveno stranko
KupecZIP - Poštna številka kraja, v katerem kupec prebiva
CustomerCity - Mesto, v katerem prebiva stranka
V zgornjem primeru je stolpec CustomerCity odvisen od stolpca CustomerZIP, stolpec CustomerZIP pa je odvisen od CustomerID.
Zgornji scenarij se imenuje prehodna odvisnost stolpca CustomerCity od CustomerID, to je primarni ključ. Po razumevanju prehodne odvisnosti se zdaj pogovorimo o težavi s to odvisnostjo.
vprašanja in odgovori za intervju z ios za izkušene pdf
Možen je scenarij, ko se tabela neželeno posodobi za posodobitev CustomerZIP na poštno številko drugega mesta brez posodobitve CustomerCity, s čimer ostane baza podatkov v neskladnem stanju.
Da bi odpravili to težavo, moramo odstraniti prehodno odvisnost, ki bi jo lahko naredili z ustvarjanjem druge tabele, recimo tabele CustZIP, ki vsebuje dva stolpca, to je CustomerZIP (kot primarni ključ) in CustomerCity.
Stolpec CustomerZIP v tabeli Customer je tuji ključ CustomerZIP v tabeli CustZIP. To razmerje zagotavlja, da v posodobitvah ni nobene nepravilnosti, pri kateri se CustomerZIP posodablja, ne da bi spremenili CustomerCity.
# 4) Običajna oblika Boyce-Codd (3,5 običajna oblika)
Po definiciji se tabela šteje za normalno obliko Boyce-Codda, če je že v tretji normalni obliki in bi za vsako funkcionalno odvisnost med A in B A moral biti super ključ.
Ta definicija zveni nekoliko zapleteno. Poskusimo ga razbiti, da ga bolje razumemo.
- Funkcionalna odvisnost: Atributi ali stolpci tabele naj bi bili funkcionalno odvisni, kadar atribut ali stolpec tabele enolično identificira druge atribute ali stolpce iste tabele.
Na primer, stolpec empNum ali Številka zaposlenega enolično identificira druge stolpce, kot so Ime zaposlenega, Plača zaposlenega itd. v tabeli Zaposleni. - Super Key: En ključ ali skupino več ključev, ki bi lahko enolično identificirali eno vrstico v tabeli, lahko označimo kot Super ključ. Na splošno poznamo takšne tipke, kot so sestavljeni ključi.
Upoštevajmo naslednji scenarij, da bomo razumeli, kdaj je težava s tretjim običajnim obrazcem in kako rešuje Boyce-Coddov običajni obrazec.
empNum | ime | EmCity | deptName | deptHead |
---|---|---|---|---|
1001 | Jack | New York | Računi | Raymond |
1001 | Jack | New York | Tehnologija | Donald |
1002 | Harry | Berlin | Računi | Samara |
1007 | Parker | London | HR | Elizabeth |
1007 | Parker | London | Infrastruktura | Tom |
V zgornjem primeru zaposleni z empNum 1001 in 1007 delata v dveh različnih oddelkih. Vsak oddelek ima vodjo oddelka. Za vsak oddelek je lahko več predstojnikov. Tako kot pri računovodstvu sta Raymond in Samara vodja oddelkov.
V tem primeru sta empNum in deptName super ključa, kar pomeni, da je deptName glavni atribut. Na podlagi teh dveh stolpcev lahko vsako posamezno vrstico prepoznamo enolično.
DeptName je odvisno tudi od deptHead, kar pomeni, da je deptHead neprimeren atribut. To merilo onemogoča tabelo, da bi bila del BCNF.
Da bi to rešili, bomo razdelili tabelo na tri različne tabele, kot je navedeno spodaj:
Tabela zaposlenih:
empNum | ime | EmCity | deptNum |
---|---|---|---|
1001 | Jack | New York | D1 |
1001 | Jack | New York | D2 |
1002 | Harry | Berlin | D1 |
1007 | Parker | London | D3 |
1007 | Parker | London | D4 |
Tabela oddelka:
deptNum | deptName | deptHead |
---|---|---|
D1 | Računi | Raymond |
D2 | Tehnologija | Donald |
D1 | Računi | Samara |
D3 | HR | Elizabeth |
D4 | Infrastruktura | Tom |
# 5) Četrta običajna oblika (4 običajna oblika)
Tabela je po definiciji v četrti običajni obliki, če nima dveh ali več neodvisnih podatkov, ki opisujejo zadevno entiteto.
# 6) Peti običajni obrazec (5 običajni obrazec)
Tabelo je mogoče obravnavati v petem običajnem obrazcu le, če izpolnjuje pogoje za četrti običajni obrazec in ga je mogoče razdeliti na več tabel brez izgube podatkov.
Pogosta vprašanja in odgovori
V # 1) Kaj je normalizacija v zbirki podatkov?
Odgovor: Normalizacija zbirke podatkov je tehnika oblikovanja. S pomočjo tega lahko v bazi podatkov oblikujemo ali preoblikujemo sheme, da zmanjšamo odvečne podatke in odvisnost podatkov tako, da jih razbijemo v manjše in ustreznejše tabele.
V # 2) Katere so različne vrste normalizacije?
Odgovor: Sledijo različne vrste normalizacijskih tehnik, ki jih je mogoče uporabiti za oblikovanje shem baz podatkov:
- Prva običajna oblika (1NF)
- Druga običajna oblika (2NF)
- Tretji običajni obrazec (3NF)
- Običajna oblika Boyce-Codda (3,5NF)
- Četrta običajna oblika (4NF)
- Peta običajna oblika (5NF)
V # 3) Kaj je namen normalizacije?
Odgovor: Primarni namen normalizacije je zmanjšati odvečnost podatkov, tj.podatke je treba shraniti samo enkrat. S tem se izognemo kakršnim koli nepravilnostim podatkov, ki bi se lahko pojavile, ko poskušamo iste podatke shraniti v dve različni tabeli, vendar se spremembe uporabljajo samo za eno in ne za drugo.
V # 4) Kaj je denormalizacija?
Odgovor: Denormalizacija je tehnika za povečanje zmogljivosti baze podatkov. Ta tehnika v bazo podatkov doda odvečne podatke, v nasprotju z normalizirano bazo podatkov, ki odstrani odvečnost podatkov.
To se naredi v ogromnih zbirkah podatkov, kjer je izvajanje JOIN-a za pridobivanje podatkov iz več tabel drago opravilo. Tako so odvečni podatki shranjeni v več tabelah, da bi se izognili JOIN operacijam.
Zaključek
Do zdaj smo vsi že šli skozi tri obrazce za normalizacijo baze podatkov.
Teoretično obstajajo višje oblike normalizacij zbirk podatkov, kot je Boyce-Codd Normal Form, 4NF, 5NF. Vendar je 3NF pogosto uporabljena normalizacijska oblika v proizvodnih bazah podatkov.
Veselo branje !!
Priporočeno branje
- Testiranje zbirke podatkov z JMeter
- MongoDB Ustvari varnostno kopijo baze podatkov
- MongoDB Vadnica za ustvarjanje zbirke podatkov
- 10 najboljših orodij za oblikovanje zbirk podatkov za izdelavo kompleksnih podatkovnih modelov
- Uspešnost MongoDB: zmogljivost zaklepanja, napake strani in profiliranje baze podatkov
- Pregled odprtokodne relacijske baze podatkov Altibase
- MongoDB Database Profiler za spremljanje poizvedb in uspešnosti
- Kako preizkusiti bazo podatkov Oracle