Diseño de bases relacionales

22
Diseño de bases relacionales Bases de datos

description

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 CS101 que pueden dividirse en partes - PowerPoint PPT Presentation

Transcript of Diseño de bases relacionales

Page 1: Diseño de bases relacionales

Diseño de bases relacionales

Bases de datos

Page 2: Diseño de bases relacionales

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

Page 3: Diseño de bases relacionales

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.

Page 4: Diseño de bases relacionales

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

Page 5: Diseño de bases relacionales

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)

Page 6: Diseño de bases relacionales

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)

Page 7: Diseño de bases relacionales

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)

Page 8: Diseño de bases relacionales

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

Page 9: Diseño de bases relacionales

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

Page 10: Diseño de bases relacionales

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

Page 11: Diseño de bases relacionales

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+.

Page 12: Diseño de bases relacionales

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

Page 13: Diseño de bases relacionales

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

Page 14: Diseño de bases relacionales

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

Page 15: Diseño de bases relacionales

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

Page 16: Diseño de bases relacionales

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)

Page 17: Diseño de bases relacionales

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.

Page 18: Diseño de bases relacionales

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.

Page 19: Diseño de bases relacionales

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.

Page 20: Diseño de bases relacionales

¿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)

Page 21: Diseño de bases relacionales

¿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)

Page 22: Diseño de bases relacionales

¿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