• No se han encontrado resultados

Capitulo 4 Diseño de bases de datos relacionales

N/A
N/A
Protected

Academic year: 2020

Share "Capitulo 4 Diseño de bases de datos relacionales"

Copied!
64
0
0

Texto completo

(1)

Capitulo 4: Diseño de bases de datos

Capitulo 4: Diseño de bases de datos

relacionales

(2)

Diseño de base de datos relacionales

Diseño de base de datos relacionales

Características de los buenos diseños relacionales

Descomposición mediante dependencias funcionales

Dominios atómicos y la primera forma normal

Teoría de las dependencias funcionales

Algoritmos de descomposición

Descomposición mediante dependencias

multivaloradas

Mas formas normales

Proceso de diseño de las bases de datos

(3)

Diseño de base de datos relacionales

Diseño de base de datos relacionales

El objetivo de diseñar un esquema de una base de

datos relacional consiste en determinar un conjunto

de esquemas de relación (Tablas) que permita

almacenar la información sin redundancias

innecesarias; pero que también permita recuperarla

fácilmente.

Para ello es necesario que los esquemas se hallen

en una

forma normal

.

Forma normal

basada en dependencias

funcionales.

Esquemas derivados de un esquema relacional

(4)

Características de los buenos diseños relacionales

Características de los buenos diseños relacionales

El diseño entidad-relación es un excelente punto de

partida para el diseño de base de datos

relacionales.

A partir del diseño E-R se puede obtener de manera

directa el esquema relacional.

La calidad del diseño E-R determinara la posibilidad

(5)

Los Esquemas bancarios

Los Esquemas bancarios

1. sucursal= (nombre_surcursal, ciudad_sucursal, activos)

2. cliente = (id_cliente, nombre_cliente, calle_cliente, ciudad_cliente) 3. préstamo = (numero_prestamo, importe)

4. cuenta = (numero_cuenta, saldo)

5. empleado = (id_empleado, nombre_empleado, número_teléfono, fecha_contratacion) 6. nombre_subordinado = (id_empleado, nombre_subordinado)

7. sucursal_cuenta = (numero_cuenta, nombre_sucursal)

8. sucursal_prestamo = (numero_prestamo, nombre_sucursal) 9. prestatario = (id_cliente, numero_prestamo)

10. impositor = (id_cliente, numero_cuenta) 11. asesor = (id_cliente, id_empleado, tipo)

12. trabaja_para = (id_empleado_trabajador, id_empleado_jefe)

13. pago = (numero_prestamo, numero_pago, fecha_pago, importe_pago) 14. cuenta_ahorro = (numero_cuenta, tasa_interes)

(6)

¿Sera bueno combinar esquemas?

¿Sera bueno combinar esquemas?

 Supongamos que se combinan prestatario y préstamo para obtener

Prestatario_prestamo = (id_cliente, numero_prestamo, importe)

Considerar que un cliente puede tener varios prestamos y un préstamo le corresponde a varios clientes.

 El resultado provoca la repetición de la información, es posible generar inconsistencia.

 (P-100 en el ejemplo)

Numero_prestamo importe … .. P-100 10000 .. … Id_cliente Numero_prestamo … … 23652 P-100 15202 P-100 23521 P-100 … …

Id_cliente Numero_prestamo importe

… .. ..

23652 P-100 10000

15202 P-100 10000

23521 P-100 10000

… .. ..

Prestamo

Prestatario

Varios a varios

Prestatario_prestamo

(7)

Un esquema combinado, sin repetición

Un esquema combinado, sin repetición

 Considere la posibilidad de combinar sucursal_prestamo y préstamo

Prestamo_importe_sucursal= (numero_prestamo, importe, nombre_sucursal)

 No existe repetición (como se aprecia en el ejemplo siguiente), pero puede existir

valores nulos.

Numero_prestamo importe

… ..

P-100 10000

.. …

Numero_prestamo Nombre_sucursal

… …

P-100 Cusco

… …

Numero_prestamo importe Nombre_sucursal

… .. ..

P-100 10000 Cusco

… .. ..

Prestamo Sucursal_prestamo

(8)

Conclusiones de combinar esquemas

Conclusiones de combinar esquemas

Es importante la naturaleza de las claves

primarias para decidir si las combinaciones

de esquemas tienen sentido o no.

Se han presentado problemas

concretamente, la repetición de información

cuando el atributo de reunión no era la clave

primaria de los dos esquemas que se

(9)

¿Qué acerca de esquemas más

¿Qué acerca de esquemas más

pequeños?

pequeños?

 Las bases de datos reales tienen gran numero de esquemas y un

numero todavía mayor de atributos, el numero de tuplas son del orden de millones. Descubrir la repetición puede resultar costoso.

 Supongamos que de algún modo se ha comenzado a trabajar con el esquema

prestatario_prestamo. ¿Cómo se reconoce que haya repetición de información y es necesario dividirlo en dos esquemas prestatario y préstamo?

 Hay un problema mas fundamental todavía, No permite determinar si la

carencia de repetición es meramente un caso especial o la manifestación de una regla general.

 Se puede especificar normas como “a cada valor de numero_prestamo le corresponde como máximo un único importe”, numero_prestamo sería una clave candidata“

 Esta norma o regla se puede denotar como una dependencia

funcional: numero_prestamo  importe

 Como numero_prestamo no es clave primaria de prestatario_prestamo,

tal vez se deba repetir el importe de préstamo. Esto indica la necesidad de descomponer prestatario_prestamo.

(10)

Perdida de información debido a una mala

Perdida de información debido a una mala

descomposición

(11)

Primera forma normal

Primera forma normal

 Un dominio es atómico si se considera que los elementos de ese dominio

son unidades indivisibles

 Ejemplos de dominios no atómicos:

 Dominio de nombres, atributos compuestos

 El atributo Dirección con los atributos componentes calle y ciudad.

 Números de identificación como CS101 que pueden ser dividido en dos partes.  Atributo hijos en el esquema Empleado.

 Se dice que el esquema de la relación R está en la primera forma normal

(1FN) si los dominios de todos los atributos de R son atómicos.

 Valores no atómicos, complican el almacenamiento de datos y provocan la

redundancia de datos que pueden dar lugar a inconsistencias.

 Ejemplo: En lugar de representar la relación entre las cuentas y clientes con una

relación depositante, se optara por utilizar un conjunto de titulares paracada

cuenta y con cada cliente con un conjunto de cuentas.

 Los atributos con valores compuestos y los atributos con el valor

(12)

Descomposición mediante dependencias funcionales

Descomposición mediante dependencias funcionales

Para evaluar si un esquema relacional se debe

descomponerse es necesario utilizar una metodología formal,

la cual se basa en los conceptos de claves y dependencias

funcionales.

(13)

Clasificación de las restricciones de las bases de

Clasificación de las restricciones de las bases de

datos

datos

Valor-base:

Involucra una

comparación de una columna con una constante usando operadores >, <, =

Valor-neutral:

(14)

Dependencia funcional

Dependencia funcional

Son restricciones de la base de datos que exigen que las

relaciones cumplan determinadas propiedades. Las relaciones

que cumplan todas esas restricciones son

legales

.

Mientras que una clave es un conjunto de atributos que

identifica de manera univoca toda una tupla, una dependencia

funcional permite expresar restricciones que identifican de

manera univoca el valor de determinados atributos.

(15)

Dependencia funcional

Dependencia funcional

(Cont.)

(Cont.)

 Sea R un esquema de relación, donde.   R y   R

 La dependencia funcional

  

Se cumple para el esquema R si, en cualquier relación legal r(R), para todos los pares de tuplas t1 y t2 de r tales que si,

t1[] = t2 []  t1[ ] = t2 [ ]

 Ejemplo: Considere r(A,B ) con el siguiente ejemplar de r.

 Sobre este ejemplar, AB no se cumple, pero BA se

cumple.

1 4

1 5

(16)

Dependencia funcional

Dependencia funcional

(Cont.)

(Cont.)

Definición:

Sean

y

atributos de la relación R.

Decimos que

determina funcionalmente a

en R, denotado

por

Si y sólo si:

Para todos los pares de tuplas t1, t2 de la relación R, tales que

t1[

] = t2[

] también se cumple que t1[

] = t2[

]

Ejemplo:

codigo --> nombre.

t1

t2

 

Si t1 y t2 coinciden en el atributo ,

(17)

Dependencia funcional

Dependencia funcional

(Cont.)

(Cont.)

 Se dice que K es una superclave del esquema de relación R si, K

R

K es una clave candidata para R si,

K R, y

 Sin un   K,   R

 La dependencias funcionales permiten expresar las restricciones que

no se pueden expresar con superclaves. Considere el siguiente esquema:

prestatario_prestamo = (id_cliente, numero_prestamo, importe ).

En el que se cumple la dependencia funcional:

numero_prestamoimporte

Ya que por cada préstamo hay un solo importe. Pero no se cumple lo siguiente:

(18)

Empleo de las dependencias funcionales

Empleo de las dependencias funcionales

Se emplean de dos maneras:

 Para probar las relaciones y ver si son legales de acuerdo con un

conjunto dado de dependencias funcionales.

 Si una relación r es legal según el conjunto F de dependencias

funcionales, se dice que r satisface F.

 Para especificar las restricciones del conjunto de relaciones legales.

Así, sólo habrá que preocuparse de las relaciones que satisfagan un conjunto dado de dependencias funcionales.

 Si uno desea restringirse a las relaciones del esquema R que satisfacen el

conjunto F de dependencias funcionales, se dice que F se cumple en R.

Nota: Una instancia específica de un esquema de relación puede

satisfacer una dependencia funcional, incluso si la dependencia

funcional no se cumple en todas las instancias legales.

 Por ejemplo, una instancia específica de préstamo puede, por

casualidad, satisfacer.

(19)

Dependencia funcional (Cont.)

Dependencia funcional (Cont.)

Se dice que algunas dependencias funcionales son

triviales

porque las satisfacen todas las relaciones.

 Ejemplo:

nombre_cliente, numero_prestamo nombre_cliente nombre_cliente nombre_cliente

 En general,    es trivial si   

Es importante darse cuenta de que una relación dada puede,

en cualquier momento, satisfacer algunas dependencias

funcionales cuyo cumplimiento no sea necesario en el

esquema de la relación.

 Ejemplo

Calle_cliente ciudad_cliente

 No siempre se cumple en todas las relaciones, porque, puede existir

(20)

Cerradura de un conjunto de

Cerradura de un conjunto de

dependencias funcionales

dependencias funcionales

Dado un conjunto

F

de dependencias funcionales, existen otras

dependencias funcionales que pueden ser inferidas de

F

.

 Por ejemplo: Si AB y BC, entonces podemos nosotros inferir

que AC

Se utiliza la notación

F

+

para denotar el

cierre

del conjunto

F

, es

decir, el conjunto de todas las dependencias funcionales que

puedan inferirse dado el conjunto

F

.

(21)

Forma Normal de Boyce-Codd

Forma Normal de Boyce-Codd

 Una de las formas normales más deseadas que se pueden obtener es la forma

normal de Boyce Codd (FNBC).

 Elimina todas las redundancias que se pueden descubrir a partir de las

dependencias funcionales.

 El esquema de relación R esta en la FNBC respecto al conjunto F de

dependencias funcionales si, para todas las dependencias funcionales de F+ de

la forma:

  , donde   R y   R, se cumple, al menos, una de las siguientes condiciones:

   es trivial (es decir   )

 es una superclave para R

 Ejemplo de un esquema que no esta en BCNF:

prestatario_préstamo = (id_cliente, numero_prestamo, importe), porque numero_prestamo

importe secumple en prestatario_préstamo pero numero_prestamo no es superclave

 Los diseños de bases de datos están en la FNBC, si cada miembro del

(22)

Descomposición de esquemas que no se hallan BCNF

Descomposición de esquemas que no se hallan BCNF

 Supongamos que nosotros tenemos un esquema R y una

dependencia funcional no trivial   causa una violación de FNBC. Nosotros descomponemos R en:

(U  )

( R - (  -  ) )

 En el ejemplo anterior,

  = numero_prestamo   = importe

y prestatario_prestamo es remplazado por

 (U  ) = ( numero_prestamo, importe )

 ( R - (  -  ) ) = (id_cliente, numero_prestamo)

(23)

FNBC y la conservación de las dependencias

FNBC y la conservación de las dependencias

 Restricciones: clave primaria, dependencias funcionales, restricciones

check, asertos y disparadores.

 La comprobación de estas restricciones cada vez que se actualiza la

base de datos puede ser costosa y, por tanto, resulta útil diseñar bases de datos con restricciones que se puedan comprobar de manera eficiente.

 En concreto, si la comprobación de las dependencias funcionales

puede realizarse considerando sólo una relación, el coste de comprobación de esa restricción es bajo.

 La descomposición en la FNBC puede impedir la comprobación

eficiente de determinadas dependencias funcionales.

 Como la conservación de las dependencias suele ser deseable, se

considera otra forma normal, más débil que la FNBC, que permite que se conserven las dependencias. Esa forma normal se denomina

(24)

Tercera forma normal

Tercera forma normal

 Un esquema de relación R esta en tercera forma normal (3NF) si, para

todas las dependencias funcionales:

   de F+

se cumple al menos una de las siguientes condiciones:

    es trivial (es decir   )   es superclave para R

 Cada atributo A de  –  esta contenido en alguna clave candidata de

R.

(NOTA: Cada atributo A de  –  puede estar contenido en una clave candidata diferente)

 Si una relación esta en FNBC también esta en 3NF.

 La tercera condición parece bastante poco intuitiva, y no resulta evidente el

(25)

Objetivos de la normalización

Objetivos de la normalización

Sea R un esquema de relación con un conjunto F

de dependencias funcionales.

Decide si un esquema de relación R está en ”buena”

forma.

En el caso de que un esquema de relación R no

está en ”buena” forma, se descomponen en una

serie de esquemas de relación {R1, R2, ..., Rn} tales

que:

 Cada esquema de relación está en buena forma.

 La descomposición es una descomposición sin pérdida

 Preferentemente, la descomposición debe preservar las

(26)

¿Qué tan bueno es FNBC?

¿Qué tan bueno es FNBC?

Hay esquemas de bases de datos en FNBC que no

parecen estar lo suficientemente normalizada.

Considérese una base de datos

clases (curso, docente, libro)

Tal que (c, d, l) 

a clase, significa que 

d

 está calificado para

enseñar 

c

, y

l

 es un libro requerido para

c

La Base de datos supone que de un curso puede ser instruida

por cualquier docente y los libros deben ser utilizados por

(27)

¿Qué tan bueno es FNBC? (Cont.)

¿Qué tan bueno es FNBC? (Cont.)

 No hay dependencias funcionales triviales y por lo tanto, la

relación está en FNBC.

 Anomalías de inserción, es decir, si Marilyn es un nuevo

maestro que puede enseñar database, dos tuplas necesitan incorporarse

curso docente libro

database database database database database database operating systems operating systems operating systems operating systems Avi Avi Hank Hank Sudarshan Sudarshan Avi Avi Pete Pete DB Concepts Ullman DB Concepts Ullman DB Concepts Ullman OS Concepts Stallings OS Concepts Stallings clases

(28)

¿Qué tan bueno es FNBC? (Cont.)

¿Qué tan bueno es FNBC? (Cont.)

 Por lo tanto es mejor descomponer la clase en:

 Esto sugiere la necesidad de formas normales superiores, como

la Cuarta Forma Normal (4NF).

(29)

Teoría de dependencias funcionales

Teoría de dependencias funcionales

Pasamos ahora a analizar la teoría formal que nos dice que las

dependencias funcionales están implicadas lógicamente por

un conjunto dado de dependencias funcionales.

Desarrollar algoritmos para generar descomposición sin

pérdida en FNBC y 3FN

(30)

Cierre de un conjunto de dependencias funcionales

Cierre de un conjunto de dependencias funcionales

 Dado un conjunto F de dependencias funcionales, hay ciertas otras

dependencias funcionales que son, lógicamente, implicadas por F.

 Por ejemplo: Si AB y BC, entonces podemos inferir que A  C

 El conjunto de todas las dependencias funcionales implicadas

lógicamente por F es el cierre de la F.

 Denotado como la cerradura de F por F+.

 Podemos encontrar a F+ aplicando Axiomas de Armstrong

 Si   , entonces    (reflexividad)

 Si   , entonces      (aumentatividad)

 Si   , y   , entonces    (transitividad)

 Los Axiomas de Armstrong son correctos, ya que no generan

(31)

Ejemplo

Ejemplo

R = (A, B, C, G, H, I)

F = { A B A C CG H CG I B H}

 Algunos miembros de F+

A H

 Por transitividad de A B y B H

AG I

 Por aumentatividad A C con G, resulta AG CG

y la transitividad con CG I

CG HI

(32)

Procedimiento para calcular F

Procedimiento para calcular F

++

 Para calcular el conjunto cerradura del conjunto de dependencias

funcionales F:

F + = F repeat

for each dependencia funcional f de F+

aplicar las reglas de reflexibilidad y de aumentatividad a f

añadir las dependencias funcionales resultantes a F + for each par de dependencias funcionales f1 y f2 de F + if f1 y f2 se pueden combinar mediante la transitividad

then añadir la dependencia funcional resultante a F

+

(33)

El cierre de dependencias funcionales (Cont.)

El cierre de dependencias funcionales (Cont.)

También podemos simplificar el cálculo manual de

F

+

 utilizando las siguientes reglas adicionales.

 Si    se cumple y    se cumple, entonces     se

cumple (unión)

 Si     se cumple, entonces    se cumple y   

tambien se cumple (descomposición)

 Si se cumple    y se cumple    , entonces se cumple 

(34)

Ejercicio

(35)

Ejercicios

Ejercicios

 Para cada uno de los esquemas, con su respectivo conjunto de

dependencias funcionales, resuelve lo siguiente: ¿Cuáles son las DF no triviales que se pueden derivar de las dependencias dadas?

 R=(A,B,C,D)

F={AB  C; C  D; D  A}

 R=(A,B,C,D)

F={AB  C; BC  D; CD  A; AD  B}

 R=(A,B,C,D,E)

F={A  BC; B D; CD E; EA}

 R=(A,B,C,D,E)

F={ABC; DE C; B D}

 R = (A, B, C, G, H, I)

(36)

Cierre de los conjuntos de atributos

Cierre de los conjuntos de atributos

Dado un conjunto de atributos



se define el

cierre

de

sobre

F

(denotado por

+

) como el conjunto de los atributos que son

funcionalmente determinados por

sobre

F

Algoritmo para calcular

+

, cierre de

sobre

F

resultado

:=

;

while

(cambios en

resultado

)

do

for each

in

F

do

begin

if

resultado

then

resultado

:=

resultado

(37)

Ejemplo Cierre de los conjuntos de atributos

Ejemplo Cierre de los conjuntos de atributos

R = (A, B, C, G, H, I)F = {A B

A C CG H CG I B H}

 (AG)+

1. result = AG

2. result = ABCG (A C y A B)

3. result = ABCGH (CG H y CG AGBC)

4. result = ABCGHI (CG I y CG AGBCH)

 Es AG una clave candidata?

1. Es AG una superclave?

1. ¿AG R? == es (AG)+ R

2. Es cualquier subconjunto de AG una superclave?

(38)

Aplicaciones de cierre de atributos

Aplicaciones de cierre de atributos

Comprobar superclaves:

 Para comprobar si  es superclave, se calcula +, y se comprueba

si contiene todos los atributos de R. 

Comprobar dependencias funcionales

 Se puede comprobar si se cumple la dependencia funcional

   (o en otras palabras, si se halla en F+), comprobando si   +.

 Es decir, se calcula +empleando el cierre de los atributos y luego

se comprueba si el cierre contiene a .

 Esta prueba resulta especialmente útil.

Ofrece una manera alternativa de calcular el

cierre de F

 Para cada   R, se halla el cierre +, y, para cada S  +, se

(39)

Recubrimiento canónico

Recubrimiento canónico

Un conjunto de dependencias funcionales pueden tener

dependencias redundantes que pueden haber sido inferidas

de otras.

 Por ejemplo: A C es redundante en: {AB, BC}

 Parte de una dependencia funcional puede ser redundante

 Ejm.: Derecha: {AB, BC, ACD} puede simplificarse

{A B, BC, AD}

 Ejm.: Izquierda: {A  B, BC, ACD} puede simplificarse

{A  B, BC, AD}

(40)

Atributos raros

Atributos raros

 Un atributo de un DF es raro si se puede eliminar sin modificar el cierre de F.

 Considere un conjunto F de dependencias funcionales y la dependencia

funcional    de F.

 El Atributo A es raro en  si A  

y F implica lógicamente a (F – {  })  {( – A)  }.

 El Atributo A es raro en  si A  y el conjunto de dependencias funcionales (F

{  })  { ( – A)} implica lógicamente F.

 Hay que tener cuidado con la dirección de las implicaciones al utilizar la definición de los atributos raros: si se intercambian el lado derecho y el izquierdo, la implicación se cumplirá siempre. Es decir, (F – { })  {( – A) } siempre implica lógicamente a F, y F

también se implica lógicamente siempre a (F – { })  {(– A)}

 Ejemplo: Dado F = {AC, ABC }

B es raro en AB C porque {AC, AB C} implica lógicamente a AC

 Ejemplo: Dado F = {AC, ABCD}

C será raro en el lado derecho de ABCD desde AB  C puede deducirse

(41)

Comprobar si un atributo es raro

Comprobar si un atributo es raro

Considere un conjunto

F

de dependencias funcionales y la

dependencia funcional

en

F

.

Para comprobar si el atributo A

es raro

en

1. Calcular ({} – A)+ usando las dependencias en F

2. Verificar que ({} – A)+ contiene ; si es así, A es raro en  

Para comprobar si el atributo

A

es raro en

1. Calcular + usando solo las dependencias en

F’ = (F – {  })  { ( – A)},

(42)

Ejemplo de comprobar si un atributo es raro

Ejemplo de comprobar si un atributo es raro

Dado

F

= {

AB

CD

,

A

E, E

C

}, comprobar si

C

es raro en

AB

CD

Hay que calcular el cierre de los atributos de

AB

bajo F’ = {

AB

D

,

A

E E

C

} el cierre es

ABCDE, que incluye a CD, por lo que se infiere que

(43)

Recubrimiento canónico

Recubrimiento canónico

 Un recubrimiento canónico para F es un conjunto de dependencias F

c tales

que:

F implica lógicamente todas las dependencias de F

c, y

F

cimplica lógicamente todas las dependencias de F, y

 Ninguna dependencia funcional de F

ccontiene atributos raros, y

 El lado izquierdo de cada dependencia funcional de F

c es único. Es decir no hay dos

dependencias 1 1 y 2 2 de Fc tales que 1 = 2.

 Para calcular el recubrimiento canónico para F:

Fc = F

repeat

Utilizar la regla de unión para sustituir las dependencias de Fc de la forma

1  1 y 1 2 con 1 12

Hallar una dependencia funcional   de Fc con un atributo raro en  o en 

/*Nota: la comprobación de los atributos raros se lleva acabo empleando Fc no F */ Si se halla algún atributo raro, hay que eliminarlo de   

until Fc ya no cambie.

 Nota: La regla de la Unión puede llegar a ser aplicables después de de que

(44)

Calcular el recubrimiento canónico

Calcular el recubrimiento canónico

R = (A, B, C)

F = {A BC B C A B ABC}

 Combinar A BC y A B en A BC

 El conjunto ahora es {A BC, B C, ABC}

A es raro en ABC

 Verificar si el resultado de eliminar A de ABC es implicado por otras

dependencias funcionales.

 Si: de hecho, BC ya esta presente!  El conjunto ahora es {A BC, B C}

C es raro en ABC

 Verificar si A C es implicado lógicamente por A B y las demás dependencias  Si: usando la transitividad de A B y B  C.

(45)

Descomposición sin perdida

Descomposición sin perdida

 Sea R un esquema de relación y F un conjunto de dependencias

funcionales de R. Supóngase que R1 y R2 forman una descomposición de R. Sea r(R) una relación del esquema de R. Se dice que la

descomposición sin pérdidas si, para todos los ejemplares legales de la base de datos.

r = R1(r ) |X| R2(r )

 Se pueden utilizar las dependencias funcionales para probar si ciertas

descomposiciones son sin pérdidas. Sean R, R1, R2 y F como se

acaban de definir R1 y R2 forman una descomposición sin pérdidas de R si, como mínimo, una de las dependencias funcionales siguientes se halla en F+:

(46)

Ejemplo

Ejemplo

R = (A, B, C)

F = {A

B, B

C)

 Puede ser descompuesto en dos formas diferentes

R

1

= (A, B), R

2

= (B, C)

 Descomposición de reunión sin perdida:

R1 R2 = {B} y B BC

 Conserva la dependencia

R

1

= (A, B), R

2

= (A, C)

 Descomposición de reunión sin perdida:

R1 R2 = {A} y A  AB

 No conserva la dependencia.

(47)

Conservación de las dependencias

Conservación de las dependencias

Sea F

i

el conjunto de dependencias de F

+

que solo incluye atributos de R

i

.

Una descomposición

conserva dependencias

, si

(

F

1

F

2

F

n

)

+

=

F

+

Si no es así, entonces comprobar las actualizaciones de

violación de dependencias funcionales que pueden

(48)

Comprobar la conservación de las dependencias

Comprobar la conservación de las dependencias

Para verificar si una dependencia

se conserva en una

descomposición de

R

en

R

1

,

R

2

, …,

R

n

utilizamos la siguiente

prueba (Realizado con cerradura de atributos con respecto a

F

)

result = 

while (cambios en result) do

for each Ri de la descomposición

t = (result Ri)+ R

i

result = result t

 Si result contiene todos los atributos de , entonces la dependencia

funcional    es conservada.

Aplicamos la prueba sobre todas las dependencias de

F

para

verificar si una descomposición conserva las dependencias.

Este procedimiento toma un tiempo polinómico, en lugar del

exponencial necesario para calcular

F

+

y

(

F

(49)

Ejemplo

Ejemplo

R =

(

A, B, C

)

F =

{

A

B

B

C

}

Key = {

A

}

R

no esta en BCNF

Descomponemos

R

1

= (

A, B), R

2

=

(B, C)

R

1

y

R

2

esta en BCNF

Descomposición de reunión sin pérdidas

(50)

Comprobación de la FNBC

Comprobación de la FNBC

 Para verificar si una dependencia no trivial  causa una violación de BCNF

1. Calcular + (la cerradura del atributo ), y

2. Comprobar si incluye todos los atributos de R, es decir, si es si es superclave de R.

 Comprobación simplificada: para comprobar si un esquema de relación R esta en

BCNF, basta con comprobar sólo si las dependencias del conjunto F dado violan la BCNF, en vez de comprobar todas las dependencias de F+.

 Se puede probar que, si ninguna de las dependencias de F provoca

violaciones de la BCNF, ninguna de las dependencias de F+ lo hace tampoco.

 Por desgracia, el último procedimiento no funciona cuando se descompone

relaciones. Es decir en las descomposiciones no basta con emplear F cuando se comprueba si la relación Ri de R viola FNBC.

 Considere R = (A, B, C, D, E), con F = { A B, BC D}

 Descomponer R en R

1 =(A,B) y R2 =(A,C,D, E)

 Ninguna de las dependencias de F contiene únicamente atributos de

(A,C,D,E) por lo que se podría creer erróneamente que R2 satisface la BCNF.

 De hecho, hay una dependencia ACD en F+ que prueba que R

2 no esta

(51)

Comprobar la descomposición de la FNBC

Comprobar la descomposición de la FNBC

Para verificar si una relación

R

i

en una

descomposición de

R

que esta en BCNF,

Para cada subconjunto

de atributos de R

i

se

comprueba que

+

no incluye ningún atributo de R

i

-

o bien incluye todos los atributos de R

i

.

Si algún conjunto de atributos de

de

R

i

viola esta

condición, considérese la siguiente dependencia

funcional, que se puede probar que se halla en F+.



(

+

-

)

R

i

(52)

Algoritmo de descomposición de la FNBC

Algoritmo de descomposición de la FNBC

result := {R };

done := false; calcular F +;

while (not done) do

if (hay algún esquema Ri de result que no se halle en BCNF)

then begin

Sea    una dependencia funcional no trivial que se cumple en Ri

tal que   Ri no se halla en F +, y    = ;

result := (result – Ri )  (Ri)  (,  ); end

else done := true;

(53)

Ejemplo de descomposición de BCNF

Ejemplo de descomposición de BCNF

R = (A, B, C )

F = {A

B

B

C}

Clave = {A}

R no esta en BCNF (B

C porque B no es

superclave)

Decomposición

R

1

= (

B, C)

(54)

Ejemplo de descomposición de BCNF

Ejemplo de descomposición de BCNF

 Relación R original y F dependencia funcional

R = (nombre_sucursal, ciudad_sucursal, activos,

nombre_cliente, numero_prestamo, importe )

F = {nombre_sucursal activos ciudad_sucursal numero_prestamo importe nombre_sucursal } clave= {numero_prestamo, nombre_cliente}

 Decomposition

R1 = (nombre_sucursal, ciudad_sucursal, activos)

R2 = (nombre_sucursal, nombre_cliente, numero_prestamo , importe )

R3 = (nombre_sucursal, numero_prestamo , importe )

R4 = (nombre_cliente, numero_prestamo )

 Descomposición Final

(55)

Conservación de dependencias en BCNF

Conservación de dependencias en BCNF

No siempre es posible obtener una descomposición de

FNBC que conserve la dependencia

R =

(

J, K, L

)

F =

{

JK

L

L

K

}

Dos claves candidatas =

JK

y

JL

R

no esta BCNF

Cualquier descomposición de

R

no conservara la

dependencia.

JK

L

Esto implica que las pruebas para

JK

L

requiere

(56)

Ejemplo de 3FN

Ejemplo de 3FN

Relación R:

R =

(

J, K, L

)

F =

{

JK

L, L

K

}

Dos claves candidatas:

JK

y

JL

R

esta en 3FN

JK

L

JK

es una superclave

(57)

Redundancia en 3FN

Redundancia en 3FN

Hay una cierta redundancia en este esquema

Ejemplo de problemas debido a la redundancia en 3FN

R = (J, K, L)

F = {JK L, L K }

J j1 j2 j3 null L l1 l1 l1 l2 K k1 k1 k1 k2

 repetición de información (ejm., la relación l1, k1)

Necesidad de usar valores nulos (ejm., para representar la relación

(58)

Comprobar la 3NF

Comprobar la 3NF

Optimización: Necesidad de comprobar solo DFs en

F

, no hay necesidad comprobar DFs in

F

+

.

Utilizar la cerradura de atributo para verificar cada

dependencia

, si

es una superclave.

Si

no es una superclave, tenemos que verificar si

cada atributo en

esta contenido en una clave

candidata de

R

Esta prueba es bastante cara, ya que implica la búsqueda

(59)

Algoritmo de descomposición de 3NF

Algoritmo de descomposición de 3NF

Sea Fc recubrimiento canónico para F;

i := 0;

for each dependencia funcional  

en Fc do

if ninguno de los esquemas Rj, 1  j i contiene 

then begin

i := i + 1;

Ri := 

end

if ninguno de los esquemas Rj, 1  j i contiene una clave candidata

para R

then begin

i := i + 1;

Ri := cualquier clave candidata para R;

end

(60)

Algoritmo de descomposición de 3NF

Algoritmo de descomposición de 3NF

(Cont.)

(Cont.)

El algoritmo asegura:

Cada relación

R

i

esta en 3NF

(61)

Descomposición 3NF : Ejemplo

Descomposición 3NF : Ejemplo

Esquema relación:

Sucursal_Asesor= (id_cliente, id_empleado, nombre_sucursal, tipo ) 

Dependencias funcionales:

1. id_cliente, id_empleado nombre_sucursal, tipo 2. id_empleado nombre_sucursal

3. id_cliente, nombre_sucursal id_empleado

Primero calculamos el recubrimiento canónico

nombre_sucursal es raro en la derecha de la primera dependencia

 No hay otros atributos raros, así tenemos FC =

id_cliente, id_empleado tipo

(62)

3NF Decompsition Example (Cont.)

3NF Decompsition Example (Cont.)

El bucle for genera los siguientes esquemas en 3NF:

(id_cliente, id_empleado, tipo) (id_empleado, nombre_sucursal)

(id_cliente, nombre_sucursal, id_empleado)

 Si las DFs fueron considerados en orden diferente, con luna 2nd considerada

después de la 3rd,

(id_empleado, nombre_sucursal)

no estaria incluido en la descomposición porque ello es un subconjunto (id_cliente, nombre_cliente, id_empleado)

 Menor extensión del algoritmo de descomposición de 3NF: el fin de bucle for,

detecta y elimina esquemas, tales como (id_empleado, nombre_sucursal), los cuales son subconjunto de otros esquemas.

 Resultado no depende sobre el orden considerado en las DFs

 El resultado simplificado de esquema en 3FN es:

(id_cliente, id_empleado, tipo)

(63)

Comparación de BCNF y 3NF

Comparación de BCNF y 3NF

Siempre es posible descomponer una relación en un

conjunto de relaciones que están en 3FN tales que:

La descomposición es sin perdida

Las dependencias se conservan

Siempre es posible descomponer una relación en un

conjunto de relaciones que están en BCNF tales

que:

La descomposición es sin perdida

(64)

Objetivo del diseño de base de datos

Objetivo del diseño de base de datos

 Objetivo para un diseño de base de datos relacional es:

 FNBC.

 Ausencia de pérdidas.

 Conservación de las dependencias.

 Si no podemos lograr esto, aceptamos uno de lo siguiente:

 La falta de conservación de dependencias  La redundancia debido al uso de 3FN

 Curiosamente, SQL no proporciona una forma directa de especificar

dependencias funcionales que no sean superclaves.

Puede especificar DFs con asertos, pero son caras para poner a prueba

 Por tanto, aunque se tenga una descomposición que conserve las

Referencias

Documento similar

T02.019- Fecha y usuario del pedido, código, nombre, marca, pvp y precio de venta de los artículos solicitados en el pedido número 1 que sean televisores... select cod,nombre,'tiene

Si para construir y evaluar una FBF necesitamos una interpretación y un LPO, para todo esquema de base de datos relacional (BDR) y para cada estado de base de datos

[r]

[r]

Cuando se realiza una revisión integrativa entorno a un tema como el de la sintomatología presente en los pacientes con enfermedad oncológica avanzada, que motivan el

[r]

BASES DE DATOS (IG18 Semipresencial) Diseño Físico de Bases de Datos Relacionales.. Lledó Museros /

Introducción a las Bases de Datos: Sistemas de Bases de Datos frente a Sistemas de Ficheros.. Lledó Museros /