Una dependència funcional completa és un estat de normalització de la base de dades que s'aproxima a l'estàndard de normalització de Second Normal Form (2NF) . En resum, això significa que compleix els requisits de First Normal Form (1NF), i tots els atributs que no siguin de la clau són totalment dependents funcionalment de la clau principal.
Això no és tan complicat com sona. Vegem això amb més detall.
Resum del primer formulari normal
Abans que una base de dades pugui dependre de manera funcional, primer ha de complir amb First Normal Form .
Tot això vol dir que cada atribut ha de tenir un valor atòmic únic.
Per exemple, la taula següent no compleix amb 1NF, ja que l'empleat Tina està enllaçat a dues ubicacions, totes dues d'una cel·la:
Empleat | Ubicació |
---|---|
John | Els angels |
Tina | Los Angeles, Chicago |
Permetre que aquest disseny pogués afectar negativament les actualitzacions de dades o les entrades. Per garantir el compliment de 1NF, reordeneu la taula perquè tots els atributs (o columnes) tinguin un valor únic:
Empleat | Ubicació |
---|---|
John | Els angels |
Tina | Els angels |
Tina | Chicago |
Però 1NF encara no és suficient per evitar problemes amb les dades.
Com funciona 2NF per garantir la dependència completa
Per ser totalment dependents, tots els atributs de claus no candidats han de dependre de la clau principal. (Recordeu que un atribut de clau candidat és qualsevol clau (per exemple, una clau principal o estrangera) que s'utilitza per identificar de forma exclusiva un registre de la base de dades.
Els dissenyadors de bases de dades utilitzen una notació per descriure les relacions depenents entre atributs:
Si l'atribut A determina el valor de B, escrivim aquest A -> B - el que significa que B depèn funcionalment de A. En aquesta relació, A determina el valor de B, mentre que B depèn de A.
Per exemple, en la següent taula de Departaments dels empleats , EmployeeID i DeptID són les dues claus candidates: EmployeeID és la clau principal de la taula mentre que el DeptID és una clau externa.
Qualsevol altre atribut, en aquest cas, EmployeeName i DeptName, ha de dependre de la clau principal per obtenir el seu valor.
EmployeeID | Nom d'empleat | DeptID | DeptName |
---|---|---|---|
Emp1 | John | Dept001 | Finances |
Emp2 | Tina | Dept003 | Vendes |
Emp3 | Carlos | Dept001 | Finances |
En aquest cas, la taula no depèn del tot perquè, mentre el EmployeeName depèn de la clau principal EmployeeID, el DeptName depèn, en canvi, del DeptID. Això s'anomena dependència parcial .
Per fer que aquesta taula s'ajusti a 2NF, necessitem separar les dades en dues taules:
EmployeeID | Nom d'empleat | DeptID |
---|---|---|
Emp1 | John | Dept001 |
Emp2 | Tina | Dept003 |
Emp3 | Carlos | Dept001 |
Treureem l'atribut DeptName de la taula Empleats i creeu una taula nova Departaments :
DeptID | DeptName |
---|---|
Dept001 | Finances |
Dept002 | Recursos humans |
Dept003 | Vendes |
Ara les relacions entre les taules són totalment dependents, o en 2NF.
La dependència completa és important
La dependència completa entre els atributs de la base de dades ajuda a garantir la integritat de les dades i evitar les anomalies de dades.
Per exemple, consideri la taula a la secció anterior que s'adhereix només a 1NF. Aquí està, de nou:
Empleat | Ubicació |
---|---|
John | Els angels |
Tina | Els angels |
Tina | Chicago |
Tina té dos registres. Si actualitzem un sense adonar-nos que hi ha dos, el resultat seria dades incongruents.
O, què passa si volem afegir un empleat a aquesta taula, però encara no coneixem la ubicació? Podríem evitar que, fins i tot, afegiu un nou empleat si l'atribut Location no permet els valors NULL.
La dependència total no és tota la imatge, però, quan es tracta de la normalització. Heu d'assegurar-vos que la vostra base de dades es troba en el Tercer formulari normal (3NF).