Skip to main content

Visiškai funkcinė priklausomybė duomenų bazių normalizavime

Anonim

Visiškai funkcinė priklausomybė yra duomenų bazės normalizavimo būsena, kuri prilygsta antrosios įprastos formos (2NF) normalizavimo standartui. Trumpai tariant, tai reiškia, kad jis atitinka Pirmosios įprastos formos reikalavimus (1NF), o visi ne raktažodžiai yra visiškai funkcionaliai priklausomi nuo pirminio rakto.

Tai nėra tokia sudėtinga, kaip gali atrodyti. Pažvelkime į tai išsamiau.

Pirmosios įprastinės formos santrauka

Kad duomenų bazė būtų visiškai funkcionali, ji pirmiausia turi atitikti pirmąją įprastinę formą.

Visa tai reiškia, kad kiekvienas atributas turi turėti vieną, atominę vertę.

Pavyzdžiui, pateikiama lentelė ne laikykitės 1NF, nes darbuotojas Tina yra susietas su dviem vietomis, abu iš jų vienoje ląstelėje:

Pirmojo normalaus formos neatitikimas
Darbuotojas Vieta
Jonas Los Andželas
Tina Los Andželas, Čikaga

Leisti, kad šis dizainas galėtų neigiamai paveikti duomenų atnaujinimus ar įrašus. Siekiant užtikrinti 1NF atitikimą, pertvarkykite lentelę taip, kad visi atributai (arba stulpelių langeliai) būtų vienos vertės:

Pirmasis įprastos formos atitikimas

Darbuotojas Vieta Jonas Los Andželas Tina Los Andželas Tina Čikaga

Tačiau 1NF nepakanka, kad būtų išvengta problemų su duomenimis.

Kaip veikia 2NF, kad užtikrintų visišką priklausomybę

Norėdami būti visiškai priklausomi, visi pagrindiniai raktažodžiai be kandidatų turi priklausyti nuo pirminio rakto. (Atminkite, kad pagrindinio atributo kandidatas yra bet kuris raktas (pavyzdžiui, pagrindinis arba užsienio raktas), naudojamas vienareikšmiškai identifikuoti duomenų bazės įrašą.

Duomenų bazių kūrėjai naudoja užrašą, kuris apibūdina priklausomus ryšius tarp atributų:

Jei atributas A nustato B vertę, mes rašome taiA -> B- reiškia, kad B funkciniu požiūriu priklauso nuo A. Šiame santykyje A nustato B reikšmę, o B priklauso nuo A.

Pavyzdžiui, toliau Darbuotojų skyriai lentelė, EmployeeID ir DeptID yra abiejų kandidatų raktas: EmployeeID yra pagrindinis lentelės stalas, o DeptID yra užsienio raktas.

Bet kuris kitas atributas - šiuo atveju "EmployeeName" ir "DeptName" - priklauso nuo pirminio rakto, kad gautų jo vertę.

Darbuotojų skyriai
Darbuotojo ID Darbuotojo vardas DeptID DeptName
Emp1 Jonas Dept001 Finansai
Emp2 Tina Dept003 Pardavimai
Emp3 Carlosas Dept001 Finansai

Šiuo atveju lentelė nėra visiškai priklausoma, nes, nors EmployeeName priklauso nuo pirminio rakto EmployeeID, DeptName priklauso DeptID vietoj. Tai vadinama dalinė priklausomybė .

Kad ši lentelė atitiktų 2NF, mes turime atskirti duomenis į dvi lenteles:

Darbuotojai
Darbuotojo ID Darbuotojo vardas DeptID
Emp1 Jonas Dept001
Emp2 Tina Dept003
Emp3 Carlosas Dept001

Mes pašaliname atributą DeptName iš Darbuotojai stalo ir sukurti naują lentelę Departamentai :

Departamentai
DeptID DeptName
Dept001 Finansai
Dept002 Žmogiškieji ištekliai
Dept003 Pardavimai

Dabar santykiai tarp lentelių yra visiškai priklausomi arba 2NF.

Kodėl visiškas priklausomybė yra svarbi

Visapusiška duomenų bazės atributų priklausomybė padeda užtikrinti duomenų vientisumą ir išvengti duomenų anomalijų.

Pavyzdžiui, apsvarstykite aukščiau esančioje lentelėje pateiktą lentelę, kuri tinka tik 1NF. Čia vėlgi:

Pirmasis įprastos formos atitikimas
Darbuotojas Vieta
Jonas Los Andželas
Tina Los Andželas
Tina Čikaga

Tina turi du įrašus. Jei mes atnaujinsime vieną, nesuvokdami, kad yra du, rezultatas būtų nenuoseklūs duomenys.

Arba, jei mes norime pridėti darbuotoją prie šios lentelės, bet mes dar nežinome vietos? Gali būti, kad negalėsite pridėti naujo darbuotojo, jei atributas Vietai neleidžia NULL vertės.

Vis dėlto visiškai nesikeičia, kai kalbama apie normalizavimą. Turite įsitikinti, kad jūsų duomenų bazė yra trečioje įprastoje formoje (3NF).