Post on 23-Jul-2015
Diseño de bases relacionales
Bases de datos
Primera forma normalLos dominios deben de ser atómicos
Ejemplos de dominios no atómicosconjunto de nombres, atributos compuestosNúmero de identificación como CS101 quepueden dividirse en partes
un esquema de relación R esta en primera forma normal si losdominios 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 CS0012 o EE1127
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 {R1, R2, ..., Rn} tales que:
cada relación este en "buena" formala descomposición sea sin reunión con pérdida
Nuestra teoría esta basada en:
dependencias funcionalesdependencias 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-sueldocheck (value >= 800)
create domain numero-cuenta char(10)constraint comprobacion-numero-cuenta-nulo
check (value not null)
Integridad referencial
Sean r1(R1) y r2(R2) dos relaciones con claves primarias K1 y K2. Se dice que un subconjunto de R es una clave externa que hace referencia a K1 de la relación r1 si se exige que para cada t2 de r2 haya una tupla t1 en r1 tal que t1[K1] = t2[]
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:
(r2) K1 (r2)
Modificación de la base de datosinsertar. Si se inserta una tupla t2 en r2, el sistema debe asegurar que hay una tupla t1 en r1 tal que t1[K] = t2[], es decir
t2[] K1 (r2)
borrar. Si se borra una tupla t1 en r1, el sistema debe calcular el conjunto de tuplas de r2 que hacen referencia a r1:
= t1[K] (r2)
Actualizar: Hay que considerara dos casos: las actualizaciones de la relación que realiza la referencia (r2) y las actualizaciones de la relación a la que se hace referencia (r1).
- si se actualiza la tupla t2 de la relación r2 y esta actualización modifica los valores de la clave externa , se realiza una comprobación parecida al caso de la inserción. El sistema debe asegurar que
t2’[] K (r1)
- si se actualiza la tupla t1 de la relación r1 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
= t1[K] (r2)
Dependencias funcionalesSea R un esquema de relación. Sean R y R. La dependencia fucnional , se cumple en R si en cualquier relación legal r(R), para todos las pares de tuplas t1 y t2 de r tales que t1[] = t2[] también ocurre t1[] = t2[].
Considere el esquema
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ón1. 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
a1 b1 c1 d1
a1 b2 c1 d2
a2 b2 c2 d2
a2 b3 c2 d3
a3 b3 c3 d4
Se satisface A C
No se satisface C A
Se satisface AB D
Ejemplo bancarioEsquema 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 BA CCG HCG IB 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 inferenciaRegla de reflexividad. Si es un conjunto de atributos y , entonces se cumple que .
Regla de aumentatividad. Si se cumple que y es un conjunto de atributos, entonces se cumple que .
Regla de transitividad. Si se cumple que y , entonces
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 y , entonces se cumple
Regla de la descomposición. Si se cumple que , entonces se cumple que y que
Regla de la seudotransitividad. Si se cumple que y que , entonces se cumple
Cierre de los conjuntos de atributos
Para comprobar si un conjunto es una superclave hay que preparar un algoritmo para calcular el conjunto de los atributos determinados funcionalmente por .
Se denomina cierre de sobre F al conjunto de todos los atributos determinados funcionalmente por a bajo un conjunto de dependencias funcionales F; se denota por +.
Algoritmo en pseudo Pascal
resultado : = ;while (cambios en resultado) do for each dependencia funcional in F do begin if resultado then resultado := resultado ; end
EjemploPara el esquema de relación R = (A, B, C, G, H, I) y el conjunto de dependencias funcionales
A BA CCG HCG IB H
Aplicamos el algoritmo para calcular (AG)+:
paso dependencia resultado
1 A B ABG2 A C ABCG 3 CG H ABCGH 4 CG I 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
donde R y R, por lo menos una de las siguientes se cumple: es trivial (o sea ) 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
causa una violación de BCNFDescomponenmos R en:
( )(R--))
En nuestro ejemplo = numero_prestamo = cantidad
y prestatario_prestamo se reemplaza por( ) = (numero_prestamo,cantidad)(R-(-)) = (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 lasdependencias 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 normalUn esquema de relación R esta en tercera forma normal (3NF) si para todas:
en F+
por lo menos una de las siguientes se cumple:
es trivial (o sea ) es superllave para RCada atributo A en - 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 3NF (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 {R1, R2, ...,Rn} tales que:
cada esquema de relación este en buena formala descomposición es una descomposición sin pérdidaPreferiblemente, 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 normalizadosConsidere 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 maestro librobase de datos Avi DB conceptsbase de datos Avi Ullmanbase de datos Hank DB conceptsbase de datos Hank Ullmanbase de datos Sudarsha DB conceptsbase de datos Sudarsha UllmanSistemas oper. Avi OS conceptsSistemas oper. Avi StallingsSistemas oper. Pete OS conceptsSistemas oper. Pete 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 maestrobase de datos Avibase de datos Hankbase de datos SudarshanSistemas oper. AviSistemas oper. Jim
Maestros
curso librobase de datos DB conceptsbase de datos UllmanSistemas oper. OS conceptsSistemas oper. Shaw
libro