Lectura - Directrices Informales de Diseño
Lectura - Directrices Informales de Diseño
Lectura - Directrices Informales de Diseño
Dependencias funcionales y
normalización en bases de
datos relacionales
n los Capítulos del 5 al 9, mostramos varios aspectos del modelo relacional y los lenguajes asociados a
E él. Cada esquema de relación consta de un número de atributos, mientras que un esquema de base de
datos relacional está compuesto por un número de esquemas de relación. Hasta ahora sólo hemos utili-
zado el sentido común del diseñador de la base de datos para agrupar los atributos y formar así un esquema
de relación, o bien hemos utilizado un diseño de esquema de base de datos a partir de un modelo de datos con-
ceptual como ER o EER, o algún otro. Estos modelos hacen que el diseñador identifique los tipos de entidad
y de relación y sus respectivos atributos, lo que nos lleva a un agrupamiento natural y lógico de los atributos
en relaciones cuando van seguidos por los procedimientos de mapeado del Capítulo 7. Sin embargo, aún nece-
sitamos algún tipo de medida formal que nos indique por qué un agrupamiento de atributos en el esquema de
una relación puede ser mejor que otro. Hasta el momento, en nuestro debate sobre el diseño conceptual de los
Capítulos 3 y 4 y su asignación en el modelo relacional del Capítulo 7, no hemos desarrollado ningún méto-
do que nos indique la idoneidad de la calidad del diseño, aparte de la intuición del diseñador. En este capítu-
lo vamos a ver parte de la teoría desarrollada con el objetivo de evaluar esquemas relacionales encaminados
a la calidad del diseño; es decir, mediremos formalmente por qué un conjunto de agrupaciones de atributos en
un esquema de relación es mejor que otro.
Hay dos niveles a los que podemos explicar la bondad de los esquemas de relación. El primero es el nivel
lógico (o conceptual): cómo los usuarios interpretan los esquemas de relación y el significado de sus atribu-
tos. Disponer de un buen esquema de relación a este nivel permite a los usuarios comprender con claridad el
significado de los datos en la relaciones y, por consiguiente, formular sus consultas correctamente. El segun-
do nivel es el de implementación (o almacenamiento): de qué modo se almacenan y actualizan las tuplas en
una relación base. Este nivel se aplica sólo a esquemas de relación base (cómo se almacenarán físicamente los
ficheros), mientras que a nivel lógico nos interesan tanto las relaciones base como las vistas (relaciones vir-
tuales). La teoría de diseño de una base de datos relacional desarrollada en este capítulo se aplica fundamen-
talmente a las relaciones base, aunque algunos criterios de idoneidad también se utilizan en las vistas (con-
sulte la Sección 10.1).
Como ocurre con otros muchos problemas de diseño, el de una base de datos debe llevarse a cabo usando dos
metodologías: ascendente (bottom-up) o descendente (top-down). Una metodología de diseño de tipo ascen-
dente, llamada también diseño por síntesis, tiene como punto de partida las relaciones básicas entre atributos
282 Capítulo 10 Dependencias funcionales y normalización en bases de datos relacionales
individuales, y los usa para construir los esquemas de relación. Esta metodología no es muy popular en la
práctica1, ya que tiene el problema de tener que recopilar al principio una gran cantidad de relaciones bina-
rias entre los atributos. Como contrapartida, en una metodología descendente, conocida también como dise-
ño por análisis, se empieza con varios agrupamientos de atributos de una relación que están juntos de forma
natural, como por ejemplo, en una factura, un formulario o un informe. Las relaciones son entonces analiza-
das individual y colectivamente, lo que conduce a una descomposición posterior que permite conocer todas
las propiedades deseables. La teoría descrita en este capítulo es aplicable a ambas metodologías de diseño,
aunque es más práctica cuando se emplea en la de tipo descendente.
Iniciamos este capítulo comentando de manera informal algunos criterios en la Sección 10.1 para determinar
un buen o mal esquema de relación. En la Sección 10.2 definimos el concepto de dependencia funcional, una
restricción formal entre los atributos que es la herramienta principal para la medida formal de la idoneidad del
agrupamiento de atributos en los esquemas de relación. También se estudian y analizan las propiedades de las
dependencias funcionales. La Sección 10.3 se centra en las formas normales y en el proceso de normalización
usando dependencias funcionales. Las formas normales sucesivas están definidas para cumplir el conjunto de
restricciones deseables expresadas mediante dependencias funcionales. El procedimiento de normalización
consiste en la aplicación de una serie de comprobaciones de las relaciones para cumplir con unos requisitos
cada vez más restrictivos y descomponer las relaciones cuando sea necesario. En la Sección 10.4 tratamos las
definiciones más generales de las formas normales que pueden aplicarse directamente a un diseño concreto y
que no precisan de un análisis paso a paso y una normalización.
El Capítulo 11 continúa con el desarrollo de la teoría para un buen diseño del esquema relacional.
Comentamos las propiedades deseables de la descomposición relacional (propiedad de reunión no aditiva y
de preservación de dependencia funcional) y después consideramos la metodología de tipo ascendente en el
diseño de una base de datos que consiste en un conjunto de algoritmos. Estos algoritmos asumen como entra-
da un conjunto dado de dependencias funcionales y consiguen un diseño relacional en una forma normal de
destino a la vez que añade las propiedades deseables antes comentadas. También se presenta un algoritmo
general que verifica si una descomposición tiene o no la propiedad de reunión sin pérdida (Algoritmo 11.1).
El Capítulo 11 contiene además la definición de tipos de dependencias adicionales y formas normales avan-
zadas que lleva más allá la idoneidad de un esquema de relación.
El lector que sólo está interesado en una introducción informal a la normalización puede saltarse las Secciones
10.2.3, 10.2.4 y 10.2.5. Si no se estudia el Capítulo 11 en un curso, recomendamos una introducción rápida a
las propiedades deseables de la descomposición mostradas de la Sección 11.1 y un debate de la propiedad
NJB, además del Capítulo 10.
1 Elmodelo relacional binario es una excepción en la que se usa esta metodología en la práctica. Un ejemplo del mismo es la metodolo-
gía NIAM (Verheijen y VanBekkum 1982).
10.1 Directrices de diseño informales para los esquemas de relación 283
Figura 10.1. Una versión simplificada del esquema de base de datos relacional EMPRESA.
EMPLEADO F.K.
NombreE Dni FechaNac Dirección NúmeroDpto
P.K.
DEPARTAMENTO F.K.
NombreDpto NúmeroDpto DniDirector
P.K.
LOCALIZACIONES_DPTO
F.K.
NúmeroDpto UbicaciónDpto
P.K.
PROYECTO F.K.
NombreProyecto NumProyecto UbicaciónProyecto NumDptoProyecto
P.K.
TRABAJA_EN
F.K. F.K.
Dni NumProyecto Horas
P.K.
284 Capítulo 10 Dependencias funcionales y normalización en bases de datos relacionales
La semántica de los otros dos esquemas de relación de la Figura 10.1 es algo más compleja. Cada tupla de
LOCALIZACIONES_DPTO consta de un número de departamento (NúmeroDpto) y una de las localizaciones
del departamento (UbicaciónDpto). Cada tupla de TRABAJA_EN contiene el DNI del empleado
(DniEmpleado), el número de uno de los proyectos en los que trabaja (NumProyecto) y el número de horas
semanales que le dedica al mismo (Horas). Sin embargo, ambos esquemas tienen una interpretación bien defi-
nida y sin ambigüedad. El esquema LOCALIZACIONES_DPTO representa un atributo multivalor de DEPAR-
TAMENTO, mientras que TRABAJA_EN es una relación M:N entre EMPLEADO y PROYECTO. Por consi-
guiente, todo el esquema de relaciones de la Figura 10.1 podría considerarse como fácil de explicar y, por
tanto, bueno desde el punto de vista de contar con una semántica clara. De esta forma, podemos formular la
siguiente directriz informal de diseño.
Directriz 1
Diseñar un esquema de relación para que sea fácil explicar su significado. No combine atributos de varios
tipos de entidad y de relación en una única relación. Intuitivamente, si un esquema de relación se corres-
Figura 10.2. Ejemplo del estado de la base de datos para el esquema de base de datos relacional de la
Figura 10.1.
EMPLEADO
NombreE Dni FechaNac Dirección NúmeroDpto
Pérez Pérez, José 123456789 09-01-1965 Eloy I, 98 5
Campos Sastre, Alberto 333445555 08-12-1955 Avda. Ríos, 9 5
Jiménez Celaya, Alicia 999887777 19-07-1968 Gran Vía, 38 4
Sainz Oreja, Juana 987654321 20-06-1941 Cerquillas, 67 4
Ojeda Ordóñez, Fernando. 666884444 15-09-1962 Portillo, s/n 5
Oliva Avezuela, Aurora 453453453 31-07-1972 Antón, 6 5
Pajares Morera, Luis 987987987 29-03-1969 Enebros, 90 4
Ochoa Paredes, Eduardo 888665555 10-11-1937 Las Peñas, 1 1
DEPARTAMENTO LOCALIZACIONES_DPTO
NombreDpto NúmeroDpto DniDirector NúmeroDpto UbicaciónDpto
Investigación 5 333445555 1 Madrid
Administración 4 987654321 4 Gijón
Sede central 1 888665555 5 Valencia
5 Sevilla
5 Madrid
PROYECTO
NombreProyecto NumProyecto UbicaciónProyecto NumDptoProyecto
ProductoX 1 Valencia 5
ProductoY 2 Sevilla 5
ProductoZ 3 Madrid 5
Computación 10 Gijón 4
Reorganización 20 Madrid 1
Comunicaciones 30 Gijón 4
10.1 Directrices de diseño informales para los esquemas de relación 285
Figura 10.3. Dos esquemas de relación con anomalías en la actualización. (a) EMP_DEPT y (b) EMP_PROY
(a)
EMP_DEPT
NombreE Dni FechaNac Dirección NúmeroDpto NombreDpto DniDirector
(b)
EMP_PROY
Dni NumProyecto Horas NombreE NombreProyecto UbicaciónProyecto
DF1
DF2
DF3
ponde con un tipo de entidad o de relación, es correcto interpretar y explicar su significado. Por contra, si la
relación está compuesta por una mezcla de múltiples entidades y relaciones, se producirá una ambigüedad
semántica y la relación no podrá explicarse con claridad.
Los esquemas de relación de las Figuras 10.3(a) y 10.3(b) tienen también semánticas claras (el lector debe
ignorar por el momento las líneas que aparecen bajo las relaciones; se utilizan para documentar la notación
de dependencia funcional que explicamos en la Sección 10.2). Una tupla en el esquema de relación
EMP_DEPT de la Figura 10.3(a) representa a un solo empleado, aunque incluye información adicional: el
286 Capítulo 10 Dependencias funcionales y normalización en bases de datos relacionales
nombre del departamento en el que trabaja (NombreDpto) y el DNI del director de ese departamento
(DniDirector). En la relación EMP_PROY de la Figura 10.3(b), cada tupla relaciona un empleado con un pro-
yecto, aunque incluye también el nombre del empleado (NombreE), el del proyecto (NombreProyecto) y la
localización de éste (UbicaciónProyecto). Aunque desde el punto de vista lógico no existe nada erróneo en
estas dos relaciones, se considera que tienen un diseño pobre porque violan la directriz 1 al mezclar atributos
de dos entidades del mundo real; EMP_DEPT combina atributos de empleados y departamentos, mientras que
EMP_PROY combina atributos de empleados y proyectos y la relación TRABAJA_EN. Deberían utilizarse
como vistas, aunque esto provocaría problemas cuando se usasen como relaciones base, tal y como veremos
en la siguiente sección.
2 Estas
anomalías fueron identificadas por Codd (1972a) para justificar la necesidad de normalización en las relaciones, como ya comen-
taremos en la Sección 10.3.
10.1 Directrices de diseño informales para los esquemas de relación 287
Figura 10.4. Ejemplo de los estados de EMP_DEPT y EMP_PROY resultantes de aplicar una NATURAL JOIN
a las relaciones de la Figura 10.2. Éstas deberían almacenarse como relaciones base por motivos de rendi-
miento.
Redundancia
EMP_DEPT
NombreE Dni FechaNac Dirección NúmeroDpto NombreDpto DniDirector
Pérez Pérez, José 123456789 09-01-1965 Eloy I, 98 5 Investigación 333445555
Campos Sastre, Alberto 333445555 08-12-1955 Avda. Ríos, 9 5 Investigación 333445555
Jiménez Celaya, Alicia 999887777 19-07-1968 Gran Vía, 38 4 Administración 987654321
Sainz Oreja, Juana 987654321 20-06-1941 Cerquillas, 67 4 Administración 987654321
Ojeda Ordóñez, Fernando. 666884444 15-09-1962 Portillo, s/n 5 Investigación 333445555
Oliva Avezuela, Aurora 453453453 31-07-1972 Antón, 6 5 Investigación 333445555
Pajares Morera, Luis 987987987 29-03-1969 Enebros, 90 4 Administración 987654321
Ochoa Paredes, Eduardo 888665555 10-11-1937 Las Peñas, 1 1 Sede central 888665555
Redundancia Redundancia
EMP_PROY
3 Esto no es tan serio como otros problemas, ya que todas las tuplas pueden actualizarse con una sola sentencia SQL.
4 El rendimiento de una consulta especificada en una vista que es la concatenación de varias relaciones base depende de cómo el DBMS
implementa la vista. Muchos RDBMSs materializan las vistas usadas frecuentemente de forma que no se tengan que llevar a cabo las
concatenaciones más habituales. El DBMS es responsable de la actualización de la vista materializada (ya sea inmediata o periódicamen-
te) siempre que las relaciones base se modifiquen.
5 Esto se debe a que las concatenaciones externas e internas producen resultados diferentes cuando existen valores NULL implicados en
ellas. Los usuarios deben, por tanto, tener cuidado con los distintos significados de cada tipo de concatenación. Lo que resulta razonable
para usuarios sofisticados, puede ser difícil para otros.
la Sección 8.5.1 presentamos varias comparaciones que implican valores NULL donde el resultado (en la lógica de tres valores) es
6 En
El tener la misma representación para todos los NULL compromete los diferentes significados que pueden
tener. Por consiguiente, podemos establecer otra directriz.
Directriz 3
Hasta donde sea posible, evite situar en una relación base atributos cuyos valores sean NULL frecuentemente.
En caso de no poderse evitar, asegúrese de que se aplican sólo en casos excepcionales y no los aplique a la
mayor parte de las tuplas de la relación.
Utilizar el espacio eficientemente y evitar concatenaciones son los dos criterios principales que determinan si
incluir las columnas que pueden tener valores NULL en una relación o tener una relación separada para esas
columnas (con las columnas clave apropiadas). Por ejemplo, si sólo el 10 por ciento de los empleados tienen
oficinas individuales, no es razón suficiente para la inclusión de un atributo NúmeroOficina en la relación
EMPLEADO; en lugar de ello, se puede crear una relación OFICINAS_EMPS(DniEmpleado, NúmeroOficina)
que incluya las tuplas de los empleados con oficinas individuales.
Directriz 4
Diseñar los esquemas de relación de forma que puedan concatenarse con condiciones de igualdad en los atri-
butos que son parejas de clave principal y foreign key de forma que se garantice que no se van a generar tuplas
falsas. Evite las relaciones que contienen atributos coincidentes que no son combinaciones de foreign key y
clave principal porque la concatenación de estos atributos puede producir tuplas falsas.
Esta directriz informal debe ser, obviamente, redefinida de una manera más adecuada. En el Capítulo 11 tra-
taremos una condición formal llamada propiedad de reunión no aditiva que garantiza que ciertas concatena-
ciones no producen tuplas falsas.
290 Capítulo 10 Dependencias funcionales y normalización en bases de datos relacionales
Figura 10.5. Diseño particularmente pobre de la relación EMP_PROY de la Figura 10.3(b). (a) Los dos
esquemas de relación EMP_LOCS y EMP_PROY1. (b) El resultado de proyectar la extensión de EMP_PROY
de la Figura 10.4 a las relaciones EMP_LOCS y EMP_PROY1.
(a)
EMP_LOCS
NombreE UbicaciónProyecto
P.K.
EMP_PROJ1
Dni NumProyecto Horas NombreProyecto UbicaciónProyecto
P.K.
(b)
EMP_LOCS EMP_PROJ1
Ubicación- Ubicación-
NombreE Dni NumProyecto Horas NombreProyecto
Proyecto Proyecto
Pérez Pérez, José Valencia 123456789 1 32.5 ProductoX Valencia
Figura 10.6. Resultado de aplicar una CONCATENACIÓN NATURAL a las tuplas que se encuentran por enci-
ma de las líneas discontinuas en EMP_PROY1 y EMP_LOCS de la Figura 10.5. Las tuplas falsas generadas
aparecen marcadas con asteriscos.