Diseo de bases relacionales Bases de datos Primera
Diseño de bases relacionales Bases de datos
Primera forma normal Los dominios deben de ser atómicos Ejemplos de dominios no atómicos conjunto de nombres, atributos compuestos Número de identificación como CS 101 que pueden dividirse en partes un esquema de relación R esta en primera forma normal si los dominios de todos los atributos son atómicos Los valores no-atómicos complican el almacenamiento y producen almacenamiento redundante (repetido) de los datos Ejemplo: . conjunto de cuentas guardado con cada cliente, y conjunto de propietarios guardado con cada cuenta Suponemos todas las relaciones están en primera forma normal
Primera forma normal (cont. ) La atomicidad es realmente una propiedad de como los elementos de un dominio son usados. Ejemplo: Las cadenas se consideran normalmente indivisibles Suponga que a los estudiantes se les da un número el cual es una cadena de la forma CS 0012 o EE 1127 Si los dos primeros caracteres son extraídos para encontrar el departamento, el dominio de los números no es atómico. Hacer esto es una mala idea: lleva a codificar información en el programa de aplicación en lugar de en la base de datos.
Objetivo - inventar una teoría para lo siguiente Decida si una relación particular R esta en "buena" forma. En el caso de que una relación R no este en "buena" forma, descomponerla en un conjunto de relaciones {R 1, R 2, . . . , Rn} tales que: cada relación este en "buena" forma la descomposición sea sin reunión con pérdida Nuestra teoría esta basada en: dependencias funcionales dependencias multivaluadas
Ligaduras de los dominios La ligadura de dominio permite la verificación de valores al momento de agregar datos a la base de datos. Solo aquellos que cumplan con la ligadura serán aceptados como datos válidos, los demás serán rechazados. En SQL se utiliza la sentencia check para establecer la ligadura de dominios, ejemplos: create domain sueldo-por-hora numeric(7, 1) constraint comprobacion-valor-sueldo check (value >= 800) create domain numero-cuenta char(10) constraint comprobacion-numero-cuenta-nulo check (value not null)
Integridad referencial Sean r 1(R 1) y r 2(R 2) dos relaciones con claves primarias K 1 y K 2. Se dice que un subconjunto a de R es una clave externa que hace referencia a K 1 de la relación r 1 si se exige que para cada t 2 de r 2 haya una tupla t 1 en r 1 tal que t 1[K 1] = t 2[a] Las exigencias de este tipo se denominan ligaduras de integridad referencial o dependencias de subconjunto. La última denominación proviene de que lo anterior puede expresarse como: Pa (r 2) PK 1 (r 2)
Modificación de la base de datos insertar. Si se inserta una tupla t 2 en r 2, el sistema debe asegurar que hay una tupla t 1 en r 1 tal que t 1[K] = t 2[a], es decir t 2[a] PK 1 (r 2) borrar. Si se borra una tupla t 1 en r 1, el sistema debe calcular el conjunto de tuplas de r 2 que hacen referencia a r 1: sa = t 1[K] (r 2) Actualizar: Hay que considerara dos casos: las actualizaciones de la relación que realiza la referencia (r 2) y las actualizaciones de la relación a la que se hace referencia (r 1). - si se actualiza la tupla t 2 de la relación r 2 y esta actualización modifica los valores de la clave externa a, se realiza una comprobación parecida al caso de la inserción. El sistema debe asegurar que t 2’[a] PK (r 1) - si se actualiza la tupla t 1 de la relación r 1 y esta actualización modifica los valores de la clave externa primaria (K), se realiza una comprobación parecida al caso del borrado. El sistema debe asegurar que sa = t 1[K] (r 2)
Dependencias funcionales Sea R un esquema de relación. Sean a R y b R. La dependencia fucnional a b, se cumple en R si en cualquier relación legal r(R), para todos las pares de tuplas t 1 y t 2 de r tales que t 1[a] = t 2[a] también ocurre t 1[b] = t 2[b]. Considere el esquema-información-préstamo = (nombre-sucursal, número-préstamo, nombre-cliente, importe) Se esperan las siguientes dependencias funcionales número-préstamo importe número-préstamo nombre-sucursal pero no número-préstamo nombre-cliente
Utilización 1. para especificar las ligaduras del conjunto de relaciones legales. Así solo habrá que preocuparse por las relaciones que satisfagan un conjunto dado de dependencias funcionales. 2. Para examinar las relaciones y comprobar si son legales bajo un conjunto dado de dependencias funcionales. A B C D a 1 b 1 c 1 d 1 a 1 b 2 c 1 d 2 a 2 b 2 c 2 d 2 a 2 b 3 c 2 d 3 a 3 b 3 c 3 d 4 Se satisface A C No se satisface C A Se satisface AB D
Ejemplo bancario Esquema esquema-sucursal nombre-sucursal ciudad-sucursal nombre-sucursal activo Esquema esquema-cliente nombre-cliente ciudad-cliente nombre-cliente calle-cliente Esquema esquema-prestamo número-préstamo importe número-préstamo nombre-sucursal Esquema esquema-prestatario No hay Esquema esquema-cuenta número-préstamo nombre-sucursal número-préstamo saldo Esquema esquema-impositor No hay
Cierre de un conjunto de dependencias funcionales Sea un esquema de relación R = (A, B, C, G, H, I) y el conjunto de dependencias funcionales A B A C CG H CG I B H A H está implicada lógicamente. El cierre de un conjunto de dependencias funcionales F es el conjunto de todas las dependencias funcionales implicadas lógicamente por F. Se denota por F+.
Reglas de inferencia Regla de reflexividad. Si a es un conjunto de atributos y b a, entonces se cumple que a b. Regla de aumentatividad. Si se cumple que a b y g es un conjunto de atributos, entonces se cumple que ga gb. Regla de transitividad. Si se cumple que a b y b g, entonces a g. Estas reglas se conocen como axiomas de Armstrong. Se agregan las siguientes reglas deducibles a partir de las anteriores. Regla de la unión. Si se cumple que a b y a g, entonces se cumple a bg. Regla descomposición. Si se cumple que a bg, entonces se cumple que a b y que a g. Regla de la seudotransitividad. Si se cumple que a b y que gb d, entonces se cumple ag d.
Cierre de los conjuntos de atributos Para comprobar si un conjunto a es una superclave hay que preparar un algoritmo para calcular el conjunto de los atributos determinados funcionalmente por a. Se denomina cierre de a sobre F al conjunto de todos los atributos determinados funcionalmente por a bajo un conjunto de dependencias funcionales F; se denota por a+. Algoritmo en pseudo Pascal resultado : = a; while (cambios en resultado) do for each dependencia funcional b g in F do begin if b resultado then resultado : = resultado g; end
Ejemplo Para el esquema de relación R = (A, B, C, G, H, I) y el conjunto de dependencias funcionales A B A C CG H CG I B H Aplicamos el algoritmo para calcular (AG)+: paso dependencia resultado 1 2 3 4 A B A C CG H CG I ABG ABCGHI
Forma normal de Boyce-Codd Un esquema de relación R esta en BCNF con respecto a un conjunto de dependencias funcionales si todas las dependencias funcionales en F+ de la forma a b donde a R y b R, por lo menos una de las siguientes se cumple: a b es trivial (o sea b a) a es superllave de R Ejemplo de un esquema no en BCNF: prestatario_prestamo = (cliente_id, numero_prestamo, cantidad) debido a que numero_prestamo cantidad en prestatario_prestamo se cumple pero numero_prestamo no es superclave
Descomposición de un esquema en BCNF Suponga que tenemos un esquema R y una dependencia no trivial a b causa una violación de BCNF Descomponenmos R en: (a b) (R-(b-a)) En nuestro ejemplo a = numero_prestamo b = cantidad y prestatario_prestamo se reemplaza por (a b) = (numero_prestamo, cantidad) (R-(b-a)) = (cliente_id, numero_prestamo)
BCNF y conservación de las dependencias Ligaduras, incluyendo las dependencias funcionales, son costosas para verificar en la práctica a que pertenezcan a una sola relación Si es suficiente probar solo aquellas dependencias en cada relación individual de la descomposición de manera de asegurar que todas las dependencias funcionales se cumplan, entonces esa descomposición conserva las dependencias. Debido a que no siempre es posible obtener ambas BCNF y conservación de las dependencias, la consideramos una forma normal débil, conocida como tercera forma normal.
Tercera forma normal Un esquema de relación R esta en tercera forma normal (3 NF) si para todas: a b en F+ por lo menos una de las siguientes se cumple: a b es trivial (o sea b a) a es superllave para R Cada atributo A en b - a esta contenido en una llave candidata para R. (note: cada atributo puede ser en una llave candidata diferente) Se una relación esta en BCNF esta en 3 NF (ya que en BCNF una de las primeras dos condiciones de arriba se debe cumplir) La tercera condición es una relajación mínima de BCNF para asegurar la conservación de dependencias.
Objetivos de Normalización Sea R un esquema de relación con un conjunto F de dependencias funcionales. Decida si un esquema de relación R esta en "buena" forma. En el caso de que el esquema de relación R no este en "buena" forma, descompóngalo en un conjunto de esquemas de relación {R 1, R 2, . . . , Rn} tales que: cada esquema de relación este en buena forma la descomposición es una descomposición sin pérdida Preferiblemente, la descomposición debe ser tal que conserve las dependencias.
¿Que tan buena es BCNF? Hay esquemas de bases de datos en BCNF que no parecen suficientemente normalizados Considere la base de datos clases(curso, maetro, libro) tal que (c, m, b) elemento de clases significa que m es calificado para enseñar c, y b es el libro de texto para c. La base de datos se supone que lista para cada curso un conjunto de maestros cualquiera de ellos puede ser el instructor, y un conjunto de libros, todos los cuales son requeridos para el curso (sin importar quien lo enseña)
¿Que tan buena es BCNF? (cont. ) curso base de datos base de datos Sistemas oper. maestro Avi Hank Sudarsha Avi Pete libro DB concepts Ullman OS concepts Stallings No hay dependencias funcionales no-triviales y por lo tanto la relación está en BCNF Anomalias de inserción - o sea si Marilyn es una nueva maestra que puede enseñar dases de datos, se deben insertar dos tuplas (bases de datos, Marilyn, DB concepts) (bases de datos, Marilyn, Ullman)
¿Que tan buena es BCNF? (cont. ) Por lo tanto es mejor descomponer clases en: curso maestro base de datos Avi base de datos Hank base de datos Sudarshan Sistemas oper. Avi Sistemas oper. Jim Maestros curso base de datos Sistemas oper. libro DB concepts Ullman OS concepts Shaw
- Slides: 22