Puna funkcionalna zavisnost u normalizaciji baze podataka

Puna funkcionalna zavisnost je stanje normalizacije baze podataka, što je jednako normalizacijskom standardu Second Normal Form (2NF) . Ukratko, to znači da ispunjava zahteve prve normalne forme (1NF), a svi atributi koji nisu ključni u potpunosti su funkcionalno zavisni od primarnog ključa.

Ovo nije tako komplikovano kao što zvuči. Da pogledamo ovo detaljnije.

Sažetak prve obične forme

Pre nego što baza podataka može biti u potpunosti funkcionalno ovisna, mora se prvo pridržavati prve obične forme .

Sve to znači da svaki atribut mora imati jednu, atomsku vrednost.

Na primer, sledeća tabela nije u skladu sa 1NF, jer je zaposleni Tina povezan sa dve lokacije, obojica u jednoj ćeliji:

Prvi normalni oblik neusaglašenosti
Zaposleni Lokacija
John los angeles
Tina Los Anđeles, Čikago

Omogućavanje ovog dizajna može negativno uticati na ažuriranja podataka ili unose. Da biste osigurali 1NF saglasnost, preuređujte tablicu tako da svi atributi (ili ćelije stupaca) imaju jednu vrijednost:

Prvo usaglašavanje sa normalnim standardom
Zaposleni Lokacija
John los angeles
Tina los angeles
Tina Chicago

Ali 1NF još uvijek nije dovoljno da bi se izbegli problemi sa podacima.

Kako 2NF radi kako bi osigurala potpunu zavisnost

Da bi bili potpuno zavisni, svi atributi ključa koji nisu kandidati moraju zavisiti od primarnog ključa. (Zapamtite, atribut ključa kandidata je bilo koji ključ (na primjer, primarni ili inostrani ključ) koji se koristi za jedinstveno identifikovanje zapisa baze podataka.

Dizajneri baze podataka koriste notaciju za opis zavisnih odnosa između atributa:

Ako atribut A odredi vrednost B, napišemo ovo A -> B - što znači da je B funkcionalno zavisno od A. U ovom odnosu, A određuje vrijednost B, dok B zavisi od A.

Na primer, u sledećoj tabeli Odeljenja zaposlenih , EmployeeID i DeptID su oba ključa kandidata: EmployeeID je primarni ključ tablice dok je DeptID inostrani ključ.

Svaki drugi atribut - u ovom slučaju, EmployeeName i DeptName - mora zavisiti od primarnog ključa da bi dobio svoju vrijednost.

Službe za zapošljavanje
EmployeeID Ime zaposlenika DeptID DeptName
Emp1 John Dept001 Finansije
Emp2 Tina Dept003 Prodaja
Emp3 Carlos Dept001 Finansije

U ovom slučaju, tabela nije potpuno zavisna, jer, dok EmployeeName zavisi od primarnog ključa EmployeeID, DeptName umjesto toga zavisi od DeptID-a. Ovo se naziva delimična zavisnost .

Kako bi ova tabela bila usklađena sa 2NF-om, potrebno je razdvojiti podatke u dvije tabele:

Zaposleni
EmployeeID Ime zaposlenika DeptID
Emp1 John Dept001
Emp2 Tina Dept003
Emp3 Carlos Dept001

Uklonimo atribut DeptName iz tabele Zaposleni i kreiramo nove tabele Odeljenja :

Odeljenja
DeptID DeptName
Dept001 Finansije
Dept002 Ljudski resursi
Dept003 Prodaja

Sada su odnosi između tabela potpuno zavisni, ili u 2NF.

Zašto je puna zavisnost važna

Potpuna zavisnost između atributa baze podataka pomaže u osiguranju integriteta podataka i izbjegavanja anomalija podataka.

Na primer, smatrajte tabelu u gornjem odeljku koja se pridržava samo 1NF. Evo opet:

Prvo usaglašavanje sa normalnim standardom
Zaposleni Lokacija
John los angeles
Tina los angeles
Tina Chicago

Tina ima dva zapisa. Ako ažuriramo jedan, a ne shvatimo da postoje dva, rezultat bi bio neusaglašenost podataka.

Ili, šta ako želimo da dodamo zaposlenog u ovu stolu, ali još uvek ne znamo lokaciju? Možda ćemo biti onemogućeni čak i dodati novog zaposlenog ako atribut Lokacije ne dozvoljava vrijednosti NULL-a.

Puna zavisnost nije cela slika, ali kada je u pitanju normalizacija. Morate se uveriti da je vaša baza podataka u Trećem normalnom obliku (3NF).