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

DBMS-i normaliseerimine

Normaliseerimine lühidalt

Normaliseerimine on andmebaasi struktureerimise protsess, et vähendada koondamise taset ja parandada järjepidevust. Lihtsamalt öeldes jagab see suured ja segased tabelid väiksemateks, hästi korraldatud tabeliteks. See tagab andmete loogilise salvestamise, muutes andmebaasid tõhusaks, hõlpsasti hooldatavaks ning dubleerimise ja vigadevabaks.

Mis on andmebaasi normaliseerimine?

Andmebaasi 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.

Miks me vajame normaliseerimist?

Ilma normaliseerimiseta muutuvad andmebaasid kiiresti ebajärjekindlaks ja üleliigseks. Probleemid nagu sisestamise anomaaliad (mittetäielikke kirjeid ei saa lisada), värskendusanomaaliad (muutused ühes kohas ei kajastu kõikjal) ja kustutamise anomaaliad (andmete kogemata kustutamine kustutab väärtuslikku teavet) esineb sageli. Normaliseerimine kõrvaldab need probleemid, tagades andmete terviklikkuse, vähendades dubleerimist ja lihtsustades andmebaasi haldamist.

Millised on andmebaasisüsteemide normaalvormide 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…

Millised on normaliseerimise 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 rühmitamistping andmeid loogilisel ja intuitiivsel viisil. See võib muuta andmebaasi arusaadavamaks ja kasutatavamaks, eriti inimestele, kes seda ise kujundanud ei ole.
  • 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.

Millised on 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!!!

KKK

Andmebaasihaldussüsteemide normaliseerimine on andmebaasi andmete korraldamise protsess, et vähendada koondamist ja parandada andmete terviklikkust. See hõlmab suurte tabelite jagamist väiksemateks, omavahel seotud tabeliteks ja nendevaheliste seoste määratlemist. See tagab andmete loogilise ja järjepideva salvestamise, muutes värskendamise, lisamise ja kustutamise tõhusamaks ning vältides samal ajal anomaaliaid.

Andmete normaliseerimine struktureerib andmebaasitabeleid korduste vältimiseks. Näiteks kliendi aadressi salvestamise asemel igasse tellimuskirjesse paigutab normaliseerimine kliendi andmed eraldi tabelisse „Kliendid“, mis on omavahel võtmega ühendatud. See vähendab koondamist – nii et kui aadress muutub, värskendatakse seda ainult üks kord. Tulemuseks on puhtam ja tõhusam andmebaas täpsete ja järjepidevate andmetega.

Normaliseerimise eesmärk on kõrvaldada üleliigsed andmed, minimeerida anomaaliaid ja tagada andmebaasi tõhusus. See lihtsustab hooldust kee poolt.ping seotud teabe korrastamine, salvestusruumi raiskamise vähendamine ja andmete järjepidevuse tagamine. Normaliseerimine parandab ka päringute jõudlust, struktureerides andmeid loogiliselt, võimaldades arendajatel ja kasutajatel pääseda juurde täpsele teabele ilma dubleerimise või vastuoluliste kirjetega tegelemata.

Kolmas normaalvorm (3NF) on normaliseerimise etapp, mis tagab, et iga mitte-võtme atribuut sõltub ainult primaarvõtmest ja mitte teistest mitte-võtme atribuutidest. Näiteks töötajate tabelis tuleks „Osakonna nimi” eraldada osakonna tabelisse, selle asemel et tugineda „Osakonna ID-le”. See väldib transitiivseid sõltuvusi, tagades andmehalduse täpsuse, järjepidevuse ja tõhususe.

kokkuvõte

  • 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

Võta see postitus kokku järgmiselt: