Pilnīga funkcionālā atkarība datu bāzes normalizācijā

Pilnīga funkcionālā atkarība ir datu bāzes normalizācijas stāvoklis, kas līdzinās otrās normālās formas (2NF) normalizācijas standartam. Īsi sakot, tas nozīmē, ka tas atbilst pirmās normālās formas prasībām (1NF), un visi ne-atslēgas atribūti pilnībā funkcionāli ir atkarīgi no primārās atslēgas.

Tas nav tik sarežģīti, kā izklausās. Apskatīsim to detalizētāk.

Pirmās Normālās formas kopsavilkums

Lai datubāze varētu pilnībā funkcionēt, tai vispirms jāatbilst pirmajai normālajai formai .

Tas viss nozīmē, ka katram atribūtam ir jābūt vienai, atomu vērtībai.

Piemēram, nākamā tabula neatbilst 1NF, jo darbinieks Tina ir saistīts ar divām vietām, abas no tām vienā šūnā:

Normas pirmās formas neatbilstība
Darbinieks Atrašanās vieta
Džons Losandželosa
Tina Losandželosa, Čikāga

Atļaujot šo dizainu varētu negatīvi ietekmēt datu atjauninājumus vai ierakstus. Lai nodrošinātu 1NF atbilstību, pārkārtojiet tabulu tā, lai visos atribūtos (vai kolonnu šūnās) būtu viena vērtība:

Pirmās Normālās formas atbilstība
Darbinieks Atrašanās vieta
Džons Losandželosa
Tina Losandželosa
Tina Čikāga

Bet 1NF joprojām nav pietiekami, lai izvairītos no problēmām ar datiem.

Kā 2NF darbojas, lai nodrošinātu pilnīgu atkarību

Lai pilnībā atkarīgi, visiem galvenajiem kritērijiem, kas nav kandidāti, jābūt atkarīgiem no primārās atslēgas. (Atcerieties, ka kandidāta galvenais atribūts ir jebkura atslēga (piemēram, primārā vai ārējā atslēga), ko izmanto, lai unikāli identificētu datu bāzes ierakstu.

Datu bāzes dizaineri izmanto apzīmējumu, lai aprakstītu atkarīgās attiecības starp atribūtiem:

Ja atribūts A nosaka B vērtību, mēs rakstām šo A -> B - tas nozīmē, ka B funkcionāli ir atkarīgs no A. Šajā sakarībā A nosaka B vērtību, bet B atkarīgs no A.

Piemēram, nākamajā tabulā Darbinieku nodaļas EmployeeID un DeptID ir abas kandidātu atslēgas: EmployeeID ir galda primārā atslēga, bet DeptID ir ārējā atslēga.

Jebkurš cits atribūts - šajā gadījumā EmployeeName un DeptName - ir atkarīgs no primārās atslēgas, lai iegūtu tā vērtību.

Darbinieku nodaļas
Darbinieka ID Darbinieka vārds DeptID DeptName
Emp1 Džons Dept001 Finanses
Emp2 Tina Dept003 Pārdošana
Emp3 Carlos Dept001 Finanses

Šajā gadījumā tabula nav pilnībā atkarīga, jo, lai gan EmployeeName ir atkarīgs no primārās atslēgas EmployeeID, DeptName atkarībā no tā ir DeptID. To sauc par daļēju atkarību .

Lai šī tabula atbilstu 2NF, mums ir jāsadala dati divās tabulās:

Darbinieki
Darbinieka ID Darbinieka vārds DeptID
Emp1 Džons Dept001
Emp2 Tina Dept003
Emp3 Carlos Dept001

Mēs noņemam DeptName atribūtu tabulā Darbinieki un izveidojam jaunu tabulu. Departamenti :

Nodaļas
DeptID DeptName
Dept001 Finanses
Dept002 Cilvēku resursi
Dept003 Pārdošana

Tagad attiecības starp tabulām ir pilnībā atkarīgas vai 2NF.

Kāpēc pilnīga atkarība ir svarīga?

Pilnīga atkarība starp datu bāzu atribūtiem palīdz nodrošināt datu integritāti un izvairīties no datu anomālijām.

Piemēram, apsveriet tabulu iepriekšējā sadaļā, kas attiecas tikai uz 1NF. Lūk, atkal:

Pirmās Normālās formas atbilstība
Darbinieks Atrašanās vieta
Džons Losandželosa
Tina Losandželosa
Tina Čikāga

Tinai ir divi ieraksti. Ja mēs atjaunināsim vienu, neaptverot, ka ir divi, rezultāts būtu neatbilstoši dati.

Vai arī, ja mēs vēlamies pievienot darbinieks šai tabulai, bet mēs vēl nezinām atrašanās vietu? Iespējams, mums nav atļauts pat pievienot jaunu darbinieku, ja atribūts Atrašanās vieta neatļauj NULL vērtības.

Tomēr pilnīga atkarība nav viss attēls, kad runa ir par normalizāciju. Jums ir jāpārliecinās, ka jūsu datubāze ir trešajā normālajā formā (3NF).