Subido por Moises V Veras

Normalización de bases de datos

Anuncio
Instituto Tecnológico “Ayacucho”
Carrera: Sistemas Informáticos
Materia: Base de Datos I
Lic. Wendy Navia Chambi
Normalización de bases de datos
La normalización de bases de datos es el proceso secuencial y cíclico para poner en orden y mejorar
las relaciones, así evitar la redundancia de datos, proteger la integridad de los mismos y corregir
anomalías de diseño.
La redundancia de datos es la causante de las anomalías de diseño, las cuales se presentan en la
inserción, modificación y eliminación de datos.
Anomalías de inserción: Esta ocurre cuando algunos atributos no pueden ser insertados a la relación
sin que existan otros atributos entre los cuales no deberían depender entre sí.
Por ejemplo, en el siguiente esquema tenemos la relación de dormitorios asignados a alumnos, y si
quisiéramos agregar un dormitorio, tendríamos que lo asignarlo a alguien.
Entonces vemos que no podemos insertar algunos datos si no existen otros datos que deberían ser
independientes.
Anomalías de modificación: Al modificar datos cuando existe redundancia, no se modifica el dato
duplicado en todas las instancias.
Por ejemplo, en la siguiente ilustración vemos que si modificamos un apellido esta no se modifica en
todas las instancias.
De esta manera terminaremos con dos alumnos diferentes.
Anomalías de eliminación: En estas anomalías podemos tener que al eliminar algunos atributos,
también se pierdan otros atributos que no queríamos eliminar.
Por ejemplo, en la siguiente relación se tiene un registro de las materias que cursan los estudiantes
y si por ejemplo un alumno quiere abandonar una materia, también se eliminaría toda la información
relacionada tanto del curso como del profesor.
1
Instituto Tecnológico “Ayacucho”
Carrera: Sistemas Informáticos
Materia: Base de Datos I
Lic. Wendy Navia Chambi
Para evitar estas anomalías debemos aplicar el proceso de normalización.
El proceso de normalización es un conjunto de reglas definidas, a las cuales se les conoce
como formas normales (NF Normal Forms).
5.1 Primera Forma Normal (1FN)
Una relación está en primera forma normal si no tiene grupos repetitivos.
Al observar el esquema anterior, vemos que tenemos un grupo repetitivo de cursos y en este caso,
el grupo repetitivo limita la cantidad de cursos que puede tomar un alumno, además, si el alumno se
inscribe en menos cursos, se está desperdiciando espacio.
Otro problema que tiene este grupo repetitivo es que si buscamos un dato, tendríamos que realizar
la búsqueda en tres atributos de cada tupla.
Podemos arreglar este problema si creamos una tupla para cada ocurrencia.
De esta manera ya no hay grupos repetitivos, sin embargo ahora tenemos otros problemas.
Tenemos llaves primarias duplicadas y además una redundancia de datos, para evitar estos
problemas, debemos tomar la relación original, dividirla en relaciones más pequeñas y agregar a los
grupos repetitivos la llave primaria de la relación original.
2
Instituto Tecnológico “Ayacucho”
Carrera: Sistemas Informáticos
Materia: Base de Datos I
Lic. Wendy Navia Chambi
Con esto ya tenemos a nuestra tabla en primera forma normal y a la tabla nueva debemos aplicar
de nuevo el proceso de normalización.
Vemos que en nuestra nueva tabla hay llaves duplicadas, pero en realidad es la llave primaria de
otra relación que hemos utilizado como vinculo, a estas llaves se les conoce como llaves foráneas
(FK).
Además vemos que en los cursos hay redundancia.
Esta redundancia la podemos eliminar agregando otra relación que contenga los nombres de las
materias y alguna llave primaria que sirva de enlace con la relación que estamos analizando.
3
Instituto Tecnológico “Ayacucho”
Carrera: Sistemas Informáticos
Materia: Base de Datos I
Lic. Wendy Navia Chambi
De esta manera nuestra tabla quedaría con dos llaves foráneas, una de alumno y otra de código, a
esto se le conoce como llave primaria compuesta y a este tipo de tablas se les conoce como tablas
de relación.
Finalmente vemos que ya no hay tuplas repetidas, no hay grupos repetitivos, los atributos son
atómicos, no importa el orden de los datos y existe una llave primaria, por lo tanto, ya tenemos
nuestra tabla en 1FN.
5.2 Segunda Forma Normal (2FN)
Una relación esta en segunda forma normal si está en la primera forma normal y si todos los atributos
dependen de la llave primaria completa.
Nota: Si la llave primaria no es una llave compuesta, la relación ya está en segunda forma normal.
Veamos un ejemplo con una llave primaria compuesta.
Tenemos que la llave primaria compuesta es la unión de los atributos alumno y código. Los atributos
curso y calificación, son atributos dependientes.
En este caso tenemos que la calificación depende del alumno y del curso que está tomando, a esto
se le conoce como dependencia funcional completa.
Sin embargo el curso solamente de pende del código del curso y a esto lo llamaremos
como dependencia funcional parcial.
Entonces debemos tomar esa dependencia funcional parcial y moverla a otra relación, suprimiendo
de la relación original el atributo que es parcialmente dependiente.
4
Instituto Tecnológico “Ayacucho”
Carrera: Sistemas Informáticos
Materia: Base de Datos I
Lic. Wendy Navia Chambi
De esta forma todas las relaciones que hemos obtenido dependerán completamente de la llave
primaria.
Vemos que en la tabla de curso tenemos una redundancia, esta redundancia debe ser eliminada de
esta relación.
En este caso vemos que los atributos dependen completamente de la llave primaria, así que ya están
en segunda forma normal.
5.3 Tercera Forma Normal (3FN)
A la tercera forma normal se le conoce como forma de la dependencia funcional transitiva y la
podemos definir como:
Una relación está en tercera forma normal si está en segunda forma normal y ningún atributo no
determinante depende transitivamente de la llave primaria.
Es decir, ningún atributo no primo depende funcionalmente de otro atributo no primo.
Veamos el siguiente caso: Tenemos una relación con los atributos A, B, C, D y supongamos que A,
B, determinan a C y C determina a D.
5
Instituto Tecnológico “Ayacucho”
Carrera: Sistemas Informáticos
Materia: Base de Datos I
Lic. Wendy Navia Chambi
Entonces identificamos que la llave primaria es A, B y los atributos dependientes son C y D. En este
caso los atributos A, B son atributos primos y los atributos dependientes C, D son atributos no primos.
Como D, depende de C tendremos que mover esa dependencia funcional a otra relación.
Y eliminar de la relación original el atributo dependiente.
Ahora tenemos que el atributo C en la segunda relación es una llave primaria, así que el atributo D ya
no depende de un atributo No Primo.
Veamos un ejemplo con datos. Supongamos que tenemos una relación donde se lleva registro de
los clientes, sus vendedores y los adeudos que tienen los clientes.
Vemos que no hay grupos repetitivos así que está en primera forma normal, la llave primaria no es
compuesta, por lo tanto está en segunda forma normal también.
Si tomamos esta relación e identificamos sus atributos con letras, veremos las siguientes
dependencias funcionales.
6
Instituto Tecnológico “Ayacucho”
Carrera: Sistemas Informáticos
Materia: Base de Datos I
Lic. Wendy Navia Chambi
A (Cliente #) determina a B (Nombre), C (Apellido), D (Saldo del cliente), E (Vendedor del cliente).
También el atributo B (Vendedor #) determina a F (nombre del vendedor), G (Apellido del vendedor).
Además vemos que es una dependencia funcional transitiva ya que A determina a E y E determina
a F, G pero E no es un atributo primo y la dependencia F, G viola la regla de la tercera forma normal.
Así que tomamos la primera dependencia funcional y movemos a una nueva tabla la dependencia
funcional que viola la tercera forma normal, de esta manera nuestras tablas quedan enlazadas
mediante el atributo que generaba la transitividad.
Con esto nuestra relación ya está en tercera forma normal.
Teniendo nuestras relaciones normalizadas en la tercera forma normal, es suficiente en casi todos
los casos, pero esto no siempre es suficiente para eliminar la redundancia en nuestra base de datos.
5.4 Forma normal de Boyce y Codd (BCNF)
Aun en la tercera forma normal puede haber redundancia, son casos muy inusuales y se presenta
en casos donde hay más de una llave candidata y estas llaves candidatas tienen atributos en común,
para esos casos podemos ayudarnos de la forma normal de Boyce y Codd.
Una relación está en forma normal de Boyce y Codd si está en tercera forma normal y para cada
dependencia funcional no trivial que exista, el determinante es una súper llave.
Veamos un ejemplo con datos:
Supongamos que tenemos una relación donde se nos muestran los cursos en los que están inscritos
los alumnos y los profesores que los dictan.
Observaremos que un alumno puede estar inscrito en varios cursos y un curso puede ser dictado
por distinto profesor, esto quiere decir que necesitamos el alumno y el curso para poder determinar
el profesor.
7
Instituto Tecnológico “Ayacucho”
Carrera: Sistemas Informáticos
Materia: Base de Datos I
Lic. Wendy Navia Chambi
Por otro lado, vemos que siempre el mismo profesor dicta el mismo curso, es decir, el profesor
determina el curso.
Las llaves candidatas para esta relación serían Alumno, Curso y Alumno, Profesor.
Aquí el problema se presenta cuando un alumno se da de baja de una materia, perderíamos toda la
información de la tupla, o cuando llega un nuevo profesor a dictar una nueva materia, no podríamos
agregarla hasta que algún alumno se inscribiera en el curso.
Esta anomalía sucede porque la dependencia funcional Profesor, Curso viola la Forma Normal de
Boyce Codd. Profesor no es una Súper Llave.
Lo que debemos hacer es mover la dependencia funcional Profesor, Curso a una nueva relación y
en la relación original solamente dejamos el determinante de esta dependencia funcional y el resto
de los atributos.
Con esto nos quedan dos relaciones y además ya estarían en la forma normal de Boyce y Codd.
8
Instituto Tecnológico “Ayacucho”
Carrera: Sistemas Informáticos
Materia: Base de Datos I
Lic. Wendy Navia Chambi
5.5 Cuarta forma normal (4 FN)
La cuarta forma normal, es la forma normal de las dependencias multivaluadas, así que primero hay
que ver que es una dependencia multivaluada.
Dependencia Multivaluada. En una relación con los atributos P, Q y V existe una dependencia
multivaludada de Q con respecto a P si los posibles valores de Q para un par de valores de P y V
dependen únicamente del valor de P.
Para que quede más claro veamos un ejemplo.
En la siguiente tabla tenemos nuestras tuplas P y Q, vemos que P y Q comparten los mismos
atributos A.
Debemos ver si existe una tupla V que tenga el mismo conjunto de atributos A que la tupla P, el
mismo conjunto de atributos B de la tupla P y el resto de los atributos de la nueva tupla debe ser el
resto de la tupla Q.
Sabemos que no importa el orden de las tuplas, así que si invirtiéramos el orden de P y Q y
aplicáramos el mismo proceso vamos a obtener una nueva tupla W con los mismos atributos A de la
tupla P y B y el resto de atributos de la tupla Q.
También observaríamos que hay una combinación de los atributos B con el resto de los atributos.
9
Instituto Tecnológico “Ayacucho”
Carrera: Sistemas Informáticos
Materia: Base de Datos I
Lic. Wendy Navia Chambi
Decimos entonces que A multidetermina a B. Este comportamiento debe ser constante en todas las
tuplas y para corregir este problema debemos mover a una nueva relación la dependencia funcional
multivaluada y en otra relación, dejaremos la dependencia funcional y el resto de los atributos.
Finalmente eliminar las tuplas repetidas.
Definiendo la cuarta forma normal, tenemos que una relación está en cuarta forma normal si está en
tercera forma normal o en forma normal de Boyce y Codd y en cada dependencia multivaluada no
trivial que exista, el determinante es una súper llave.
En la siguiente tabla, vemos que el alumno multidetermina al idioma, también, alumno multidetermina
al resto de los atributos.
Para corregir este problema, movemos la dependencia funcional Alumno – Idioma a una relación y
dejando en otra relación el determinante Alumno y el resto de los atributos.
10
Instituto Tecnológico “Ayacucho”
Carrera: Sistemas Informáticos
Materia: Base de Datos I
Lic. Wendy Navia Chambi
En este caso, ambas dependencias funcionales s son triviales ya que la unión del determinante y
los elementos dependientes son iguales a la relación.
Por lo tanto estas dos relaciones ya están en cuarta forma normal.
5.6 Quinta forma normal (5 FN)
La quinta forma norma también es conocida como la forma normal de la proyección – unión.
Una relación está en quinta forma normal si está en cuarta forma normal y no puede ser
descompuesta no-aditivamente en relaciones más pequeñas.
No-aditiva significa que a la relación final no quedará con tuplas extra al unir naturalmente varias
relaciones.
Si una relación satisface la dependencia de unión natural, o sea que el conjunto de n relaciones es
igual a la relación original entonces NO está en quinta forma normal, ya que puede ser descompuesta
no aditivamente en relaciones más pequeñas.
Veamos un par ejemplos para aclarar estos conceptos.
Supongamos que tenemos una relación de empleados con el puesto que ocupan y el proyecto en el
que están asignados.
Realicemos 3 descomposiciones, una del empleado con su puesto, otra del empleado con su
proyecto y una más del puesto con el proyecto.
Tomamos estas tres proyecciones y realizamos una unión natural entre ellas (el orden de las uniones
naturales no importa).
Vemos que al unir las relaciones nos dan la relación original, por lo tanto la relación resultante no
está en quinta forma normal porque puede dividirse en relaciones más pequeñas de una forma no
aditiva.
11
Instituto Tecnológico “Ayacucho”
Carrera: Sistemas Informáticos
Materia: Base de Datos I
Lic. Wendy Navia Chambi
Sin embargo, las 3 proyecciones si están en quinta forma normal.
En el segundo caso supongamos que tenemos una productora con material audiovisual los cuales
se los vende a los canales de TV.
Y realizamos las mismas proyecciones como en la relación anterior tendremos las siguientes
proyecciones.
Si realizamos las operaciones correspondientes a la unión natura tendremos lo siguiente.
12
Instituto Tecnológico “Ayacucho”
Carrera: Sistemas Informáticos
Materia: Base de Datos I
Lic. Wendy Navia Chambi
Vemos que el resultado nos da dos tuplas que no cumplen con las condiciones de unión natural y
por lo tanto deben ser eliminadas del resultado.
Sin embargo aunque eliminamos esas dos tuplas, si comparamos el resultado con la relación original,
vemos que sigue habiendo una tupla demás, por lo tanto, estas relaciones no son iguales.
Esta descomposición fue una descomposición aditiva y no hay una dependencia de unión natural,
por lo tanto la relación original ya está en quinta forma normal.
Es muy importante la normalización de las relaciones en nuestra base de datos para evitar la
redundancia, garantizar la integridad de los datos y corregir anomalías de diseño. Pero, ¿debemos
normalizar todas las relaciones?
A continuación vemos un par de ejemplos que nos pueden ayudar a decidir cuándo debemos permitir
la redundancia.
5.6 Desnormalización de bases de datos
Desnormalizar significa que tendremos que permitir o generar redundancia para mejorar el
desempeño de la base de datos.
Si analizamos un caso de la parte de un sistema de facturación, donde tenemos en una relación los
datos de las facturas y en otra los detalles de estas facturas.
En estos detalles, se lleva el registro de los productos que se han vendido y por lo tanto tenemos
otra relación de productos.
El total de la factura sería un dato derivable que pudiéramos obtener de las operaciones sobre los
datos en nuestras relaciones.
Dicho lo anterior, si tenemos miles de facturas y miles de detalles, para sacar el total de las ventas
en cada factura, tendríamos que realizar muchísimas operaciones ¿no sería más sencillo almacenar
el total en la relación de las facturas, aunque este sea un campo derivable?
13
Instituto Tecnológico “Ayacucho”
Carrera: Sistemas Informáticos
Materia: Base de Datos I
Lic. Wendy Navia Chambi
Siguiendo con nuestro ejemplo, dijimos que tenemos una relación para llevar el registro de los
productos, otra para los detalles y una más para las facturas.
Supongamos que tenemos una venta e imprimimos la factura número 1, la cual ha quedado de la
siguiente manera.
¿Qué pasaría con esta factura si en un futuro aumentamos los precios de los productos, si
cambiamos el nombre de los productos y al aplicar estos cambios reimprimiéramos la factura número
1?
Como los datos han cambiado, al reimprimir la factura obtendríamos algo como lo siguiente.
Esta factura muestra datos incorrectos y por lo tanto no nos sirve, esto se debe a que hemos
normalizado por completo las relaciones.
Si hubiéramos mantenido atributos redundantes como por ejemplo, la descripción y el precio de los
productos, este problema no hubiera aparecido.
14
Instituto Tecnológico “Ayacucho”
Carrera: Sistemas Informáticos
Materia: Base de Datos I
Lic. Wendy Navia Chambi
Existen otras soluciones sin necesidad de recurrir a la redundancia pero las implicaciones serían que
nuestra base de datos sería más complicada y al tener que realizar muchísimas operaciones, el
proceso de recuperación de los datos sería muy lento.
Conclusión
Como vimos, la normalización de bases de datos es muy importante para corregir defectos de diseño,
así evitar la redundancia de datos y garantizar la integridad de estos.
Pero debemos analizar cuidadosamente cuando debemos permitir la redundancia para simplificar el
diseño y obtener mejor rendimiento de la base de datos.
Por el momento es todo, si tienes alguna pregunta déjala en los comentarios.
En la siguiente sección pasaremos a la de la implementación utilizando MySQL, así que suscríbete
a mi canal de Youtube para que no te pierdas de do, si tienes alguna pregunta déjala en los
comentarios.
15
Descargar