- Una relación estará en 3NF si está en 2NF y no contiene ninguna dependencia parcial transitiva.
- 3NF se utiliza para reducir la duplicación de datos. También se utiliza para lograr la integridad de los datos.
- Si no hay dependencia transitiva para los atributos no primos, entonces la relación debe estar en tercera forma normal.
Una relación está en tercera forma normal si cumple al menos una de las siguientes condiciones para cada dependencia de función no trivial X → Y.
- X es una súper clave.
- Y es un atributo principal, es decir, cada elemento de Y es parte de alguna clave candidata.
Ejemplo:
programa sencillo en Python
Tabla EMPLOYEE_DETAIL:
EMP_ID | EMP_NOMBRE | EMP_ZIP | EMP_ESTADO | EMP_CIUDAD |
---|---|---|---|---|
222 | Harry | 201010 | ARRIBA | Noida |
333 | Esteban | 02228 | A NOSOTROS | Bostón |
444 | Y | 60007 | A NOSOTROS | chicago |
555 | catalina | 06389 | Reino Unido | Norwich |
666 | John | 462007 | diputado | Bhopal |
Súper clave en la tabla anterior:
{EMP_ID}, {EMP_ID, EMP_NAME}, {EMP_ID, EMP_NAME, EMP_ZIP}....so on
Llave candidata: {EMP_ID}
Atributos no primos: En la tabla proporcionada, todos los atributos excepto EMP_ID no son primos.
Aquí, EMP_STATE y EMP_CITY dependen de EMP_ZIP y EMP_ZIP dependen de EMP_ID. Los atributos no principales (EMP_STATE, EMP_CITY) dependen transitivamente de la superclave (EMP_ID). Viola la regla de la tercera forma normal.
Es por eso que necesitamos mover EMP_CITY y EMP_STATE a la nueva tabla, con EMP_ZIP como clave principal.
Tabla EMPLEADO:
cómo determinar el tamaño del monitor
EMP_ID | EMP_NOMBRE | EMP_ZIP |
---|---|---|
222 | Harry | 201010 |
333 | Esteban | 02228 |
444 | Y | 60007 |
555 | catalina | 06389 |
666 | John | 462007 |
Tabla EMPLOYEE_ZIP:
EMP_ZIP | EMP_ESTADO | EMP_CIUDAD |
---|---|---|
201010 | ARRIBA | Noida |
02228 | A NOSOTROS | Bostón |
60007 | A NOSOTROS | chicago |
06389 | Reino Unido | Norwich |
462007 | diputado | Bhopal |