SlideShare una empresa de Scribd logo
1 de 4
El proceso de normalización de bases de datos
relacionales
La normalización de bases de datos relacionales toma un esquema relacional y le aplica un conjunto de
técnicas para producir un nuevo esquema que representa la misma información pero contiene menos
redundancias y evita posibles anomalías en las inserciones, actualizaciones y borrados.
Breve recordatorio del modelo (formal) relacional
El modelo relacional de bases de datos se basa en un modelo formal especificado de acuerdo a la teoría
de conjuntos. Una base de datos relacional puede considerarse como un conjunto de relaciones o tablas
de la forma R(A1, ..., An), donde R es el nombre de la relación, que se define por una serie de
atributos Ai.
Sobre las tablas relacionales se pueden definir diferentes restricciones. La integridad de entidad es una
restricción que nos indica que cada entidad representada por una tupla tiene que ser diferente de las
demás en su relación, es decir, debe haber algunos atributos cuyos valores identifiquen unívocamente las
tuplas. La integridad referencial indica que una clave ajena solo debe contener valores que o bien sean
nulos, o bien existan en la relación referenciada por la clave ajena.
El proceso de normalización
El proceso de normalización consiste en comprobar en secuencia si el esquema original está en 1FN, 2FN y
3FN, analizando las dependencias funcionales en cada paso.
Un ejemplo completo
Tenemos una empresa pública donde los puestos de trabajo están regulados por el Estado, de modo que
las condiciones salariales están determinadas por el puesto. Se ha creado el siguiente esquema relacional
EMPLEADOS(nss, nombre, puesto, salario, emails) con nss como clave primaria.
nss nombre puesto salarioemails
111Juan Pérez Jefe de Área 3000 juanp@ecn.es; jefe2@ecn.es
222José SánchezAdministrativo1500 jsanchez@ecn.es
333Ana Díaz Administrativo1500 adiaz@ecn.es; ana32@gmail.com
... ... ... ... ...
TABLE 1
Primera forma normal (1FN)
Una tabla está en 1FN si sus atributos contienen valores atómicos. En el ejemplo, podemos ver que el
atributo emails puede contener más de un valor, por lo que viola 1FN.
En general, tenemos una relación R con clave primaria K. Si un atributo M viola la condición de 1FN,
tenemos dos opciones.
Solución 1: duplicar los registros con valores repetidos
En general, esta solución pasa por sustituir R por una nueva relación modificada R', en la cual:
El atributo M que violaba 1FN se elimina.
Se incluye un nuevo atributo M' que solo puede contener valores simples, de
modo que si R'[M'] es uno de los valores que teníamos en R[M],
entonces R'[K] = R[K]. En otras palabras, para una tupla con n valores
duplicados en M, en la nueva relación habrá n tuplas, que sólo varían en que
cada una de ellas guarda uno de los valores que había en M.
La clave primaria de R' es (K, M'), dado que podrá haber valores
de K repetidos, para los valores multivaluados en M.
Siguiendo el ejemplo, tendríamos el siguiente esquema para la nueva tabla EMPLEADOS'(a) con clave
primaria (nss, email):
nss nombre puesto salarioemail
111Juan Pérez Jefe de Área 3000 juanp@ecn.es
111Juan Pérez Jefe de Área 3000 jefe2@ecn.es
222José SánchezAdministrativo1500 jsanchez@ecn.es
333Ana Díaz Administrativo1500 adiaz@ecn.es
333Ana Díaz Administrativo1500 ana32@gmail.com
... ... ... ... ...
TABLE 2
Solución 2: separar el atributo que viola 1FN en una tabla
En general, esta solución pasa por:
sustituir R por una nueva relación modificada R' que no contiene el atributo M.
Crear una nueva relación N(K, M'), es decir, una relación con una clave ajena K referenciando R',
junto al atributo M', que es la variante mono-valuada del atributo M.
La nueva relación N tiene como clave (K, M').
Siguiendo el ejemplo, tendríamos el siguiente esquema para la nueva tabla EMPLEADOS'(b)
nss nombre puesto salario
111Juan Pérez Jefe de Área 3000
222José SánchezAdministrativo1500
333Ana Díaz Administrativo1500
... ... ... ...
TABLE 3
Y además tendríamos una nueva tabla EMAILS con clave primaria (nss, email):
nss email
111juanp@ecn.es
111jefe2@ecn.es
222jsanchez@ecn.es
333adiaz@ecn.es
333ana32@gmail.com
... ...
TABLE 4
Segunda forma normal (2FN)
Un esquema está en 2FN si:
Está en 1FN.
Todos sus atributos que no son de la clave principal tienen dependencia funcional completa respecto de
todas las claves existentes en el esquema. En otras palabras, para determinar cada atributo no clave se
necesita la clave primaria completa, no vale con una subclave.
La 2FN se aplica a las relaciones que tienen claves primarias compuestas por dos o más atributos. Si una
relación está en 1FN y su clave primaria es simple (tiene un solo atributo), entonces también está en 2FN.
Por tanto, de las soluciones anteriores, la tabla EMPLEADOS'(b) está en 1FN (y la tabla EMAILS no
tiene atributos no clave), por lo que el esquema está en 2FN. Sin embargo, tenemos que examinar las
dependencias funcionales de los atributos no clave de EMPLEADOS'(a). Las dependencias
funcionales que tenemos son las siguientes:
nss->nombre, salario, email
puesto->salario
Como la clave es (nss, email), las dependencias de nombre, salario y email son incompletas, por
lo que la relación no está en 2FN.
En general, tendremos que observar los atributos no clave que dependan de parte de la clave.
Para solucionar este problema, tenemos que hacer lo siguiente para los gupos de atributos con
dependencia incompleta M:
Eliminar de R el atributo M.
Crear una nueva relación N con el atributo M y la parte de la clave primaria K de la que depende, que
llamaremos K'.
La clave primaria de la nueva relación será K'.
Siguiendo el ejemplo anterior, crearíamos una nueva relación con los atributos que tienen dependencia
incompleta:
nss nombre puesto salario
111Juan Pérez Jefe de Área 3000
222José SánchezAdministrativo1500
333Ana Díaz Administrativo1500
... ... ... ...
TABLE 5
Y al eliminar de la tabla original estos atributos nos quedaría:
nss email
111juanp@ecn.es
111jefe2@ecn.es
222jsanchez@ecn.es
333adiaz@ecn.es
333ana32@gmail.com
... ...
TABLE 6
Como vemos, la solución a la que llegamos es la misma que en la otra opción de solución para el
problema de 1FN.
Tercera forma normal (3FN)
Una relación está en tercera forma normal si, y sólo si:
está en 2FN
y, además, cada atributo que no está incluido en la clave primaria no depende transitivamente de la clave
primaria.
Por lo tanto, a partir de un esquema en 2FN, tenemos que buscar dependencias funcionales entre
atributos que no estén en la clave.
En general, tenemos que buscar dependencias transitivas de la clave, es decir, secuencias de
dependencias como la siguiente: K->A y A->B, donde A y B no pertenecen a la clave. La solución a este
tipo de dependencias está en separar en una tabla adicional N el/los atributos B, y poner como clave
primaria de N el atributo que define la transitividad A.
Siguiendo el ejemplo anterior, podemos detectar la siguiente transitividad:
nss->puesto
puesto->salario
Por lo tanto la descomposición sería la siguiente:
nss nombre puesto
111Juan Pérez Jefe de Área
222José SánchezAdministrativo
333Ana Díaz Administrativo
... ... ...
TABLE 7
En la nueva tabla PUESTOS, la clave sería el puesto, que también queda como clave ajena referenciando
la tabla EMPLEADOS. El resto de las tablas quedan como estaban.

Más contenido relacionado

La actualidad más candente

Taller de Base de datos - Unidad 1 SGBD introduccion
Taller de Base de datos - Unidad 1 SGBD introduccionTaller de Base de datos - Unidad 1 SGBD introduccion
Taller de Base de datos - Unidad 1 SGBD introduccionJosé Antonio Sandoval Acosta
 
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negociosFundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negociosJosé Antonio Sandoval Acosta
 
Tabla comparativa de herramientas case oswaldo mauleon
Tabla comparativa de herramientas case oswaldo mauleon Tabla comparativa de herramientas case oswaldo mauleon
Tabla comparativa de herramientas case oswaldo mauleon oswaldoyuneri
 
Diagramas de clase.pptx
Diagramas de clase.pptxDiagramas de clase.pptx
Diagramas de clase.pptxCAMILORUALES1
 
Modelos de seguridad de la información
Modelos de seguridad de la informaciónModelos de seguridad de la información
Modelos de seguridad de la informaciónluisrobles17
 
Gestión de proyectos de software - Tema 3: Planificación del proyecto
Gestión de proyectos de software - Tema 3: Planificación del proyectoGestión de proyectos de software - Tema 3: Planificación del proyecto
Gestión de proyectos de software - Tema 3: Planificación del proyectoJair Valenz
 
Power designer-presentación
Power designer-presentaciónPower designer-presentación
Power designer-presentaciónskrapy95
 
Diferencia entre prceso, programa y procesador
Diferencia entre prceso, programa y procesadorDiferencia entre prceso, programa y procesador
Diferencia entre prceso, programa y procesadorDulce Fernàndez-t
 
Diseño logico de una base de datos
Diseño logico de  una base de datosDiseño logico de  una base de datos
Diseño logico de una base de datosRobert Rodriguez
 
Informe estructura de datos Unidad 1
Informe estructura de datos Unidad 1Informe estructura de datos Unidad 1
Informe estructura de datos Unidad 1eliezerbs
 

La actualidad más candente (20)

Taller de Base de datos - Unidad 1 SGBD introduccion
Taller de Base de datos - Unidad 1 SGBD introduccionTaller de Base de datos - Unidad 1 SGBD introduccion
Taller de Base de datos - Unidad 1 SGBD introduccion
 
Taller de Base de Datos - Unidad 6 SQL procedural
Taller de Base de Datos - Unidad 6 SQL proceduralTaller de Base de Datos - Unidad 6 SQL procedural
Taller de Base de Datos - Unidad 6 SQL procedural
 
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negociosFundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
 
Dfd y der internet
Dfd y der internetDfd y der internet
Dfd y der internet
 
Tecnicas de Administracion de Memoria
Tecnicas de Administracion de MemoriaTecnicas de Administracion de Memoria
Tecnicas de Administracion de Memoria
 
Fundamentos de BD - Unidad 5 algebra relacional
Fundamentos de BD - Unidad 5 algebra relacionalFundamentos de BD - Unidad 5 algebra relacional
Fundamentos de BD - Unidad 5 algebra relacional
 
Modelo basado en clases
Modelo basado en clasesModelo basado en clases
Modelo basado en clases
 
Reglas de transformación
Reglas de transformaciónReglas de transformación
Reglas de transformación
 
Tabla comparativa de herramientas case oswaldo mauleon
Tabla comparativa de herramientas case oswaldo mauleon Tabla comparativa de herramientas case oswaldo mauleon
Tabla comparativa de herramientas case oswaldo mauleon
 
Diagramas de clase.pptx
Diagramas de clase.pptxDiagramas de clase.pptx
Diagramas de clase.pptx
 
Modelos de seguridad de la información
Modelos de seguridad de la informaciónModelos de seguridad de la información
Modelos de seguridad de la información
 
Gestión de proyectos de software - Tema 3: Planificación del proyecto
Gestión de proyectos de software - Tema 3: Planificación del proyectoGestión de proyectos de software - Tema 3: Planificación del proyecto
Gestión de proyectos de software - Tema 3: Planificación del proyecto
 
Taller de Base de Datos - Unidad 7 Conectividad
Taller de Base de Datos - Unidad 7 ConectividadTaller de Base de Datos - Unidad 7 Conectividad
Taller de Base de Datos - Unidad 7 Conectividad
 
Power designer-presentación
Power designer-presentaciónPower designer-presentación
Power designer-presentación
 
Comandos ddl
Comandos ddlComandos ddl
Comandos ddl
 
Unidad 6 Lenguaje Sql
Unidad 6 Lenguaje SqlUnidad 6 Lenguaje Sql
Unidad 6 Lenguaje Sql
 
Diferencia entre prceso, programa y procesador
Diferencia entre prceso, programa y procesadorDiferencia entre prceso, programa y procesador
Diferencia entre prceso, programa y procesador
 
Diseño orientado a objeto
Diseño orientado a objetoDiseño orientado a objeto
Diseño orientado a objeto
 
Diseño logico de una base de datos
Diseño logico de  una base de datosDiseño logico de  una base de datos
Diseño logico de una base de datos
 
Informe estructura de datos Unidad 1
Informe estructura de datos Unidad 1Informe estructura de datos Unidad 1
Informe estructura de datos Unidad 1
 

Destacado (20)

7 ar
7 ar7 ar
7 ar
 
1 intro
1 intro1 intro
1 intro
 
Sql4
Sql4Sql4
Sql4
 
3 mcr
3 mcr3 mcr
3 mcr
 
Actividad teorico práctica
Actividad teorico prácticaActividad teorico práctica
Actividad teorico práctica
 
4 ml
4 ml4 ml
4 ml
 
8 ar2
8 ar28 ar2
8 ar2
 
Tema 5 ejercicio 04 - normalizacion
Tema 5   ejercicio 04 - normalizacionTema 5   ejercicio 04 - normalizacion
Tema 5 ejercicio 04 - normalizacion
 
File
FileFile
File
 
Indice
IndiceIndice
Indice
 
5 n
5 n5 n
5 n
 
Tema 5 ejercicio 01 - normalizacion
Tema 5   ejercicio 01 - normalizacionTema 5   ejercicio 01 - normalizacion
Tema 5 ejercicio 01 - normalizacion
 
6 n2
6 n26 n2
6 n2
 
Foro 3
Foro 3Foro 3
Foro 3
 
5. ejercicios normalización
5. ejercicios normalización5. ejercicios normalización
5. ejercicios normalización
 
Tema 5 ejercicio 06 - normalizacion
Tema 5   ejercicio 06 - normalizacionTema 5   ejercicio 06 - normalizacion
Tema 5 ejercicio 06 - normalizacion
 
Recomendacion base teorica
Recomendacion base teoricaRecomendacion base teorica
Recomendacion base teorica
 
Formas normales
Formas normalesFormas normales
Formas normales
 
Normalización de Bases de Datos (Hasta Boyce-Codd)
Normalización de Bases de Datos (Hasta Boyce-Codd)Normalización de Bases de Datos (Hasta Boyce-Codd)
Normalización de Bases de Datos (Hasta Boyce-Codd)
 
2 mc
2 mc2 mc
2 mc
 

Similar a Ejercicio

Ejemplo de Normalización
Ejemplo de Normalización Ejemplo de Normalización
Ejemplo de Normalización Martha
 
Normalizacion db
Normalizacion db Normalizacion db
Normalizacion db josecuartas
 
Unidad 5 TransformacióN Er A Relacional NormalizacióN
Unidad 5 TransformacióN Er A Relacional   NormalizacióNUnidad 5 TransformacióN Er A Relacional   NormalizacióN
Unidad 5 TransformacióN Er A Relacional NormalizacióNSergio Sanchez
 
Normalizacion de bases de datos relacionales.docx
Normalizacion de bases de datos relacionales.docxNormalizacion de bases de datos relacionales.docx
Normalizacion de bases de datos relacionales.docxa e
 
Ordenar los datos de una lista alfabéticamente
Ordenar los datos de una lista alfabéticamenteOrdenar los datos de una lista alfabéticamente
Ordenar los datos de una lista alfabéticamenteGrupo789
 
Fundamentos de bases de datos u3
Fundamentos de bases de datos   u3Fundamentos de bases de datos   u3
Fundamentos de bases de datos u3arge02
 
Base de datos relacional
Base de datos relacionalBase de datos relacional
Base de datos relacionaljorge220395
 
Ordenar los datos de una lista alfabéticamente (2)
Ordenar los datos de una lista alfabéticamente (2)Ordenar los datos de una lista alfabéticamente (2)
Ordenar los datos de una lista alfabéticamente (2)Grupo789
 
Unidad iv base de datos
Unidad iv base de datosUnidad iv base de datos
Unidad iv base de datosValadu Rojas
 
Base de datos
Base de datosBase de datos
Base de datosmarcia666
 
PRACTICA DE Excel 2014 1° secundaria
PRACTICA DE Excel   2014   1° secundariaPRACTICA DE Excel   2014   1° secundaria
PRACTICA DE Excel 2014 1° secundariaMINEDU/oswaldo
 
Fórmulas operadores
Fórmulas   operadores Fórmulas   operadores
Fórmulas operadores karengissel
 
Fórmulas operadores y ejercicios
Fórmulas   operadores y ejerciciosFórmulas   operadores y ejercicios
Fórmulas operadores y ejerciciosIriniita FG
 

Similar a Ejercicio (20)

Ejemplo de Normalización
Ejemplo de Normalización Ejemplo de Normalización
Ejemplo de Normalización
 
Normalizacion db
Normalizacion db Normalizacion db
Normalizacion db
 
Clase 0.3 normalizacion. sql server aplicado
Clase 0.3   normalizacion. sql server aplicadoClase 0.3   normalizacion. sql server aplicado
Clase 0.3 normalizacion. sql server aplicado
 
Unidad 5 TransformacióN Er A Relacional NormalizacióN
Unidad 5 TransformacióN Er A Relacional   NormalizacióNUnidad 5 TransformacióN Er A Relacional   NormalizacióN
Unidad 5 TransformacióN Er A Relacional NormalizacióN
 
Base de Datos
Base de DatosBase de Datos
Base de Datos
 
Normalizacion de bases de datos relacionales.docx
Normalizacion de bases de datos relacionales.docxNormalizacion de bases de datos relacionales.docx
Normalizacion de bases de datos relacionales.docx
 
Modelamiento de base de Datos - Algebra relacional
Modelamiento de base de Datos - Algebra relacionalModelamiento de base de Datos - Algebra relacional
Modelamiento de base de Datos - Algebra relacional
 
Ordenar los datos de una lista alfabéticamente
Ordenar los datos de una lista alfabéticamenteOrdenar los datos de una lista alfabéticamente
Ordenar los datos de una lista alfabéticamente
 
Fundamentos de bases de datos u3
Fundamentos de bases de datos   u3Fundamentos de bases de datos   u3
Fundamentos de bases de datos u3
 
Base de datos relacional
Base de datos relacionalBase de datos relacional
Base de datos relacional
 
Actividad 9
Actividad 9Actividad 9
Actividad 9
 
Ordenar los datos de una lista alfabéticamente (2)
Ordenar los datos de una lista alfabéticamente (2)Ordenar los datos de una lista alfabéticamente (2)
Ordenar los datos de una lista alfabéticamente (2)
 
Unidad iv base de datos
Unidad iv base de datosUnidad iv base de datos
Unidad iv base de datos
 
Base de datos
Base de datosBase de datos
Base de datos
 
PRACTICA DE Excel 2014 1° secundaria
PRACTICA DE Excel   2014   1° secundariaPRACTICA DE Excel   2014   1° secundaria
PRACTICA DE Excel 2014 1° secundaria
 
8. formulas y funciones excel
8. formulas y funciones excel8. formulas y funciones excel
8. formulas y funciones excel
 
Fórmulas Excel
Fórmulas ExcelFórmulas Excel
Fórmulas Excel
 
Fórmulas operadores
Fórmulas   operadores Fórmulas   operadores
Fórmulas operadores
 
Fórmulas operadores y ejercicios
Fórmulas   operadores y ejerciciosFórmulas   operadores y ejercicios
Fórmulas operadores y ejercicios
 
Fórmulas operadores y ejercicios
Fórmulas   operadores y ejerciciosFórmulas   operadores y ejercicios
Fórmulas operadores y ejercicios
 

Ejercicio

  • 1. El proceso de normalización de bases de datos relacionales La normalización de bases de datos relacionales toma un esquema relacional y le aplica un conjunto de técnicas para producir un nuevo esquema que representa la misma información pero contiene menos redundancias y evita posibles anomalías en las inserciones, actualizaciones y borrados. Breve recordatorio del modelo (formal) relacional El modelo relacional de bases de datos se basa en un modelo formal especificado de acuerdo a la teoría de conjuntos. Una base de datos relacional puede considerarse como un conjunto de relaciones o tablas de la forma R(A1, ..., An), donde R es el nombre de la relación, que se define por una serie de atributos Ai. Sobre las tablas relacionales se pueden definir diferentes restricciones. La integridad de entidad es una restricción que nos indica que cada entidad representada por una tupla tiene que ser diferente de las demás en su relación, es decir, debe haber algunos atributos cuyos valores identifiquen unívocamente las tuplas. La integridad referencial indica que una clave ajena solo debe contener valores que o bien sean nulos, o bien existan en la relación referenciada por la clave ajena. El proceso de normalización El proceso de normalización consiste en comprobar en secuencia si el esquema original está en 1FN, 2FN y 3FN, analizando las dependencias funcionales en cada paso. Un ejemplo completo Tenemos una empresa pública donde los puestos de trabajo están regulados por el Estado, de modo que las condiciones salariales están determinadas por el puesto. Se ha creado el siguiente esquema relacional EMPLEADOS(nss, nombre, puesto, salario, emails) con nss como clave primaria. nss nombre puesto salarioemails 111Juan Pérez Jefe de Área 3000 juanp@ecn.es; jefe2@ecn.es 222José SánchezAdministrativo1500 jsanchez@ecn.es 333Ana Díaz Administrativo1500 adiaz@ecn.es; ana32@gmail.com ... ... ... ... ... TABLE 1 Primera forma normal (1FN) Una tabla está en 1FN si sus atributos contienen valores atómicos. En el ejemplo, podemos ver que el atributo emails puede contener más de un valor, por lo que viola 1FN. En general, tenemos una relación R con clave primaria K. Si un atributo M viola la condición de 1FN, tenemos dos opciones. Solución 1: duplicar los registros con valores repetidos En general, esta solución pasa por sustituir R por una nueva relación modificada R', en la cual:
  • 2. El atributo M que violaba 1FN se elimina. Se incluye un nuevo atributo M' que solo puede contener valores simples, de modo que si R'[M'] es uno de los valores que teníamos en R[M], entonces R'[K] = R[K]. En otras palabras, para una tupla con n valores duplicados en M, en la nueva relación habrá n tuplas, que sólo varían en que cada una de ellas guarda uno de los valores que había en M. La clave primaria de R' es (K, M'), dado que podrá haber valores de K repetidos, para los valores multivaluados en M. Siguiendo el ejemplo, tendríamos el siguiente esquema para la nueva tabla EMPLEADOS'(a) con clave primaria (nss, email): nss nombre puesto salarioemail 111Juan Pérez Jefe de Área 3000 juanp@ecn.es 111Juan Pérez Jefe de Área 3000 jefe2@ecn.es 222José SánchezAdministrativo1500 jsanchez@ecn.es 333Ana Díaz Administrativo1500 adiaz@ecn.es 333Ana Díaz Administrativo1500 ana32@gmail.com ... ... ... ... ... TABLE 2 Solución 2: separar el atributo que viola 1FN en una tabla En general, esta solución pasa por: sustituir R por una nueva relación modificada R' que no contiene el atributo M. Crear una nueva relación N(K, M'), es decir, una relación con una clave ajena K referenciando R', junto al atributo M', que es la variante mono-valuada del atributo M. La nueva relación N tiene como clave (K, M'). Siguiendo el ejemplo, tendríamos el siguiente esquema para la nueva tabla EMPLEADOS'(b) nss nombre puesto salario 111Juan Pérez Jefe de Área 3000 222José SánchezAdministrativo1500 333Ana Díaz Administrativo1500 ... ... ... ... TABLE 3 Y además tendríamos una nueva tabla EMAILS con clave primaria (nss, email): nss email 111juanp@ecn.es 111jefe2@ecn.es 222jsanchez@ecn.es 333adiaz@ecn.es
  • 3. 333ana32@gmail.com ... ... TABLE 4 Segunda forma normal (2FN) Un esquema está en 2FN si: Está en 1FN. Todos sus atributos que no son de la clave principal tienen dependencia funcional completa respecto de todas las claves existentes en el esquema. En otras palabras, para determinar cada atributo no clave se necesita la clave primaria completa, no vale con una subclave. La 2FN se aplica a las relaciones que tienen claves primarias compuestas por dos o más atributos. Si una relación está en 1FN y su clave primaria es simple (tiene un solo atributo), entonces también está en 2FN. Por tanto, de las soluciones anteriores, la tabla EMPLEADOS'(b) está en 1FN (y la tabla EMAILS no tiene atributos no clave), por lo que el esquema está en 2FN. Sin embargo, tenemos que examinar las dependencias funcionales de los atributos no clave de EMPLEADOS'(a). Las dependencias funcionales que tenemos son las siguientes: nss->nombre, salario, email puesto->salario Como la clave es (nss, email), las dependencias de nombre, salario y email son incompletas, por lo que la relación no está en 2FN. En general, tendremos que observar los atributos no clave que dependan de parte de la clave. Para solucionar este problema, tenemos que hacer lo siguiente para los gupos de atributos con dependencia incompleta M: Eliminar de R el atributo M. Crear una nueva relación N con el atributo M y la parte de la clave primaria K de la que depende, que llamaremos K'. La clave primaria de la nueva relación será K'. Siguiendo el ejemplo anterior, crearíamos una nueva relación con los atributos que tienen dependencia incompleta: nss nombre puesto salario 111Juan Pérez Jefe de Área 3000 222José SánchezAdministrativo1500 333Ana Díaz Administrativo1500 ... ... ... ... TABLE 5 Y al eliminar de la tabla original estos atributos nos quedaría: nss email
  • 4. 111juanp@ecn.es 111jefe2@ecn.es 222jsanchez@ecn.es 333adiaz@ecn.es 333ana32@gmail.com ... ... TABLE 6 Como vemos, la solución a la que llegamos es la misma que en la otra opción de solución para el problema de 1FN. Tercera forma normal (3FN) Una relación está en tercera forma normal si, y sólo si: está en 2FN y, además, cada atributo que no está incluido en la clave primaria no depende transitivamente de la clave primaria. Por lo tanto, a partir de un esquema en 2FN, tenemos que buscar dependencias funcionales entre atributos que no estén en la clave. En general, tenemos que buscar dependencias transitivas de la clave, es decir, secuencias de dependencias como la siguiente: K->A y A->B, donde A y B no pertenecen a la clave. La solución a este tipo de dependencias está en separar en una tabla adicional N el/los atributos B, y poner como clave primaria de N el atributo que define la transitividad A. Siguiendo el ejemplo anterior, podemos detectar la siguiente transitividad: nss->puesto puesto->salario Por lo tanto la descomposición sería la siguiente: nss nombre puesto 111Juan Pérez Jefe de Área 222José SánchezAdministrativo 333Ana Díaz Administrativo ... ... ... TABLE 7 En la nueva tabla PUESTOS, la clave sería el puesto, que también queda como clave ajena referenciando la tabla EMPLEADOS. El resto de las tablas quedan como estaban.