fundamentos de bd - unidad 4 diseño de bd relacional

54
FUNDAMENTOS DE BASE DE DATOS Unidad IV: Diseño de Base de Datos Relacionales Este material está desarrollado para la asignatura Fundamentos de Base de Datos, de la carrera de Ingeniería en Sistemas Computacionales, plan de estudios ISIC-2010-224.

Upload: jose-antonio-sandoval-acosta

Post on 17-Jan-2017

31 views

Category:

Engineering


2 download

TRANSCRIPT

Page 1: Fundamentos de BD - Unidad 4 diseño de bd relacional

FUNDAMENTOS DE BASE DE DATOS

Unidad IV: Diseño de Base de Datos Relacionales

Este material está desarrollado para la asignatura Fundamentos de Base de Datos, de la carrera de Ingeniería en Sistemas Computacionales, plan de estudios ISIC-2010-224.

Page 2: Fundamentos de BD - Unidad 4 diseño de bd relacional

FUNDAMENTOS DE BASE DE DATOS

CompetenciaAplicar la normalización al diseño de los esquemas de la base de datos.

Page 3: Fundamentos de BD - Unidad 4 diseño de bd relacional

Competencia Específica de la Unidad• Aplicar la normalización al diseño de los esquemas de la base de

datos.

Desarrollo de la Unidad• En la unidad cuatro, se asegura que el diseño de los esquemas de bases de

datos cumple con las formas normales y mantienen la adecuada integridad.

FUNDAMENTOS DE BASE DE DATOS

Page 4: Fundamentos de BD - Unidad 4 diseño de bd relacional

Problemas con las BD relacionales

• Una vez obtenido el esquema relacional resultante del esquema entidad/relación que representa la base de datos, normalmente tendremos una buena base de datos. Pero otras veces, debido a fallos en el diseño o a problemas indetectables, tendremos un esquema que puede producir una base de datos que incorpore estos problemas.

FUNDAMENTOS DE BASE DE DATOS

Page 5: Fundamentos de BD - Unidad 4 diseño de bd relacional

• Redundancia. Se llama así a los datos que se repiten continua e innecesariamente por las tablas de las bases de datos. Cuando es excesiva es evidente que el diseño hay que revisarlo, es el primer síntoma de problemas y se detecta fácilmente.

• Ambigüedades. Datos que no clarifican suficientemente el elemento al que representan. Los datos de cada fila podrían referirse a más de un ejemplar de esa tabla o incluso puede ser imposible saber a qué ejemplar exactamente se están refiriendo. Es un problema muy grave y difícil de detectar.

FUNDAMENTOS DE BASE DE DATOS

Page 6: Fundamentos de BD - Unidad 4 diseño de bd relacional

• Pérdida de restricciones de integridad. Normalmente debido a dependencias funcionales. Más adelante se explica este problema. Se arreglan fácilmente siguiendo una serie de pasos concretos.

• Anomalías en operaciones de modificación de datos. El hecho de que al insertar un solo elemento haya que repetir tuplas en una tabla para variar unos pocos datos. O que eliminar un elemento suponga eliminar varias tuplas necesariamente (por ejemplo que eliminar un cliente suponga borrar seis o siete filas de la tabla de clientes, sería un error muy grave y por lo tanto un diseño terrible).

FUNDAMENTOS DE BASE DE DATOS

Page 7: Fundamentos de BD - Unidad 4 diseño de bd relacional

• El principio fundamental reside en que las tablas deben referirse a objetos o situaciones muy concretas, relacionados exactamente con elementos reconocibles por el sistema de información de forma inequívoca. Cada fila de una tabla representa inequívocamente un elemento reconocible en el sistema. Lo que ocurre es que conceptualmente es difícil agrupar esos elementos correctamente.

FUNDAMENTOS DE BASE DE DATOS

Page 8: Fundamentos de BD - Unidad 4 diseño de bd relacional

• En cualquier caso la mayor parte de problemas se agravan si no se sigue un modelo conceptual y se decide crear directamente el esquema relacional. En ese caso, el diseño tiene una garantía casi asegurada de funcionar mal. • Cuando aparecen los problemas enumerados, entonces se les

puede resolver usando reglas de normalización. Estas reglas suelen forzar la división de una tabla en dos o más tablas para corregir ese problema.

FUNDAMENTOS DE BASE DE DATOS

Page 9: Fundamentos de BD - Unidad 4 diseño de bd relacional

Normalización• El proceso de normalización de bases de datos consiste en designar y

aplicar una serie de reglas a las relaciones obtenidas tras el paso del modelo entidad-relación al modelo relacional.

Las bases de datos relacionales se normalizan para:• Evitar la redundancia de los datos.• Disminuir problemas de actualización de los datos en las tablas.• Proteger la integridad de los datos.

FUNDAMENTOS DE BASE DE DATOS

Page 10: Fundamentos de BD - Unidad 4 diseño de bd relacional

Formas normales • Las formas normales se corresponde a una teoría de normalización

iniciada por el propio Codd y continuada por otros autores (entre los que destacan Boyce y Fagin). Codd definió en 1970 la primera forma normal, desde ese momento aparecieron la segunda, tercera, la Boyce-Codd, la cuarta y la quinta forma normal. • Una tabla puede encontrarse en primera forma normal y no en segunda

forma normal, pero no al contrario. Es decir los números altos de formas normales son más restrictivos (la quinta forma normal cumple todas las anteriores).

FUNDAMENTOS DE BASE DE DATOS

Page 11: Fundamentos de BD - Unidad 4 diseño de bd relacional

Primera forma normal (1FN) • Es una forma normal inherente al esquema relacional. Es decir toda

tabla realmente relacional la cumple.

• Se dice que una tabla se encuentra en primera forma normal si impide que un atributo de una tupla pueda tomar más de un valor.

FUNDAMENTOS DE BASE DE DATOS

Page 12: Fundamentos de BD - Unidad 4 diseño de bd relacional

La tabla:

• Visualmente es una tabla, pero no es una tabla relacional (lo que en terminología de bases de datos relacionales se llama relación), ya que no cumple la primera forma normal. • Sería primera forma normal si los datos fueran:

FUNDAMENTOS DE BASE DE DATOS

Page 13: Fundamentos de BD - Unidad 4 diseño de bd relacional

Dependencia Funcional • Se dice que un conjunto de atributos (Y) depende funcionalmente de

otro conjunto de atributos (X) si para cada valor de X hay un único valor posible para Y. Simbólicamente se denota por XY. • Por ejemplo el nombre de una persona depende funcionalmente del

DNI; es decir para un DNI concreto sólo hay un nombre posible. En la tabla del ejemplo anterior, el departamento no tiene dependencia funcional, ya que para un mismo DNI puede haber más de un departamento posible. Pero el nombre sí que depende del DNI. • Al conjunto X del que depende funcionalmente el conjunto Y se le

llama determinante. Al conjunto Y se le llama implicado.

FUNDAMENTOS DE BASE DE DATOS

Page 14: Fundamentos de BD - Unidad 4 diseño de bd relacional

Dependencia Funcional Completa • Un conjunto de atributos (Y) tiene una dependencia funcional completa

sobre otro conjunto de atributos (X) si Y tiene dependencia funcional de X y además no se puede obtener de X un conjunto de atributos más pequeño que consiga una dependencia funcional de Y (es decir, no hay en X un determinante formado por atributos más pequeños).

FUNDAMENTOS DE BASE DE DATOS

Page 15: Fundamentos de BD - Unidad 4 diseño de bd relacional

• Por ejemplo en una tabla de clientes, el conjunto de atributos formado por el nombre y el DNI producen una dependencia funcional sobre el atributo apellidos. Pero no es plena ya que el DNI individualmente, también produce una dependencia funcional sobre apellidos. El DNI sí produce una dependencia funcional completa sobre el campo apellidos.

Una dependencia funcional completa se denota como X=>Y

FUNDAMENTOS DE BASE DE DATOS

Page 16: Fundamentos de BD - Unidad 4 diseño de bd relacional

Dependencia Funcional Elemental

• Se produce cuando X e Y forman una dependencia funcional completa y además Y es un único atributo.

FUNDAMENTOS DE BASE DE DATOS

Page 17: Fundamentos de BD - Unidad 4 diseño de bd relacional

Dependencia Funcional Transitiva • Es más compleja de explicar, pero tiene también utilidad. Se produce

cuando tenemos tres conjuntos de atributos X, Y y Z. Y depende funcionalmente de X (XY), Z depende funcionalmente de Y (YZ). Además X no depende funcionalmente de Y (Y-/X). Entonces ocurre que X produce una dependencia funcional transitiva sobre Z. • Esto se denota como: (X ― Z)

FUNDAMENTOS DE BASE DE DATOS

Page 18: Fundamentos de BD - Unidad 4 diseño de bd relacional

• Por ejemplo si X es el atributo Número de Clase de un instituto, e Y es el atributo Código Tutor. Entonces XY (el tutor depende funcionalmente del número de clase). Si Z representa el Código del departamento, entonces YZ (el código del departamento depende funcionalmente del código tutor, cada tutor sólo puede estar en un departamento). • Como ocurre que Y-/X (el código de la clase no depende funcionalmente

del código tutor, un código tutor se puede corresponder con varios códigos de clase). Entonces X ― Z (el código del departamento depende transitivamente del código de la clase).

FUNDAMENTOS DE BASE DE DATOS

Page 19: Fundamentos de BD - Unidad 4 diseño de bd relacional

Segunda Forma Normal (2FN) • Ocurre si una tabla está en primera forma normal y además cada atributo

que no sea clave, depende de forma funcional completa respecto de cualquiera de las claves. Toda la clave principal debe hacer dependientes al resto de atributos, si hay atributos que depende sólo de parte de la clave, entonces esa parte de la clave y esos atributos formarán otra tabla. Ejemplo:

FUNDAMENTOS DE BASE DE DATOS

Page 20: Fundamentos de BD - Unidad 4 diseño de bd relacional

• Suponiendo que el DNI y el código de curso formen una clave principal para esta tabla, sólo la nota tiene dependencia funcional completa. El nombre y los apellidos dependen de forma completa del DNI. La tabla no es 2FN, para arreglarlo:

FUNDAMENTOS DE BASE DE DATOS

Page 21: Fundamentos de BD - Unidad 4 diseño de bd relacional

FUNDAMENTOS DE BASE DE DATOSEjemplo:• Tenemos una biblioteca escolar en la cual se realizan préstamos a los

estudiantes, y sus atributos son (CodLibro, Titulo, Autor, Editorial, MatriculaAlumno, NombreAlumno, FechaDev)

Page 22: Fundamentos de BD - Unidad 4 diseño de bd relacional

FUNDAMENTOS DE BASE DE DATOSEjemplo:• La definición nos indica que, si hay atributos que depende sólo de parte de

la clave, entonces esa parte de la clave y esos atributos formarán otra tabla.

Page 23: Fundamentos de BD - Unidad 4 diseño de bd relacional

Tercera Forma Normal (3FN)• Ocurre cuando una tabla está en 2FN y además ningún atributo que no sea

clave depende transitivamente de las claves de la tabla. Es decir, no ocurre cuando algún atributo depende funcionalmente de atributos que no son clave. • Ejemplo:

FUNDAMENTOS DE BASE DE DATOS

Page 24: Fundamentos de BD - Unidad 4 diseño de bd relacional

• La Provincia depende funcionalmente del código de provincia, lo que hace que no esté en 3FN. El arreglo sería:

FUNDAMENTOS DE BASE DE DATOS

Page 25: Fundamentos de BD - Unidad 4 diseño de bd relacional

• Ejercicio: tenemos una BD de eventos culturales la cual se forma por los campos (nEvento, artista, nLocal, nomLocal, dirLocal, precio, fechaEvento); analizar y poner la tabla en 3FN.

FUNDAMENTOS DE BASE DE DATOS

Page 26: Fundamentos de BD - Unidad 4 diseño de bd relacional

• Solución:

FUNDAMENTOS DE BASE DE DATOS

Page 27: Fundamentos de BD - Unidad 4 diseño de bd relacional

Forma normal de Boyce-Codd (FNBC o BCFN)Ocurre si una tabla está en tercera forma normal y además todo determinante es una clave candidata. Ejemplo:

FUNDAMENTOS DE BASE DE DATOS

Page 28: Fundamentos de BD - Unidad 4 diseño de bd relacional

• La cuestión es que un trabajador o trabajadora puede trabajar en varios departamentos. En dicho departamento hay varios responsables, pero cada trabajador sólo tiene asignado uno. El detalle importante que no se ha tenido en cuenta, es que el o la responsable sólo puede ser responsable en un departamento.

Este detalle último produce una dependencia funcional ya que: ResponsableDepartamento

FUNDAMENTOS DE BASE DE DATOS

Page 29: Fundamentos de BD - Unidad 4 diseño de bd relacional

• Por lo tanto hemos encontrado un determinante que no es clave candidata. No está por tanto en FNBC. En este caso la redundancia ocurre por mala selección de clave. La redundancia del departamento es completamente evitable. La solución sería:

FUNDAMENTOS DE BASE DE DATOS

Nota: En las formas de Boyce-Codd hay que

tener cuidado al descomponer ya que se

podría perder información por una

mala descomposición

Page 30: Fundamentos de BD - Unidad 4 diseño de bd relacional

Ejercicio de la FNBCReglas• Para cada proyecto, una tarea es

encomendada a un solo empleado, aun cuando el empleado esté en varios proyectos.• Un proyecto está asociado a distintas

tareas.• Un empleado se especializa en un tipo

de tarea.• Una misma tarea puede ser

desarrollada por distintos empleados en distintos proyectos.

FUNDAMENTOS DE BASE DE DATOS

Page 31: Fundamentos de BD - Unidad 4 diseño de bd relacional

• Existen dos claves candidatas en esta relación: (proyecto, tarea) y (proyecto, empleado)

• Existe un determinante de tarea que es empleado, pero empleado NO es clave candidata:

empleado tarea

FUNDAMENTOS DE BASE DE DATOS

Page 32: Fundamentos de BD - Unidad 4 diseño de bd relacional

• Tablas resultantes:

FUNDAMENTOS DE BASE DE DATOS

Page 33: Fundamentos de BD - Unidad 4 diseño de bd relacional

• Dependencias Multivalor: Dada una relación R, se dice que un atributo R.y es dependiente multivalor (DMV) de un atributo R.x si un rango específico de valores de y están determinados por el valor específico de x, con la independencia del resto de atributos de R.

• Se lee: R.y es muyltivalor de R.x; o R.x multidetermina a R.y

FUNDAMENTOS DE BASE DE DATOS

Page 34: Fundamentos de BD - Unidad 4 diseño de bd relacional

• Cada curso tiene un conjunto definido de profesores y un conjunto de textos.• Los profesores son independientes de los textos• Un profesor puede dar varios cursos y un texto puede usarse en más

de una materia

FUNDAMENTOS DE BASE DE DATOS

Page 35: Fundamentos de BD - Unidad 4 diseño de bd relacional

• Esta relación especifica que: el curso impartido puede ser dictado por varios profesores utilizando varios textos; existen dos DMV:

curso -> profesor curso -> texto

FUNDAMENTOS DE BASE DE DATOS

Page 36: Fundamentos de BD - Unidad 4 diseño de bd relacional

• La redundancia de datos causada por la DMV, se puede eliminar siguiendo uno de los siguientes métodos:

Primero:

• Crear una nueva relación para cada atributo DMV curso -> profesor curso -> texto

• R1= (curso, profesor); • R2= (curso, texto);

FUNDAMENTOS DE BASE DE DATOS

Page 37: Fundamentos de BD - Unidad 4 diseño de bd relacional

• Crear una nueva relación por cada atributo DMV:

FUNDAMENTOS DE BASE DE DATOS

Page 38: Fundamentos de BD - Unidad 4 diseño de bd relacional

Segundo

• Reemplazar los atributos DMV con atributos funcionalmente dependientes DF;

curso (texto1, texto2, texto3) R3= (curso, texto1, texto2, texto3)

FUNDAMENTOS DE BASE DE DATOS

Page 39: Fundamentos de BD - Unidad 4 diseño de bd relacional

FUNDAMENTOS DE BASE DE DATOS

Page 40: Fundamentos de BD - Unidad 4 diseño de bd relacional

Cuarta Forma Normal

• Una relación se encuentra en Cuarta Forma Normal (4FN) si es BCFN y no contiene dependencias multivalor.

FUNDAMENTOS DE BASE DE DATOS

Page 41: Fundamentos de BD - Unidad 4 diseño de bd relacional

• Actividades

FUNDAMENTOS DE BASE DE DATOS

Page 42: Fundamentos de BD - Unidad 4 diseño de bd relacional

Si el número de valores repetidos en la DMV es grande:• Se crea una nueva relación para el atributo DMV y su clave principal

FUNDAMENTOS DE BASE DE DATOS

Page 43: Fundamentos de BD - Unidad 4 diseño de bd relacional

Si el número de valores repetidos del atributo DMV es pequeño y específico: • C/u de los valores del atributo DMV se representa como un atributo

dentro del mismo registro:

FUNDAMENTOS DE BASE DE DATOS

Page 44: Fundamentos de BD - Unidad 4 diseño de bd relacional

Ejemplo:

FUNDAMENTOS DE BASE DE DATOS

Page 45: Fundamentos de BD - Unidad 4 diseño de bd relacional

Ejercicio:• En un nacimiento nace un bebe (gemelos se considera dos

nacimientos)• En un nacimiento hay una sola madre y pueden atender el parto una

o más enfermeras, y uno o más médicos.

R=(bebé, madre, enfermera, médico)

FUNDAMENTOS DE BASE DE DATOS

Page 46: Fundamentos de BD - Unidad 4 diseño de bd relacional

Normalizado• R1 = (bebé, madre)• R2 = (bebé, enfermera, médico)• No hay DT, y está en FNBC, pero en R2 tenemos las dependencias

multivaloradas:

bebé enfermerabebé médico

FUNDAMENTOS DE BASE DE DATOS

Page 47: Fundamentos de BD - Unidad 4 diseño de bd relacional

FUNDAMENTOS DE BASE DE DATOS

Page 48: Fundamentos de BD - Unidad 4 diseño de bd relacional

Procedimientos alternativos• Crear una nueva relación por cada atributo DMV:

FUNDAMENTOS DE BASE DE DATOS

Page 49: Fundamentos de BD - Unidad 4 diseño de bd relacional

Reemplazar un atributo DMV con atributos funcionales dependientes DF:• R5 = (bebé, médico1, médico2, médico3)• R6 = (bebé, enfermera1, enfermera2)

FUNDAMENTOS DE BASE DE DATOS

Page 50: Fundamentos de BD - Unidad 4 diseño de bd relacional

• Ejemplo: El psiquiatra puede ofrecer tratamiento reembolsable a los pacientes que sufren de la condición dada y que son asegurados por el asegurador dado. En ausencia de cualquier regla que restrinja las combinaciones válidas posibles de psiquiatra, asegurador, y condición, la tabla de tres atributos Psiquiatra-para-Asegurador-para-Condición es necesaria para modelar la situación correctamente.

FUNDAMENTOS DE BASE DE DATOS

Page 51: Fundamentos de BD - Unidad 4 diseño de bd relacional

Sin embargo, suponga que la regla siguiente se aplica:

• Cuando un psiquiatra es autorizado a ofrecer el tratamiento reembolsable a los pacientes asegurados por el asegurador P, y el psiquiatra puede tratar la condición C, entonces - en caso que el asegurador P cubra la condición C - debe ser cierto que el psiquiatra puede ofrecer el tratamiento reembolsable a los pacientes que sufren de la condición C y están asegurados por el asegurador P.

• Con estas restricciones es posible dividir la relación en tres partes.

FUNDAMENTOS DE BASE DE DATOS

Page 52: Fundamentos de BD - Unidad 4 diseño de bd relacional

FUNDAMENTOS DE BASE DE DATOS

Notese como esta disposición ayuda a quitar redundancia. Suponga que el Dr. James se convierte en un proveedor de tratamientos para FriendlyCare. En la disposición anterior tendríamos que agregar dos nuevas entradas puesto que el Dr. James puede tratar dos condiciones cubiertas por FriendlyCare: ansiedad y depresión. Con la nueva disposición necesitamos agregar una sola entrada (en la tabla Psiquiatra-para-Asegurador).

Page 53: Fundamentos de BD - Unidad 4 diseño de bd relacional

Quinta Forma Normal (5FN)• La quinta forma normal (5FN), también conocida como forma normal

de proyección-unión (PJ/NF), es un nivel de normalización de bases de datos diseñado para reducir redundancia en las bases de datos relacionales que guardan hechos multi-valores aislando semánticamente relaciones múltiples relacionadas. Una tabla se dice que está en 5NF si y sólo si está en 4NF y cada dependencia de unión (join) en ella es implicada por las claves candidatas.

FUNDAMENTOS DE BASE DE DATOS

Page 54: Fundamentos de BD - Unidad 4 diseño de bd relacional

FUNDAMENTOS DE BASE DE DATOS