Resumen
El diseño de bases de datos es una tarea muy importante para obtener el máximo beneficio de la información. Es por eso necesario un tratamiento adecuado de los datos, a través de una Base de Datos, a fin de poder acceder a los datos eficientemente. Este articulo trata de ese importante proceso, la Normalización de las Bases de Datos, bajo el fundamento de Edgar Codd, el llamado Método de los 3 pasos.
Normalización
Se define Normalización, como el proceso que simplifica las relaciones entre los datos. Éste es un proceso necesario para llevar a la práctica el modelo lógico de una base de datos relacional determinada. Existen varios métodos para llevar a cabo este proceso. Edgar Codd fundamentó el famoso Método de los 3 pasos, posteriormente Boyce se une a sus trabajos y juntos fundamentan posteriormente la 4a y 5a Formas Normales 4NF y 5NF. No obstante debido a su complejidad es el método de los 3 pasos es el más utilizado. El método de los 3 Pasos consiste en convertir una relación del Diagrama Entidad Relación, a tablas o relaciones del modelo relacional. A continuación veremos en que consiste este método:
1NF (Primera forma normal)
Consiste en convertir a archivos planos una relación.
Quiere decir que se elimina la interrelación dejando como resultado una sola relación, es decir bidimensional, Renglón (tupla) y Columna (atributo); o sea se elimina la relación entre las 2 entidades y debe quedar una tabla que contiene los atributos de las 2 entidades que establecen la relación en el DER, incluyendo si los hay, los atributos derivados.
2NF (Segunda forma normal)
1. La relación debe estar en 1NF.
2. Se debe eliminar la dependencia funcional Incompleta.
Quiere decir que se encuentren las llaves candidatas y solo una por relación (tabla).
Para conseguir lo anterior, se debe construir el diagrama de dependencias funcionales, que sirve para determinar los Atributos independientes o sea las llaves, ya que solo debe haber una (1) por cada relación.
Este diagrama se construye enlistando verticalmente los atributos de la relación resultante de la 1NF e indicando el atributo al cual depende es decir que lo identifica. En el siguiente Diagrama Entidad Relación (DER):
Nótese que los atributos subrayados, son únicos e identifican al tuplo en la relación, de acuerdo a la metodología DER. Existe una relación de muchos a muchos entre la Relación TABLA 1 y la relación TABLA 2. En la 1NF se obtendría la siguiente relación:
1NF (Atributo 1, Atributo 2, Atributo 3, Atributo 4, Atributo 5, Atributo 6, Atributo 7, Atributo 8, Atributo 9, Atributo 10, Atributo 11) Para obtener la 2NF, es necesario que la relación de entrada esté en 1NF y además se elimine la dependencia funcional incompleta, por lo tanto es necesario realizar el diagrama de dependencias funcionales y determinar las claves o llaves candidatas, quedando solo una (1) por cada relación.
El DFD (Diagrama de Dependencia Funcional) que se obtiene sería:
Atributo 1 * depende funcionalmente de atributo 7 Atributo 2 depende funcionalmente de a1 Atributo 3 depende funcionalmente de a1 Atributo 4 depende funcionalmente de a1 Atributo 5 depende funcionalmente de a1 Atributo 6 depende funcionalmente de a1 Atributo 7 * depende funcionalmente de a1 Atributo 8 depende funcionalmente de a7 Atributo 9 depende funcionalmente de a7 Atributo 10 depende funcionalmente de a7 Atributo 11 derivado, depende funcionalmente de a1 y de a7 Este diagrama nos sirve para detectar cuales son los atributos independientes y los dependientes, en este caso a1 y a7 son independientes y son por lo tanto llaves o claves, pero no podemos dejarlos en una sola relación, por lo que debemos separarlos. También observamos que hay atributos que dependen de los dos independientes y que estos mismos, dependen uno de otro (ciclo) lo cual nos indica que se deben llevar a otra relación, o tabla, por lo tanto resultan de esta 2NF: TABLA 1 (atributo 1 * (llave), atributo 2, atributo 3, atributo 4, atributo 5, atributo 6) TABLA 2 (atributo 7 * (llave), atributo 8, atributo 9, atributo 10) Tercera relación (atributo 1, atributo 7, atributo 11)
3NF (Tercera forma normal)
1. La relación debe estar en 2NF.
2. Consiste en eliminar la transitividad
Generalmente cuando dejamos una relación en 2ª forma normal (2NF), queda en 3ª Forma Normal (3NF), esto significa que cuando un atributo depende de la llave y de algún otro atributo que no es llave, entonces solo se le deja la dependencia de la llave y se elimina la otra, pero llevando a otra relación a estos atributos, siendo atributo llave el atributo independiente.
Por ejemplo, del Diagrama Entidad Relación (DER) que se presentó anteriormente, obtuvimos la 2ª Forma Normal (2NF) y de allí obtenemos 3 relaciones o tablas: TABLA 1:
Atributo 1 * (llave) Atributo 2 depende funcionalmente de atributo 1 Atributo 3 depende funcionalmente de atributo 1 Atributo 4 depende funcionalmente de atributo 1 Atributo 5 * depende funcionalmente de atributo 1 Atributo 6 depende funcionalmente de atributo 1 y depende funcionalmente de atributo 5 Por lo tanto, resultarían 2 tablas así:
Tabla 1:
Atributo 1 * llave Atributo 2 depende funcionalmente de atributo 1 Atributo 3 depende funcionalmente de atributo 1 Atributo 4 depende funcionalmente de atributo 1 Atributo 5 depende funcionalmente de atributo 1 Tabla 2:
Atributo 5 * llave Atributo 6 depende funcionalmente de atributo 5 ***** Este proceso se realiza por cada relación en el DER o Esquema.
Caso Práctico:
En primera instancia, se debe normalizar partiendo del Diagrama Entidad Relación. Cada relación, es decir cada rombo significa que hay un proceso de normalización (Aplicar algún método para cada rombo, es decir aplicar el Método de los 3 pasos para cada uno).
En el diagrama, hay 2 rombos, por lo tanto, hay que hacer 2 veces el proceso de normalización:
Para la relación entre Alumno – Materia:
Paso 1:
Convertir a archivos planos:
Nombre relación ¨1NF¨ (todos los atributos, o sea) 1NF Alumno-Materia (nombre, dirección, sexo, carrera, promedio, clave, descripción, carrera, semestre, créditos) Paso 2: 2NF, Eliminar la dependencia funcional incompleta, es decir que se debe tener solo una llave principal en la relación.
Como se aprecia, en 1NF hay 2 llaves al menos, Codd fundamentó un método para determinar las llaves; el método es el de escribir un diagrama de dependencias funcionales (DDF), se enlistan hacia abajo los atributos así:
DDF:
nombre dirección sexo carrera promedio clave descripción carrera semestre créditos fecha calificación Ahora hay que analizar cada atributo para saber de cual atributo depende funcionalmente, o sea, cual atributo los identifica. En el ejemplo presentado:
El nombre identifica a la dirección, sexo carrera y promedio del alumno, entonces nombre es una llave.
La clave identifica a la descripción carrera semestre y créditos de la materia, entonces clave es una llave.
El numero de alumno y la clave de materia cuando se relacionan en una fecha determinada se tiene la calificación de ese alumno en esa materia, por lo tanto estos atributos dependen funcionalmente de la clave de materia y del número del alumno.
Como en cada relación no puede haber más de una llave, entonces de este diagrama de dependencias funcionales se van a obtener 3 grupos; Los que dependen de la llave nombre (del alumno); Los que dependen de la clave (de la materia) y el 3er grupo, los que dependen del nombre y de la clave . (Nótese que suge de una relación que tiene una cardinalidad de N a M ). Entonces de la 2NF tenemos :
Alumno (nombre,dirección,sexo.carrera,promedio) Materia (clave,descripción,carrera,semestre,créditos) Alumno-Materia ( nombre, clave.fecha,calificacion ) Ya quedó en 2NF, seguimos con la 3NF, generalmente cuando la relación está en 2NF, queda en 3NF, como es en este caso, es decir, una relación está en 3NF cuando se elimina la transitividad, es decir que no hay redundancia en los atributos, en esta relación Alumno, Materia y Alumno-Materia no tienen ningún atributo que se repita, en teoría: si a se relaciona con b y b se relaciona con c, entonces a se relaciona con c y no hay necesidad de relacionar a con c, esta relación se eliminaría. En este caso no hay tal relación redundante, entonces la 3NF quedaría igual que 2NF:
Alumno (nombre,dirección,sexo.carrera,promedio) Materia (clave,descripción,carrera,semestre,créditos) Alumno-Materia ( nombre, clave.fecha,calificacion ) Para la relación entre Materia – Profesor:
Paso 1:
Convertir a archivos planos:
Nombre relación ¨1NF¨ (todos los atributos) 1NF Materia-Profesor (Clave, descripción, carrera, semestre, créditos, rfc, nombre, dirección electrónica, teléfono, sexo, sueldo) Paso 2: 2NF, Eliminar la dependencia funcional incompleta, es decir que se debe tener solo una llave principal en la relación.
Nuevamente se escribe el diagrama de dependencias funcionales (DDF), se enlistan hacia abajo los atributos así:
DDF:
clave descripción carrera semestre créditos
RFC
nombre
dirección electronica
telefono
sexo
sueldo horarios Ahora hay que analizar cada atributo para saber de cual atributo depende funcionalmente, o sea, cual atributo los identifica. En el ejemplo presentado:
El RFC del profesor, identifica al nombre, la dirección electrónica, el teléfono, el sexo y el sueldo del profesor, entonces RFC es la llave de esta relación.
La clave identifica a la descripción carrera semestre y créditos de la materia, entonces clave es una llave. Esta relación ya había sido normalizada, por lo tanto, permanece igual.
El RFC del profesor y la clave de materia cuando se relacionan en un momento determinado, se tiene el horario del profesor, por lo tanto este atributo depende funcionalmente de la clave de materia y del RFC del profesor. "Horarios" es un atributo llamado derivado, Como en cada relación no puede haber más de una llave, entonces de este diagrama de dependencias funcionales se van a obtener 3 grupos; Los que dependen de la llave RFC (del profesor); Los que dependen de la clave (de la materia) y el 3er grupo, los que dependen del RFC y de la clave . Entonces de la 2NF tenemos :
Profesor (RFC,nombre,dirección electronica, sexo, telefono, sueldo) Materia (clave,descripción,carrera,semestre,créditos) Profesor-Materia ( RFC, clave. Horarios ) Ya quedó en 2NF, seguimos con la 3NF, generalmente cuando la relación está en 2NF, queda en 3NF, como es en este caso, es decir, una relación está en 3NF cuando se elimina la transitividad, es decir que no hay redundancia en los atributos, en esta relación Profesor, Materia y Profesor-Materia no tienen ningún atributo que se repita, en teoría: si a se relaciona con b y b se relaciona con c, entonces a se relaciona con c y no hay necesidad de relacionar a con c, esta relación se eliminaría. En este caso no hay tal relación redundante, entonces la 3NF quedaría igual que 2NF:
Profesor (RFC,nombre,dirección electronica, sexo, telefono, sueldo) Materia (clave,descripción,carrera,semestre,créditos) Profesor-Materia ( RFC, clave. Horarios ) Finalmente el total de relaciones para esta base de datos, serían:
Alumno (nombre, dirección,sexo.carrera,promedio) Materia (clave, descripción,carrera,semestre,créditos) Alumno-Materia ( nombre, clave. fecha, calificacion )
Profesor (RFC, nombre, dirección electronica, sexo, telefono, sueldo) Profesor-Materia ( RFC, clave. Horarios ) Cada relación corresponde a una tabla en cualquier DBMS de tipo relacional.
Conclusión
La utilización de las Bases de Datos normalizadas nos permite crear sistemas de información más eficientes y con menos margen de error en la consulta, actualización de los datos.
Es importante concientizar a los profesionales del diseño de sistemas sobre la necesidad del proceso de normalización de las Base de datos , a fin de que el diseño resultante , se ciña a los estándares mundiales en sistemas informáticos y que permitan el eficiente manejo de los recursos e información.
Referencias
Date CJ, Introducción a los Sistemas de Bases de Datos, Ed Pearson Educación, 2001
Martin James, Organización de las Bases de Datos, Ed Prentice Hall Intl, 1977
Kroenke David, Procesamiento de Bases de Datos- Fundamentos Diseño e Implementacion, Ed Pearson-Prentice Hall, 8ª Ed, 2003
Cómo realizar la normalización de una base de datos
Profesores Titulares del Instituto Tecnológico de Nuevo León.
Adscritos al Depto. de Ingeniería en Sistemas Computacionales.
Autor:
Lic. Elsa Carolina Esparza Chávez.
elsa.esparza[arroba]gmail.com Lic.
Zeferino González Sánchez.
zeferino.gonzalez[arroba]itnl.edu.mx