Veebirakendused

Sissejuhatus andmebaasi normaliseerimisse

30. oktoober 2021

Kui teil on järjekindlad, mitteliigsed ja seostatavad andmed andmebaasi on väga kasulik. Sel eesmärgil on andmebaasi normaliseerimine protsess viiakse läbi. Teame väga hästi, et andmebaas on süsteem, mis korrastab kõik andmed struktureeritult. Seega, andmebaasi normaliseerimine protsess võimaldab hallata andmebaaside andmeid hästi struktureeritud ja täpselt.

Sisukord

Mis on andmebaasi normaliseerimine?

The andmebaasi normaliseerimine protsess kõrvaldab andmete liiasus ja suurendab andmete terviklikkus . Andmete liiasus tähendab korduvaid andmeid. See võtab kettal suurema ruumi ja põhjustab kettamälu raiskamist. Kui ühes kohas olevaid andmeid muudetakse, tuleb neid muuta kõigis asukohtades, kus need ka poleks. Seetõttu ei ole üleliigsete ja korduvate andmete omamine andmebaasi tabelites teostatav.

Teine termin, andmete terviklikkus , tähendab andmete täielikkust ja järjepidevust. Andmebaasi andmed peavad olema täpsed ja sisukad. Seega kasutatakse andmete terviklikkuse ja mittekordavuse tagamiseks andmebaasi normaliseerimist.

Lisaks andmete liiasuse kõrvaldamisele ja andmete terviklikkuse parandamisele andmebaasi normaliseerimine protsess kõrvaldab mitmesugused andmebaasi anomaaliad, nagu ka sisestamine, kustutamine ja värskendamine. Andmebaasi anomaalia nõrgendab andmete terviklikkust.

Normaliseerimise peamine eesmärk on jagada andmebaasis olevad suuremad tabelid või seosed väiksemateks ja tutvustada nende vahelisi seoseid. Igal tabelil või seosel peaks olema üks atribuudi väärtus, mida nimetatakse aatomiväärtusteks. Andmebaasi tabelis peaksid olema ainult seostatavad andmed, mitte aga muud ebaolulised andmed.

Andmebaasi normaliseerimise eesmärgid

Andmebaasi normaliseerimisel veenduge, et saavutate järgmised eesmärgid:

  • Andmebaasis olevad andmed tuleks salvestada loogiliselt. Suuremad lauad on koondatud väiksemateks. Iga väiksem rühm peab peegeldama suurema rühma osa.
  • Andmete liiasustuleks eemaldada, kuna see võtab rohkem andmebaasiruumi.
  • Veenduge, et teie andmebaas oleks järjepidev. Mis tahes muudatused andmebaasis, nagu sisestamine, kustutamine ja värskendus, ei tohiks kahjustada andmete terviklikkust.
  • Kui samad andmed on erinevates kohtades, peate neid kõigis piirkondades muutma. Andmebaasi normaliseerimisel veenduge, et peate andmeid värskendama ainult ühes kohas.

Andmebaasi normaliseerimise kõrvalekalded

Sees andmebaasi haldamine süsteem (DBMS) on kolme erinevat tüüpi kõrvalekaldeid, nimelt sisestamine, kustutamine ja värskendamine. Need kolm kõrvalekallet mõjutavad andmete terviklikkuse põhimõtet.

img 617dd30c81f8b

Arutleme kõigi kolme anomaalia üle. Kuid vaatleme kõigepealt seost või tabelit Töötaja. Sellel on neli atribuuti, Emp_ID, Emp_Name, Emp_Add ja Ep_Dept, mis salvestavad töötajate andmeid.

Töötaja

Emp_IDEmp_NameEmp_LisaEmp_Dept
301JohnCaliforniaD01
301JohnCaliforniaD022
323SammyWashington DCD08
366NickChicagoD10
366NickChicagoD14

Ülaltoodud tabelis on salvestatud töötajate andmed. Kuid see ei ole normaliseeritud kujul. Kui tabel ei ole normaliseeritud, võib uute andmete huvitavate leidmisel, olemasolevate andmete kustutamisel või praeguste andmete värskendamisel tekkida mitmeid probleeme.

    Sisesta:

Sisestamise anomaalia ei võimalda kasutajatel andmebaasi uusi andmeid lisada. Selle põhjuseks on teatud konkreetsete andmete puudumine. Mõelge ülaltoodud töötajate suhtele. Kui ettevõttesse on lisandumas mõni uus töötaja ja talle ei ole määratud osakonda, ei saa selle töötaja andmeid tabelisse sisestada. Seda seetõttu, et me ei saa sisestada NULL-i Emp_Dept.

    Kustuta:

Teine anomaalia on kustutamise anomaalia. Sellisel juhul ei oleks andmete kustutamine võimalik, kuna see võib põhjustada andmete kadumise. Mõelge ülaltoodud töötajate tabelile. Oletame, et osakond D08 suletakse, kustutatakse Sammyga seotud andmed tabelist Töötaja. Seega kaotab ettevõte Sammy andmed, kuna ta töötab ainult ühes osakonnas.

    Värskendus:

Värskendusanomaalia on veel üks element, mis põhjustab andmete vastuolu. Värskendusanomaalia mõistmiseks võtame näite tabelist Töötaja. Mõelge töötajale Johnile, kes töötab D01 ja D022 osakondades. Kui soovite Johni aadressi muuta, peate värskendama mõlemat rida D01 ja D022; see võib kahjustada andmete terviklikkuse põhimõtet. Kui ühes reas aadressi muudetakse ja teine ​​rida jääb eelmisega samaks, lõpeb see uuendusanomaaliaga.

The andmebaasi normaliseerimine on kasulik kõigi ülaltoodud kolme anomaalia kõrvaldamiseks, mille tulemuseks on nõrk andmebaasitabel. Normaliseerimiseks on mitu reeglit või vormi. Enne kui sukeldume sügavamale normaliseerimisvormidesse, õpime esmalt tundma erinevaid võtmetüüpe andmebaasisüsteemis. Enne andmebaasi normaliseerimise õppimist peate teadma võtmete tüüpe.

Võtmed andmebaasis

Andmebaasi võtmed mängivad selles sisalduvate andmete tuvastamisel olulist rolli. Klahvide abil leiate tabelist kõik andmed kiiresti ja lihtsalt. Suured lauad on jagatud väiksemateks ning väiksemate laudade ühendamiseks kasutatakse võtmeid.

Vaata ka 20 parimat töövoohaldustarkvara andmebaasi normaliseerimine

Vaatame DBMS-is kasutatavaid erinevat tüüpi võtmeid.

    Esmane võti:

The esmane võti on tabeli atribuut, mis identifitseerib üheselt iga rea ​​või korteeži. Peate valima primaarvõtme, mis leiab tabelist kõik andmed unikaalselt.

Kaaluge suhte töötajat. Sellel on atribuudid nagu Emp_ID, Emp_Name, Emp_Add, Passport_Number ja License_Number. Töötaja seose esmane võti on Emp_ID, kuna see tuvastab unikaalselt iga töötaja andmed. Lisaks võivad passi_number ja litsentsi_number olla ka esmased võtmed, kuna need on iga töötaja jaoks ainulaadsed.

    Kandidaadi võti:

The kandidaadi võti mis tahes tabeli puhul on minimaalsete atribuutide komplekt ja see suudab tuvastada seose mis tahes rea unikaalselt. Ühe seose jaoks võib olla üks või mitu kandidaatvõtit.

Mõelge ülaltoodud töötaja suhtele. Nägime, et esmane võti on Emp_ID, mis on iga töötaja jaoks kordumatu ja kordumatu. Ülejäänud kaks atribuuti, Passport_Number ja License_Number, ei ole samuti korduvad. Seega võivad nad mõlemad olla kandidaatvõtmed.

    Super võti:

Nagu esmane võti ja kandidaadi võti identifitseerib iga korteeži unikaalselt, supervõti aitab leida ka tabeli kordumatu korteeži. Kandidaadivõti on supervõtme alamhulk. Supervõtmeid võib olla üks või mitu.

Supervõtmest selge ettekujutuse saamiseks kasutame sama töötaja suhet. Atribuut Emp_ID saab üheselt teada iga töötaja andmed. Atribuuti Emp_Name ei saa kasutada primaarvõtmena, kuna kahel töötajal võib olla sama nimi. Kuid Emp_ID ja Emp_Name kombinatsioon võib leida töötaja andmed unikaalselt. Seega (Epm_ID, Emp_Name) toimib töötaja suhte supervõtmetena.

Passprt_Number ja License_Number on ka töötaja suhte supervõtmed.

    Välisvõti:

Välisvõti erineb ülaltoodud kolmest võtmest üsnagi. Seda kasutatakse kahe suhte vahelise ühenduse loomiseks. Vaatleme kahte seost A ja B. Oletame, et mis tahes atribuut relatsioonis A on relatsiooni B primaarvõti; seda atribuuti nimetatakse välisvõtmeks.

Võõrvõtme kontseptsiooni mõistmiseks vaatame lihtsat näidet. Võtame näiteks ettevõtte töötajad. Iga töötaja on määratud erinevatesse osakondadesse. Seetõttu kasutame kahte suhet: töötaja ja osakond.

Me määratleme töötajate suhted kui töötaja ( Emp_ID , Emp_Name, Passport_Number, License_Number, Dept_ID) ja osakonna seos osakonnana ( Osakonna_ID , osakonna_nimi).

Töötaja seoses on Emp_ID primaarvõti, samas kui Dept_ID on osakonna seose primaarvõti. Atribuut Dept_Id on üks atribuut suhetes Töötaja, mis on osakonna seose primaarvõti. Seega toimib Dept_ID välisvõtmena.

    Komposiitvõti:

Komposiitvõti on atribuutide rühm, mis leiab seosest ainulaadselt väga töötaja andmed. Liitvõti on kahe ja enam kui kahe atribuudi kombinatsioon.

Ülaltoodud töötajate suhetest Emp ( Emp_ID , Emp_Name, Passport_Number, License_Number), liitvõti on (Emp_name, Emp_ID).

Enne andmete normaliseerimise vormide loomist on veel üks mõiste, mida peate õppima, funktsionaalsed sõltuvused koos võtmetüüpidega. Andke meile üksikasjalikult teada funktsionaalsed sõltuvused.

Funktsionaalsed sõltuvused andmebaasis

E.F. Codd töötas välja funktsionaalse sõltuvuse kontseptsiooni, et vältida või kõrvaldada üleliigseid andmeid. Funktsionaalne sõltuvus on suhe sama seose mis tahes kahe atribuudi või veeru vahel. Teisisõnu, üks atribuut leiab kordumatult teise atribuudi. Mõlemad atribuudid kuuluvad samasse seosesse.

Näiteks vaadake sama tabeli kahte veergu A ja B. Funktsionaalne sõltuvus eksisteerib A ja B vahel ainult siis, kui veerg A leiab unikaalselt veeru B. Seda kujutatakse kui A -> B ja loetakse välja kui B on funktsionaalselt sõltuv A-st. Võite viidata A-le kui determinandile ja B-le kui sõltuvale .

Funktsionaalseid sõltuvusi on erinevat tüüpi. Vaatame siin mõnda neist funktsionaalsetest sõltuvustest.

    Triviaalne funktsionaalne sõltuvus:

Vaatleme sama seose kahte atribuuti A ja B. Triviaalne funktsionaalne sõltuvus kehtib ainult siis, kui B on A alamhulk.

A -> B, kui B on A alamhulk.

Mõelge töötajate suhtele. Võtke kaks atribuuti, Emp_ID ja Emp_Name. Atribuut Emp_Id on funktsionaalselt sõltuv parameetritest {Emp_ID, Emp_Name}.

{Emp_ID, Emp_Name} -> Emp_ID

Siin on Emp_ID parameetri {Emp_ID, Emp_Name} alamhulk. Seega on {Emp_ID, Emp_Name} -> Emp_ID triviaalne funktsionaalne sõltuvus.

    Mittetriviaalne funktsionaalne sõltuvus:

Mittetriviaalne funktsionaalne sõltuvus on vastand triviaalsele funktsionaalsele sõltuvusele. Võtke kaks sama seose veergu, P ja Q. Mittetriviaalne funktsionaalne sõltuvus kehtib, kui Q ei ole P alamhulk.

P -> Q, kui Q ei ole P alamhulk

Kui P ristmik Q on NULL, siis on see täielik mittetriviaalne funktsionaalne sõltuvus.

Mõelge töötajate seose kolmele veerule Emp_ID, Emp_Name ja Emp_Add.

Vaata ka 15 parimat Windowsi remonditööriista

Emp_ID -> Emp_Name

Ülaltoodud sõltuvus on mittetriviaalne funktsionaalne sõltuvus, kuna Emp_Name ei ole Emp_ID alamhulk.

    Transitiivne funktsionaalne sõltuvus:

Transitiivne funktsionaalne sõltuvus hõlmab kahte erinevat funktsionaalset sõltuvust. See moodustub kaudselt, kaasates kaks sõltuvust. Vaatleme sama tabeli kolme atribuuti A, B ja C. Triviaalne sõltuvus A -> C kehtib, kui

  • A -> B
  • B-l ei ole A-d
  • B -> C

Mõelge õpilaste tabelile. Võtke kolm veergu: Stud_ID, Stud_Name ja Stud_Age. Transitiivne funktsionaalne sõltuvus Stud_ID -> Stud_Age hoid, kui

  • Stud_Id -> Stud_Name
  • Stud_Name ei sisalda Stud_Id.
  • Tõu_nimi -> Tõu_vanus

Seega, kui teame õpilase ID-d, saame teada tema vanuse.

    Mitme väärtusega sõltuvus:

Mis tahes funktsionaalse sõltuvuse ühe determinandi jaoks on kaks või enam ülalpeetavat. Mõelge funktsionaalsele sõltuvusele X -> Y. Mitme väärtusega sõltuvuses on iga X jaoks mitu Y väärtust.

Mitme väärtusega sõltuvuse rahuldamiseks peaks relatsioonis olema vähemalt kolm atribuuti. Näiteks R(X, Y, Z). Kui X ja Y vahel on mitme väärtusega funktsionaalne sõltuvus, peaksid Y ja Z atribuudid olema üksteisest sõltumatud.

Oleme näinud kõiki olulisi elemente, mis on vajalikud selle mõistmiseks andmebaasi normaliseerimine . Liigume nüüd põhiteema poole andmebaasi normaliseerimine vormid.

    Sõltuvusega liitumine:

Vaatleme seost R, millel on A, B, C ja D atribuudid. Relatsioon R jaotatakse kaheks ülejäänud relatsiooniks, R1 ja R2, kus R1-l on atribuudid A, B ja C ning R2-l C- ja D-atribuudid. Kui ühendame R1 ja R2 ühise atribuudi C abil ja saadud seos on sama, mis R, siis liituda sõltuvusega on olemas.

The liituda sõltuvusega nimetatakse kadudeta, kui seose atribuudid, mis tulenevad pärast liitumist, on samad, mis R atribuudid.

Andmebaasi normaliseerimise erinevad vormid

Mitmed vormid andmebaasi normaliseerimine on välja töötatud andmete liiasuse kõrvaldamiseks ja täiustamiseks andmete terviklikkus . Järgmised on erinevad andmebaasi normaliseerimise vormid koos nende esinemisjuhtumitega.

andmebaasi normaliseerimine
    Esimene tavavorm (1NF):

Esimene vorm andmebaasi normaliseerimine on esimene normaalne vorm. Andmebaasi seos on esimesel normaalkujul ainult siis, kui kõigil selle atribuutidel on üks või aatomväärtus. Ükski tabeli atribuut ei tohi sisaldada mitut väärtust. Vaatame näidet, kuidas tabel vastab esimesele normaalvormile.

Kaaluge töötaja tabelit, mille atribuutidena on Emp_ID, Emp_Name, Emp_Add ja Emp_Mobile_Number.

Töötaja

Emp_IDEmp_NameEmp_LisaEmp_Mobile_Number
E01JohnNew Delhi8389097676
E02MichelleMumbai7878689878
E03SamRanchi98765432197656463686
E04OliverKolkata9087654547

Ülaltoodud tabel ei ole esimesel normaalkujul (1NF); Töötajana on Samil kaks mobiilinumbrit. Seega ei vasta ülaltoodud tabel esimesele normaalvormile. Esimene normaalvorm väidab, et igal atribuudil peab olema aatomväärtus. Seetõttu peame ülaltoodud tabeli tegema esimesel normaalkujul.

Töötaja1

Emp_IDEmp_NameEmp_LisaEmp_Mobile_Number
E01JohnNew Delhi8389097676
E02MichelleMumbai7878689878
E03SamRanchi9876543219
E03SamRanchi7656463686
E04OliverKolkata9087654547

Ülaltoodud seos Töötaja1 on esimesel normaalkujul, kuna igal atribuudil on üks väärtus.

Enne teise normaalvormi alustamist peate teadma atribuute, mis ei ole alg- ja algvormid. Peamine atribuut on see, mis esineb kandidaatvõtmes. Ja mittealgne atribuut on see, mida kandidaatvõtmes pole.

    Teine tavavorm (2NF):

Teine andmebaasi normaliseerimine vorm on teine ​​normaalvorm. Iga andmebaasi seos või tabel vastab teisele normaalvormile, kui see vastab järgmistele tingimustele:

  • Tabel peab vastama esimesele normaalvormile.
  • Tabeli mittealgne atribuut ei tohiks sõltuda kandidaatvõtme õigest alamhulgast.

Teise tavavormi kohta saate selge ettekujutuse pärast alloleva näite vaatamist.

Mõelge seosele Teacher, mille atribuutidena on Teacher_Id, Subject ja Teacher_Age. Tabel on järgmine:

Õpetaja

Õpetaja_IDTeemaÕpetaja_vanus
T01Java35
T01Andmestruktuurid35
T02Python35
T03Andmestruktuurid40
T03DBMS40

Siin on kandidaatvõtmed {Teacher_ID, Subject}, mis leiab kordumatult õpetajate andmed. Kuna atribuut Teacher_Age ei ole kandidaadivõtmes, serveritakse seda mittealgatava atribuudina.

Pärast ülaltoodud seose vaatamist võime järeldada, et tabel vastab esimesele normaalvormile andmebaasi normaliseerimine . Iga atribuut on ühe väärtusega. Kuid see ei ole teisel normaalkujul. Iga õpetaja vanuse saame tuvastada ainult atribuudi Teacher_ID kaudu. Kuna Teacher_Age on mittealgne atribuut ja Teacher_ID on kandidaadivõtme õige alamhulk, rikub see 2NF-reeglit.

Ülaltoodud seose muutmiseks teisel normaalkujul peame selle jagama kaheks tabelist järgmiselt:

Vaata ka 16 asukohaparandust pole iPhone'i probleemi korral saadaval

Õpetaja_vanus

Õpetaja_IDÕpetaja_vanus
T0135
T0235
T0340

Teema

Õpetaja_IDTeema
T01Java
T01Andmestruktuurid
T02Python
T03Andmestruktuurid
T03DBMS

Ülaltoodud kaks seost on teisel normaalkujul.

    Kolmas tavavorm:

Kolmas tavavorm on pesa andmebaasi normaliseerimine vormi. Mis tahes seost peetakse kolmandas normaalses, kui see vastab järgmistele tingimustele:

  • Seos peaks vastama teisele normaalvormile (2NF).
  • Ühelgi mitteprime-atribuudil ei tohiks olla transitiivset funktsionaalset sõltuvust supervõtmest.

Saate määratleda ka kolmanda normaalvormi andmebaasi normaliseerimine kuna tabel peaks olema 2NF-is ja funktsionaalne sõltuvus X -> Y peaks järgima ühte järgmistest tingimustest:

  • X peaks olema suhte ülivõti.
  • Y peaks olema seose algatribuut.

Vaatame, kuidas tabel vastab kolmandale normaalvormile. Mõelge töötajate suhtele, millel on Emp_ID, Emp_Name, Emp_Zip, Emp_State, Emp_City ja Emp_District. Seda seost kujutatakse järgmiselt:

Töötaja

Emp_IDEmp_NameEmp_ZipEmp_StateEmp_CityEmp_District
E01John267778MaharashtraKalyanMumbai
E02Sam234567Tamil NaduChennaiM-City
E06Johnny278967UttarakhandPauriBhagwan
E07Roos209876Tamil NaduChennaiUrrapakkam
E08Steve215647Madhya PradeshGwaliorRatan

Töötaja seose supervõtmed on {Emp_ID}, {Emp_ID, Emp_Name}, {Emp_ID, Emp_Name, Emp_Zip} ja paljud teised. Kandidaadivõti on {Emp_ID}. Seega on EMP_ID peamine atribuut ja kõik muud atribuudid, mis ei ole esmased.

Näete, et kolm atribuuti Emp_State, Emp_City ja Emp_District sõltuvad funktsionaalselt atribuudist Emp_Zip. Postinumbri leiate atribuudi Emp_ID abil. Seega Emp_Zip sõltub Emp_ID-st.

Kolm atribuuti Emp_State, Emp_City ja Emp_District ei ole esmatähtsad atribuudid. Need sõltuvad kaudselt atribuudist Emp_ID, mis rikub 3NF reegleid. Selleks, et töötaja seos vastaks kolmandale normaalvormile (3NF), peame tabeli jaotama väiksemateks tabeliteks, nagu allpool:

Töötaja ID

Emp_IDEmp_NameEmp_Zip
E01John267778
E02Sam234567
E06Johnny278967
E07Roos209876
E08Steve215647

Töötaja_Zip

Emp_ZipEmp_StateEmp_CityEmp_District
267778MaharashtraKalyanMumbai
234567Tamil NaduChennaiM-City
278967UttarakhandPauriBhagwan
209876Tamil NaduChennaiUrrapakkam
215647Madhya PradeshGwaliorRatan

Ülaltoodud kaks tabelit on kolmandal normaalkujul.

    Boyce Coddi tavavorm (BCNF):

Boyce Codd Tavaline vorm andmebaasi normaliseerimine on 3NF-i laiendatud versioon. Seda nimetatakse 3.5NF-ks. Iga tabel või seos järgib BCNF-i, kui sellel on järgmised tingimused:

  • Seos peab olema kolmandal normaalkujul (3NF).
  • Iga seose funktsionaalse sõltuvuse A -> B korral peaks A olema supervõti.

Saate selgelt mõista BCNF-i kontseptsiooni mitme ettevõtte osakonnas töötavate töötajate näite kaudu. Kaaluge töötajate seost, mille atribuutidena on Töötaja ID, Töötajate_kodakondsus, Töötajate_osakond, Osakonna_tüüp, Töötajate_arv. Seosel on järgmised väärtused:

Töötaja

Emp_IDEmp_NationalalityEmp_osakondOsakonna_tüüpTöötajate arv
E01IndiaanlaneTootmineD01250
E01IndiaanlaneJuhtimineD02300
E02AmeerikaTehniline abiD03400
E02AmeerikaostmaD04450

Ülaltoodud seose kandidaat on {Emp_ID, Emp_Dept}. Üksik Emp_ID atribuut ei saa anda osakonna teavet ega Emp_Dept töötaja teavet. Seega ei vasta ülaltoodud seos BCNF-ile. Ülaltoodud tabeli koostamiseks BCNF-is jagage see kolmeks tabeliks järgmiselt:

Töötaja_kodakondsus

Emp_IDEmp_Nationalality
E01Indiaanlane
E02Ameerika

Siin on Emp_ID kandidaadivõti. Funktsionaalne sõltuvus on Emp_ID -> Emp_Nationality. Seega on see BCNF-is.

Töötaja_osakond

Emp_osakondOsakonna_tüüpTöötajate arv
TootmineD01250
JuhtimineD02300
Tehniline abiD03400
ostmaD04450

Siin on Emp_Dept kandidaadivõti ja funktsionaalne sõltuvus on {Emp_Dept -> Dept_Type, No_of_Employees}. Seetõttu vastab ülaltoodud seos ka BCNF-ile.

Töötaja_ID_osakond

Emp_IDEmp_Dept
E01Tootmine
E01Juhtimine
E02Tehniline abi
E02ostma

Selle seose jaoks on Emp_ID ja Emp_Dept mõlemad kandidaatvõtmed.

    Neljas tavavorm (4NF):

Oleme ülaltoodud jaotises näinud mitme väärtusega sõltuvust. Väidetavalt on tabel neljandal normaalkujul, kui see sisaldab kõiki alltoodud tingimusi:

  • Suhe peaks vastama Boyce Coddi tavavormile.
  • Tabeli atribuutide vahel ei tohiks olla mitme väärtusega sõltuvusi.

Neljandast normaalvormist räägime õpilaste seose abil. Õpilaste seosel on kolm atribuuti. Stud_ID, Stud_Course ja Stud_Hobby. Tabeli väärtused on järgmised:

Õpilased

Stud_IDStud_KursusStud_Hobby
S01MatemaatikaHoki
S01FüüsikaTennis
S02ProgrammeerimineHoki
S02KeemiaTennis

Ülaltoodud seos ei ole neljandal normaalkujul (4NF), kuna sellel on mitme väärtusega sõltuvused. Atribuudid Stud_Course ja Stud_Hobby sõltuvad atribuudist Stud_ID, mis lõpeb mitme väärtusega sõltuvusega. Seetõttu peame ülaltoodud seose loomiseks 4NF-is jagama suhte kaheks erinevaks suhteks järgmiselt:

Õpilased_Kursus

Stud_IDStud_Kursus
S01Matemaatika
S01Füüsika
S02Programmeerimine
S02Keemia

Õpilased_Hobby

Stud_IDStud_Hobby
S01Hoki
S01Tennis
S02Hoki
S02Tennis

Ülaltoodud kaks seost on neljandal normaalkujul.

    Viies tavaline vorm:

Teine andmebaasi normaliseerimine vorm on viies normaalvorm. Seda nimetatakse ka projektiga liitumise tavavormiks (PJ/NF). Iga seos vastab viiendale normaalvormile, kui see vastab järgmistele tingimustele:

  • Tabel on neljandal normaalkujul (4NF).
  • Liitumissõltuvusi ei tohiks olla ja suhete ühendamine peaks olema kadudeta.

Viienda normaalvormi mõiste mõistmiseks näeme näidet teaduskonna seosest.

õppejõud

Fac_SubjectFac_NameFac_Sem
ArvutiteadusJohnSem 1
ArvutiteadusOliverSem 1
Elektroonika ja telekommunikatsioonOliverSem 1
Elektroonika ja telekommunikatsioonSteveSem 2
MehaanilineStephenSem 1

Teaduskonna seos ei vasta viiendale normaalvormile (5NF). Teaduskonna seose viiendaks normaalkujuks muutmiseks jagage see kolmeks erinevaks suhteks, nagu allpool näidatud:

Teaduskond1

Fac_SemFac_Subject
Sem 1Arvutiteadus
Sem 1Elektroonika ja telekommunikatsioon
Sem 1Mehaaniline
Sem 2Elektroonika ja telekommunikatsioon

Teaduskond2

Fac_SemFac_Name
Sem 1John
Sem 1Oliver
Sem 1Oliver
Sem 2Steve
Sem 1Stephen

Teaduskond3

Fac_SubjectFac_Name
ArvutiteadusJohn
ArvutiteadusOliver
Elektroonika ja telekommunikatsioonOliver
Elektroonika ja telekommunikatsioonSteve
MehaanilineStephen

Kõik ülaltoodud kolm seost on viiendal normaalkujul.

Järeldus

The andmebaasi normaliseerimine protsess on äärmiselt kasulik korduvate andmete kõrvaldamiseks ja andmete terviklikkuse põhimõtte parandamiseks. Lisaks säästab see kettaruumi, eemaldades andmebaasist üleliigsed andmed. Seda postitust läbides mõistate teistmoodi andmebaasi normaliseerimine vormid ja funktsionaalse sõltuvuse tüübid.

Võtmed on andmebaasi peamised elemendid. Need võimaldavad kasutajatel andmeid kiiresti ja tõhusalt hankida. Käsitlesime võtmetüüpe, primaarvõtit, kandidaatvõtit, supervõtit, võõrvõtit ja liitvõtit.

Selle artikli sisu annab teile lühikese ülevaate erinevate funktsionaalsete sõltuvuste tüüpide kohta. Oleme käsitlenud kuut erinevat tüüpi andmebaasi normaliseerimine vormid, 1NF, 2NF, 3NF, BCNF, 4NF ja 5NF ning nende vastavad näited. Loodame, et leiate kogu olulise teabe, mis on vajalik selle uurimiseks andmebaasi normaliseerimine vormid.