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

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, ši lentelė neatitinka 1NF, nes darbuotojas Tina yra susietas su dviem vietomis: abu jie 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 vis dar 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 reikšmę, mes rašome A-> B - tai 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 esančioje lentelėje Darbuotojų departamentas yra EmployeeID ir DeptID, kurie yra kandidato raktas: EmployeeID yra pagrindinis pagrindinio raktas, 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 daline priklausomybe .

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

Pašaliname atributą DeptName iš lentelės Darbuotojai ir sukurkite 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).