1 / 22

Diseño de bases relacionales

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

fleur
Download Presentation

Diseño de bases relacionales

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Diseño de bases relacionales Bases de datos

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

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

  4. 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" forma la descomposición sea sin reunión con pérdida Nuestra teoría esta basada en: dependencias funcionales dependencias multivaluadas

  5. 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 (valuenot null)

  6. Integridad referencial Sean r1(R1) y r2(R2) dos relaciones con claves primarias K1 y K2. Se dice que un subconjunto a 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[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 (r2)  PK1 (r2)

  7. Modificación de la base de datos insertar. Si se inserta una tupla t2 en r2, el sistema debe asegurar que hay una tupla t1 en r1 tal que t1[K] = t2[a], es decir t2[a] PK1 (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: sa = 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 a, se realiza una comprobación parecida al caso de la inserción. El sistema debe asegurar que t2’[a] PK (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 sa = t1[K] (r2)

  8. Dependencias funcionales Sea R un esquema de relación. Sean a R y b R. La dependencia fucnionala  b, 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[a] = t2[a] también ocurre t1[b] = t2[b]. 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

  9. 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. Se satisface A  C No se satisface C  A Se satisface AB  D

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

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

  12. 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 de la 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.

  13. 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) dofor each dependencia funcional b gin F do beginifb resultado then resultado := resultado g;end

  14. 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 A  B ABG2 A  C ABCG3 CG  H ABCGH4 CG  I ABCGHI

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

  16. 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)

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

  18. Tercera forma normal Un esquema de relación R esta en tercera forma normal (3NF) 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 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.

  19. 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 forma la descomposición es una descomposición sin pérdida Preferiblemente, la descomposición debe ser tal que conserve las dependencias.

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

  21. ¿Que tan buena es BCNF? (cont.) curso maestro libro base de datos Avi DB concepts base de datos Avi Ullman base de datos Hank DB concepts base de datos Hank Ullman base de datos Sudarsha DB concepts base de datos Sudarsha Ullman Sistemas oper. Avi OS concepts Sistemas oper. Avi Stallings Sistemas oper. Pete OS concepts Sistemas 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)

  22. ¿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 libro base de datos DB concepts base de datos Ullman Sistemas oper. OS concepts Sistemas oper. Shaw libro

More Related