DBMS-i normaliseerimine: 1NF, 2NF, 3NF andmebaasi näide

Mis on andmebaasi normaliseerimine?

Normaliseerimine on andmebaasi kujundamise tehnika, mis vähendab andmete liiasust ja kõrvaldab ebasoovitavad omadused nagu sisestamise, värskendamise ja kustutamise anomaaliad. Normaliseerimisreeglid jagavad suuremad tabelid väiksemateks tabeliteks ja lingivad need seoste abil. SQL-i normaliseerimise eesmärk on kõrvaldada üleliigsed (korduvad) andmed ja tagada andmete loogiline salvestamine.

Leiutaja relatsiooniline mudel Edgar Codd pakkus välja andmete normaliseerimise teooria esimese normaalvormi kasutuselevõtuga ning jätkas teooria laiendamist teise ja kolmanda normaalvormiga. Later ta ühines Raymond F. Boyce'iga, et töötada välja Boyce-Coddi normaalvormi teooria.

DBMS-i tavavormide tüübid

Siin on SQL-i tavavormide loend:

  • 1NF (esimene tavavorm): Tagab, et andmebaasitabel on korraldatud nii, et iga veerg sisaldab aatomväärtusi (jagamatuid) ja iga kirje on kordumatu. See välistab korduvad rühmad, struktureerides seeläbi andmed tabeliteks ja veergudeks.
  • 2NF (teine ​​tavavorm): Toetub 1NF-ile Peame eemaldama üleliigsed andmed tabelist, mida rakendatakse mitmele reale. ja paigutades need eraldi tabelitesse. See nõuab, et kõik mittevõtmeatribuudid oleksid primaarvõtmes täielikult funktsionaalsed.
  • 3NF (kolmas tavavorm): Laiendab 2NF-i, tagades, et kõik võtmevabad atribuudid ei tööta mitte ainult primaarvõtmel täielikult, vaid on ka üksteisest sõltumatud. See välistab transitiivse sõltuvuse.
  • BCNF (Boyce-Coddi tavavorm): 3NF-i täiustus, mis käsitleb anomaaliaid, mida 3NF ei käsitle. See nõuab, et iga määraja oleks kandidaadivõti, mis tagab normaliseerimisreeglite veelgi rangema järgimise.
  • 4NF (neljas tavavorm): Käsitleb mitme väärtusega sõltuvusi. See tagab, et kirjes pole olemi kohta mitut sõltumatut mitme väärtusega fakti.
  • 5NF (viies tavavorm): Tuntud ka kui "projektsiooni-liitumise tavavorm" (PJNF), see puudutab teabe rekonstrueerimist väiksematest, erinevalt paigutatud andmeosadest.
  • 6NF (kuues tavavorm): Teoreetiline ja mitte laialdaselt rakendatud. See käsitleb ajalisi andmeid (ajaliste muutuste käsitlemine), lagundades tabeleid edasi, et kõrvaldada kogu mitteajaline liiasus.

Andmete normaliseerimise teooria aastal MySQL serverit arendatakse veel edasi. Näiteks on arutelud isegi 6th Tavaline vorm. Enamikus praktilistes rakendustes saavutab normaliseerimine aga kõige paremini 3rd Tavaline vorm. Normaliseerimise areng SQL-i teooriates on illustreeritud allpool.

Andmebaasi tavavormid
Andmebaasi tavavormid

Andmebaasi normaliseerimine näidetega

andmebaas Normaliseerimise näide on juhtumiuuringu abil kergesti mõistetav. Oletame, et videoteek haldab laenutatud filmide andmebaasi. Ilma andmebaasi normaliseerimiseta salvestatakse kogu teave ühte tabelisse, nagu allpool näidatud. Mõistame normaliseerimise andmebaasi normaliseerimisnäite ja lahendusega:

Andmebaasi normaliseerimine näitega

Siin näete Laenutatud filmide veerus on mitu väärtust. Liigume nüüd 1. tavavormide juurde:

Esimene tavaline vorm (1NF)

  • Iga tabeli lahter peaks sisaldama ühte väärtust.
  • Iga kirje peab olema kordumatu.

Ülaltoodud tabel 1NF-s

1NF näide

1NF reeglid

1NF näide DBMS-is

Enne kui jätkame, mõistame mõnda asja -

Mis on VÕTI SQL-is

A KEY SQL-is on väärtus, mida kasutatakse tabelis kirjete unikaalseks tuvastamiseks. SQL KEY on üks veerg või mitme veeru kombinatsioon, mida kasutatakse tabelis ridade või korteežide unikaalseks tuvastamiseks. SQL-võtit kasutatakse dubleeriva teabe tuvastamiseks ja see aitab luua seost mitme andmebaasi tabeli vahel.

Märkus. Tabeli veerge, mida EI KASUTATA kirje unikaalseks tuvastamiseks, nimetatakse võtmeta veergudeks.

Mis on primaarvõti?

Esmane võti

DBMS-i esmane võti

Esmane on ühe veeru väärtus, mida kasutatakse andmebaasikirje kordumatuks tuvastamiseks.

Sellel on järgmised atribuudid

  • A esmane võti ei saa olla NULL
  • Primaarvõtme väärtus peab olema kordumatu
  • Primaarvõtme väärtusi tuleks harva muuta
  • Primaarvõtmele tuleb uue kirje sisestamisel 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, kelle nimi on Robert Phil, kuid nad elavad erinevates kohtades.

Komposiitvõti andmebaasis

Komposiitvõti andmebaasis

Seetõttu nõuame kirje kordumatuks tuvastamiseks nii täisnime kui ka aadressi. See on liitvõti.

Liigume teisele normaalvormile 2NF

Teine tavaline vorm (2NF)

  • Reegel 1 – ole 1NF-is
  • Reegel 2 – ühe veeru esmane võti, mis ei sõltu funktsionaalselt ühestki kandidaatvõtme seose alamhulgast

On selge, et me ei saa edasi liikuda, et luua oma lihtne andmebaas 2-snd Normaliseerimisvorm, kui me ülaltoodud tabelit ei jaga.

2NF reeglid

2NF reeglid

Oleme jaganud oma 1NF tabeli kaheks tabeliks, nimelt. Tabel 1 ja tabel 2. Tabel 1 sisaldab teavet liikmete kohta. Tabel 2 sisaldab teavet laenutatud filmide kohta.

Oleme kasutusele võtnud uue veeru nimega Liikmesuse_id, mis on tabeli 1 primaarvõti. Kirjeid saab tabelis 1 liikmesuse ID abil unikaalselt tuvastada

Andmebaas – võõrvõti

Tabelis 2 on Membership_ID võõrvõti

Andmebaas – võõrvõti

Andmebaas – võõrvõti

Võõrvõti DBMS-is

Välisvõti viitab teise tabeli primaarvõtmele! See aitab teie tabeleid ühendada

  • Võõrvõtmel võib olla primaarvõtmest erinev nimi
  • See tagab, et ühe tabeli ridadel on vastavad read teises
  • Erinevalt esmasest võtmest ei pea need olema ainulaadsed. Enamasti nad seda ei ole
  • Võõrvõtmed võivad olla nullid, kuigi primaarvõtmed seda ei saa

Andmebaas – võõrvõti

Miks on vaja võõrvõtit?

Oletame, et algaja lisab tabelisse B kirje, näiteks

Miks on vaja võõrvõtit

Võõrvõtmesse saate sisestada ainult selliseid väärtusi, mis on olemas ematabeli kordumatu võtmes. See aitab kaasa viite terviklikkusele.

Ülaltoodud probleemi saab ületada, deklareerides liikmesuse ID tabelist 2 kui liikmelisuse ID välisvõtit tabelist 1

Kui nüüd keegi üritab liikmesuse ID väljale sisestada väärtust, mida ematabelis pole olemas, kuvatakse tõrge!

Mis on transitiivsed funktsionaalsed sõltuvused?

Transitiivne funktsionaalne sõltuvus on mittevõtmeta veeru muutmisel, võib põhjustada muude mittevõtmeliste veergude muutumise

Vaatleme tabelit 1. Mittevõtme veeru Täisnimi muutmine võib muuta Tervitust.

Transitiivsed funktsionaalsed sõltuvused

Liigume 3NF-i

Kolmas tavaline vorm (3NF)

  • Reegel 1 – ole 2NF-is
  • Reegel 2 – ei oma transitiivseid funktsionaalseid sõltuvusi

Oma 2NF tabeli teisaldamiseks 3NF-iks peame taas oma tabeli jagama.

3NF näide

Allpool on 3NF-i näide SQL-andmebaasis:

3NF näide

3NF näide

3NF näide

Oleme taas oma tabelid jaganud ja loonud uue tabeli, mis salvestab tervitusi.

Transitiivseid funktsionaalseid sõltuvusi pole ja seetõttu on meie tabel 3NF-is

Tabelis 3 on tervituse ID primaarvõti ja tabelis 1 on tervituse ID tabelis 3 võõrvõtmega.

Nüüd on meie väike näide tasemel, mida ei saa edasi lagundada, et saavutada DBMS-is kõrgemat normaalvormi tüüpi normaliseerimist. Tegelikult on see juba kõrgemates normaliseerimisvormides. Tavaliselt on keerukates andmebaasides vaja teha eraldi jõupingutusi andmete normaliseerimise järgmisele tasemele liikumiseks. Järgnevalt käsitleme aga lühidalt DBMS-i normaliseerimise järgmisi tasemeid.

Boyce-Coddi tavavorm (BCNF)

Isegi kui andmebaas on 3-srd Tavaline vorm, kuid kui sellel on rohkem kui üks, tekiks kõrvalekaldeid Kandidaat Võti

Mõnikord nimetatakse BCNF-i ka kui 3.5 Tavaline vorm.

Neljas tavavorm (4NF)

Kui ükski andmebaasi tabeli eksemplar ei sisalda kahte või enamat sõltumatut ja mitme väärtusega andmeid, mis kirjeldavad asjakohast olemit, siis on see 4.th Tavaline vorm.

Viies normvorm (5NF)

Tabel on 5-sth Tavaline vorm ainult siis, kui see on 4NF-is ja seda ei saa ilma andmete kadumiseta lagundada suvalisteks väiksemateks tabeliteks.

Pakutud kuues tavavorm (6NF).

6th Tavaline vorm ei ole standarditud, kuid andmebaasieksperdid arutavad seda juba mõnda aega. Loodetavasti on meil 6 jaoks selge ja standardiseeritud määratlusth Tavaline vorm lähitulevikus…

Tavalise vormi eelised

  • Andmete järjepidevuse parandamine: Normaliseerimine tagab, et iga andmeosa salvestatakse ainult ühte kohta, mis vähendab vastuoluliste andmete tõenäosust. Kui andmeid uuendatakse, tuleb neid ainult ühes kohas uuendada, tagades järjepidevuse.
  • Andmete liiasuse vähendamine: Normaliseerimine aitab kõrvaldada dubleerivad andmed, jagades need mitmeks omavahel seotud tabeliks. See võib säästa salvestusruumi ja muuta andmebaasi tõhusamaks.
  • Päringu toimivuse parandamine: Normaliseeritud andmebaasidest on sageli lihtsam päringuid teha. Kuna andmed on korraldatud loogiliselt, saab päringuid optimeerida nii, et need käiksid kiiremini.
  • Muutke andmed tähendusrikkamaks: Normaliseerimine hõlmab andmete rühmitamist viisil, mis on mõistlik ja intuitiivne. See võib muuta andmebaasi hõlpsamini mõistetavaks ja kasutatavaks, eriti inimestele, kes pole andmebaasi kujundanud.
  • Vähendage kõrvalekallete tõenäosust: Anomaaliad on probleemid, mis võivad ilmneda andmete lisamisel, värskendamisel või kustutamisel. Normaliseerimine võib vähendada nende kõrvalekallete tõenäosust, tagades andmete loogilise organiseerimise.

Normaliseerimise puudused

  • Suurenenud keerukus: Normaliseerimine võib viia keeruliste suheteni. Suurt hulka võõrvõtmetega tabeleid võib olla raske hallata, mis võib tekitada segadust.
  • Vähendatud paindlikkus: Rangete normaliseerimisreeglite tõttu võib nendele reeglitele mittevastavate andmete salvestamisel olla vähem paindlikkust.
  • Suurenenud salvestusnõuded: Kuigi normaliseerimine vähendab koondamist, võib olla vaja eraldada rohkem salvestusruumi, et mahutada täiendavaid tabeleid ja indekseid.
  • Toimivuse üldkulud: Mitme laua ühendamine võib jõudluse seisukohalt olla kulukas. Mida rohkem on andmed normaliseeritud, seda rohkem on vaja liitumisi, mis võib aeglustada andmete otsimise aega.
  • Andmete kadumise kontekst: Normaliseerimine jagab andmed eraldi tabeliteks, mis võib viia ärikonteksti kadumiseni. Seotud tabelite uurimine on vajalik andmeosa konteksti mõistmiseks.
  • Vajad ekspertteadmisi: Normaliseeritud andmebaasi juurutamine nõuab andmete, andmetevaheliste seoste ja normaliseerimisreeglite sügavat mõistmist. See nõuab ekspertteadmisi ja võib olla aeganõudev.

See on kõik SQL-i normaliseerimiseks!!!

Järeldus

  • Andmebaasi projekteerimine on ettevõtte süsteemi andmenõuetele vastava andmebaasihaldussüsteemi edukaks rakendamiseks ülioluline.
  • DBMS-i normaliseerimine on protsess, mis aitab luua kulutõhusaid ja paremate turvamudelitega andmebaasisüsteeme.
  • Funktsionaalsed sõltuvused on andmete normaliseerimise protsessi väga oluline komponent
  • Enamik andmebaasisüsteeme on normaliseeritud andmebaas kuni kolmandate tavavormideni DBMS-is.
  • Esmane võti identifitseerib unikaalselt tabelis olevad kirjed ja ei saa olla null
  • Võõrvõti aitab tabelit ühendada ja viitab primaarvõtmele