Podríamos representar nuestro sistema de información mediante una sola relación R que contenga toda la información del sistema, sin embargo se aplica la teoría de la normalización con el objetivo de obtener un conjunto de relaciones {Ri} que sean equivalentes al esquema R y mejores en cuanto a nivel de normalización. Las propiedades que deben cumplir los esquemas Ri obtenidos son las siguientes:
Conservar la información que teníamos en el esquema original.
Conservar las dependencias existentes en el esquema original.
Tener la mínima redundancia de los datos.
PRIMERA FORMA NORMAL (1FN)
Una tabla está en primera forma normal 1FN (y es una condición que debe cumplir para que la tabla se pueda considerar una relación), si y solo si los valores que componen los atributos de una tupla son atómicos. En un atributo no pueden aparecer valores repetitivos, tienen que ser elementales y únicos.
EMPLEADOS:
Una forma de obtener una tabla en primera forma normal es obtener una tupla para cada uno de los diferentes valores que tiene el atributo:
Una relación (tabla) se dice que está en segunda forma normal si cumple las siguientes condiciones:
Está en 1FN
Todo atributo secundario, tiene una dependencia funcional completa respecto de cada una de las claves candidatas.
Si todas las claves candidatas están formadas por un solo atributo, ya se encuentra en segunda forma normal.
Si consideramos el caso anterior de los empleados que trabajaban en varias empresas, tendríamos que nuestro sistema maneja los siguientes atributos:
(DNI, NOMBRE, EMPRESA, SUELDO)
Las dependencias funcionales son las siguientes:
DNI -> NOMBRE
DNI,EMPRESA à SUELDO
Su gráfico:
no se encuentra en segunda forma normal, para ello podemos dividir la relación en dos:
Una relación (tabla) se dice que está en tercera forma normal si y solo si se cumplen las siguientes condiciones:
· Está en 2FN
· Ningún atributo secundario depende transitivamente de ninguna clave de la relación.
Esto quiere decir que un atributo secundario (los que no son posibles claves) solo se puede conocer a través de las claves candidatas nunca mediante otro atributo secundario.
En el caso de los prestamos la tabla LIBRO, que hemos visto que daba problemas es debido a que no está en tercera forma normal:
por tanto tendríamos que partir de nuevo quedando:
LIBRO(COD_LIBRO,EDITORIAL)
EDITORIAL(EDITORIAL,PAIS)
Una relación está en forma normal de Boyce-Codd, si y solo si todo determinante es una clave candidata. Entendiendo por determinante cualquier conjunto de atributos del que otro atributo depende funcionalmente de forma completa.
Supongamos la siguiente tabla:
CALLEJERO:
La clave candidata para esta tabla sería DIREC, CIUDAD, ya que una misma calle puede existir en distintas ciudades. Nos encontramos con las siguientes dependencias funcionales:
si mantenemos la tabla en esta forma para un mismo código postal habría muchas tuplas con la misma ciudad tantas como direcciones tenga dicha ciudad, esto ocurre porque no está en forma normal de Boyce-Codd, que es una mejora de la tercera forma normal:
(DIREC, CODPOS) y (CODPOS, CIUDAD)
Partimos de la representación de un sistema en el modelo relacional, que puede venir dada por una relación o por un conjunto de relaciones, la forma de trabajar es ir analizando cada una de las relaciones y eliminar las dependencias funcionales (normalizando) que existan haciendo proyecciones. Este trabajo debe realizarse de manera que el paso a un grupo de relaciones se realice cumpliendo los siguientes requisitos:
· Conservar la información que teníamos en el esquema original.
· Conservar las dependencias existentes en el esquema original.
· Tener la mínima redundancia de los datos.
Para asegurar que la descomposición de una relación es correcta, es decir se cumplen las dos condiciones primeras, tenemos que comprobar que la descomposición se ha realizado mediante proyecciones independientes.
Definición de proyecciones independientes: dada una relación R si R1, R2 son dos proyecciones de R, se dice que R1, R2 son independientes, si y solo si:
1.- Sus atributos comunes son la clave primaria de al menos una relación.
2.- Cada dependencia funcional de R puede deducirse de las dependencias funcionales de R1 y R2.
Ejemplo: Supongamos los pedidos realizados a proveedores que se encuentran en distintas ciudades:
PEDIDO(COD_ART, PROV, CANT, PRECIO, CIUDAD, KM) que contiene las siguientes dependencias funcionales:
DF: (COD_ART, PROV) à (CANT, PRECIO, CIUDAD, KM)
COD_ARTà PRECIO
PROV à CIUDAD
CIUDAD à KM
Todas las dependencias funcionales que existen en este esquema son:
(COD_ART, PROV) à (CANT, PRECIO, CIUDAD, KM)
COD_ART à PRECIO
PROV à CIUDAD
CIUDAD à KM
(COD_ART, PROV) àCANT
(COD_ART, PROV) àPRECIO
(COD_ART, PROV)àCIUDAD
(COD_ART, PROV)àKM
PROV à CIUDAD
De la primera dependencia funcional (COD_ART, PROV) à(CANT, PRECIO, CIUDAD, KM) aplicando la proyectividad hemos obtenido:
(COD_ART, PROV)à CANT
(COD_ART, PROV)à PRECIO
(COD_ART, PROV)à CIUDAD
(COD_ART, PROV)à KM
por tanto son redundantes y podemos sustituir el primer esquema por sus proyecciones equivalentes:
R1 (COD_ART,PROV, CANT)
R2 (COD_ART, PROV, PRECIO)
R3 (COD_ART,PROV, CIUDAD)
R4 (COD_ART,PROV, KM)
con las siguientes dependencias funcionales:
COD_ARTà PRECIO
PROV à CIUDAD
CIUDADà KM
Si PROVà CIUDAD y CIUDADà KM
Las relaciones R2, R3 y R4 se pueden sustituir (COD_ART,PRECIO), (PROV,CIUDAD) y (CIUDAD,KM) que son independientes, quedando el sistema:
R1 (COD_ART,PROV, CANT)
(COD_ART,PRECIO)
(PROV,CIUDAD)
(CIUDAD,KM)
por la transitividad, como PROVàCIUDAD y CIUDAD à KM tenemos que PROVàKM quedando el sistema representado por el siguiente esquema:
R1 (COD_ART,PROV, CANT)
(COD_ART,PRECIO)
(PROV,CIUDAD)
(CIUDAD,KM)
Tenemos un esquema equivalente a la relación PEDIDO inicial y con las mismas dependencias funcionales, formado por proyecciones independientes y con las mismas dependencias funcionales que teníamos en principio.
Para las tres primeras formas normales, siempre es posible realizar la descomposición en proyecciones independientes que conserven las dependencias funcionales, no ocurre lo mismo con el paso a la forma normal de Boyce/Codd en la que hay situaciones en las que se pierden dependencias funcionales:
Tenemos la relación (TITULO,COLECCIÓN, EDITORIAL) con las siguientes dependencias funcionales:
TITULO, EDITORIAL àCOLECCIÓN y COLECCIÓNàEDITORIAL y donde un mismo libro se puede publicar en varias editoriales, pero no una colección:
Está en 3FN pero no en FNBC, podemos hacer las siguientes proyecciones:
a).- R1(TITULO, EDITORIAL) R2(COLECCIÓN,EDITORIAL), en este caso hemos perdido la dependencia funcional (TITULO,EDITORIAL)àCOLECCIÓN y además el atributo común EDITORIAL, no es clave de ninguna relación.
b).- Si descomponemos en R1(TITULO,COLECCIÓN) y (TITULO, EDITORIAL), tendríamos tuplas espúreas y hemos perdido dependencias funcionales.
c).- Si descomponemos en R1(TITULO, COLECCIÓN) y (COLECCIÓN, EDITORIAL) aunque es la mejor de las tres, hemos perdido la dependencia funcional
(TITULO, EDITORIAL)à COLECCIÓN.
Para comprobar que no existe pérdida de información, se deben dar dos situaciones:
· El conjunto de atributos del esquema inicial debe ser igual a la unión de todos los atributos de las relaciones resultantes.
· Dada cualquier extensión del esquema inicial, debe ser igual a la combinación de las extensiones del esquema resultante.
En nuestro caso el conjunto de atributos del esquema inicial es: COD_ART, PROV, CANT, PRECIO, CIUDAD, KM.
La unión (sin repetirse) de los atributos del esquema resultante es: COD_ART, PROV, CANT, PRECIO, CIUDAD, KM, por tanto coinciden.
También se cumple la segunda condición, si tomamos la siguiente extensión de PEDIDO:
Las extensiones de las proyecciones serían:
Haciendo el enlace entre las tablas teniendo en cuenta que tienen que coincidir COD_ART y PROV en las distintas relaciones, obtenemos la extensión de PEDIDO dada.
Esta situación no siempre se da, ya que si realizamos mal la proyección de la relación inicial pueden aparecer tuplas espúreas (que no pertenecen a la relación inicial), que falsean el contenido de la base de datos:
Si la relación (COD_LIBRO, EDITORIAL, PAIS) la sustituimos por (COD_LIBRO, PAIS) y (EDITORIAL,PAIS) tendríamos:
Las extensiones para las relaciones resultado de las proyecciones:
Al realizar el enlace entre estas tablas de forma que PAIS sea común:
Las dependencias multivaluadas proceden de diagramas E/R en los que existen interrelaciones N:M independientes entre sí. Si tenemos el siguiente diagrama:
Si tenemos una relación para representar nuestro sistema tendríamos:
Para ser una relación, no puede haber atributos multivaluados por tanto pasamos a la 1FN:
Tenemos una relación en la forma normal de Boyce/Codd, ya que el único determinante es (AUTOR,TEMA,EDITORIAL) y es la clave de la relación, pero existen muchas redundancias en la relación obtenida porque hay dependencias multivaluadas.
Definición: Sea R una relación y sean X e Y dos descriptores de dicha relación, se dice que X multidetermina Y o bien Y es multidependiente de X (X à Y) cuando un valor de X determina un conjunto de valores de Y con independencia de los valores que tengan el resto de los atributos de la relación.
En nuestro ejemplo AUTOR àTEMA con independencia de las editoriales en las que publica libros y AUTOR àEDITORIAL ya que un autor publica en varias editoriales con independencia del tema publicado.
Definición: Una relación está en cuarta forma normal (4FN) cuando toda dependencia multivaluada está determinada por una clave candidata.
En nuestro ejemplo, la clave candidata es AUTOR,TEMA,EDITORIAL, pero existen dependencias multivaluadas de TEMA y EDITORIAL respecto a AUTOR que no es clave candidata, por tanto la relación no está en 4FN. La forma de pasar la relación obteniendo un esquema formado por relaciones en 4FN es descomponerla en proyecciones de la siguiente manera:
R1(AUTOR,TEMA)
R2(AUTOR,EDITORIAL)
Las dependencias funcionales son un caso especial de las multivaluadas, dándose la situación que el conjunto de valores determinados por el descriptor está formado por un solo valor.
El proceso de normalización se comienza normalmente, destruyendo las dependencias multivaluadas y después se sigue con el resto de las formas normales.
Se dan situaciones en las que una relación R no tiene dependencias multivaluadas, pero si se sustituye R por sus proyecciones aparecen dependencias multivaluadas, en esta situación se dice que existen dependencias multivaluadas embebidas o jerárquicas.
Ejemplo: si tomamos la relación R(AUTOR, MATERIA, INSTITUCION, DEPARTAMENTO)
Las claves candidatas podrían son cualquier combinación de los cuatro atributos tomados de tres en tres: AUTOR, MATERIA, INSTITUCION o AUTOR, MATERIA, DEPARTAMENTO o AUTOR,INSTITUCIÓN,DEPARTAMENTO o MATERIA,INSTITUCION,DEPARTAMENTO, y está en cuarta forma normal ya que está en la FNBC y no existen dependencias multivaluadas, aunque existe mucha redundancia de datos. Si tomamos una proyección de esta relación formada por (AUTOR,MATERIA,INSTITUCION) tenemos:
MATERIA
LENGUAJE SQL
DISEÑO DE BD
DISEÑO DE BD
BASES DE CONOCIMIENTO
INSTITUCION
RELATIONAL
COOD & DATE
STANFORD UNIVERSITY
AUTOR
DATE
ULLMAN
donde sí aparecen dependencias multivaluadas, no hay forma de descomponer la relación dada en dos proyecciones independientes sin que aparezcan tuplas espúreas debido a que no está en 5FN, pero si descomponemos en tres relaciones, esta descomposición se realiza sin pérdida de información, por ejemplo las relaciones:
R1(AUTOR,MATERIA, DEPARTAMENTO)
R2(AUTOR,MATERIA,INSTITUCION)
R3(MATERIA,DEPARTAMENTO,INSTITUCION)
La unión (join natural) de estas tres relaciones da como resultado la relación de partida, y cada una de ellas está en 5FN.
Se verifica que las dependencias embebidas incluyen a las multivaluadas y estas a las funcionales, pero no ocurre la situación contraria.
Definición de 5FN: una relación está en 5FN si y solo si toda dependencia (funcional, multivaluada o de combinación) es consecuencia de las claves candidatas.