Täielik funktsionaalne sõltuvus andmebaaside normaliseerimisest

Täisfunktsionaalne sõltuvus on andmebaasi normaliseerimise seisund, mis võrdub teise normaalse vormi (2NF) normaliseerimisstandardiga. Lühidalt tähendab see seda, et see vastab esimese normaalse vormi nõuetele (1NF) ja kõik mitte-võtme atribuudid sõltuvad täielikult primaarvõtist täiesti funktsionaalselt.

See ei ole nii keeruline kui see võib tunduda. Vaatame seda üksikasjalikumalt.

Esimese normaalse vormi kokkuvõte

Enne kui andmebaas võib täielikult funktsionaalselt sõltuvaks, peab see kõigepealt järgima esimest normaalset vormi .

Kõik see tähendab, et igal atribuudil peab olema üks aatomi väärtus.

Näiteks ei vasta järgmine tabel 1NF-ile, sest töötaja Tina on ühendatud kahe asukohaga, mõlemad neist ühes lahtris:

Esimene normaalse vormi mittevastavus
Töötaja Asukoht
John Los Angeles
Tina Los Angeles, Chicago

Selle disaini lubamine võib negatiivselt mõjutada andmete värskendusi ja sissekandeid. Selleks, et tagada 1NF-i vastavus, asetage tabel ümber, nii et kõik atribuudid (või veergudes) hoiaksid ühte väärtust:

Esimene normaalse vormi vastavus
Töötaja Asukoht
John Los Angeles
Tina Los Angeles
Tina Chicago

Kuid 1NF ei ole ikka veel piisav andmetega seotud probleemide vältimiseks.

Kuidas 2NF töötab, et tagada täielik sõltuvus

Et olla täiesti sõltuv, peavad kõik kandidaatriigi peamised atribuudid olema primaarvõti sõltuvad. (Pidage meeles, et kandidaatide võtme atribuut on mistahes võti (näiteks esmane või võõrvõti), mida kasutatakse andmebaasi kirje ainulaadsel tuvastamisel.

Andmebaasi disainerid kasutavad märki atribuutide sõltuvate suhete kirjeldamiseks:

Kui atribuut A määrab B väärtuse, kirjutame selle A -> B - see tähendab, et B on funktsionaalselt sõltuv A. Selles suhes määrab A väärtus B, B sõltub A-st.

Näiteks järgmiste töötajate sektsiooni tabelis on EmployeeID ja DeptID mõlemad kandidaadi võtmed: EmployeeID on tabeli peamine võti, samal ajal kui DeptID on võõrvõti.

Mis tahes muu atribuut - antud juhul EmployeeName ja DeptName - peavad selle väärtuse saamiseks sõltuma primaarvõtmest.

Töötajate osakonnad
Töötaja ID EmployeeName DeptID DeptName
Emp1 John Dept001 Rahandus
Emp2 Tina Dept003 Müük
Emp3 Carlos Dept001 Rahandus

Sel juhul ei ole tabel täielikult sõltuv, sest kuna EmployeeName sõltub primaarvõtmete EmployeeID-st, sõltub DeptName DeptID-ist selle asemel. Seda nimetatakse osaliseks sõltuvuseks .

Et see tabel vastaks 2NF-ile, peame andma andmed kaheks tabeliks:

Töötajad
Töötaja ID EmployeeName DeptID
Emp1 John Dept001
Emp2 Tina Dept003
Emp3 Carlos Dept001

Me eemaldame atribuudi DeptName tabelist Töötajad ja loome uue tabeli. Osakonnad :

Osakonnad
DeptID DeptName
Dept001 Rahandus
Dept002 Inimressursid
Dept003 Müük

Nüüd on tabelite vahelised suhted täielikult sõltuvad või 2NF-is.

Miks on täieliku sõltuvuse tähtsus

Andmebaasi atribuutide täielik sõltuvus aitab tagada andmete terviklikkust ja vältida andmete kõrvalekaldeid.

Näiteks kaaluge ülaltoodud jaotises olevat tabelit, mis jääb ainult 1NF-le. Siin on jällegi järgmine:

Esimene normaalse vormi vastavus
Töötaja Asukoht
John Los Angeles
Tina Los Angeles
Tina Chicago

Tinas on kaks kirja. Kui me värskendame seda, mõistsime, et on kaks, siis oleks tulemuseks vastuolulised andmed.

Või mis siis, kui me tahame selle tabeli töötaja juurde lisada, kuid me ei tea veel asukohta? Võib-olla ei lubata isegi uue töötaja lisamist, kui asukoha atribuut ei võimalda NULL väärtusi.

Kuid normaalseks tegemist on täieliku sõltuvusega mitte kogu pilt. Peate veenduma, et teie andmebaas on kolmandas normaalses vormis (3NF).