More than Just Lines on a Map: Best Practices for U.S Bike Routes
Diseño de bases de datos
1. U N I D A D N ° 5 : D I S E Ñ O D E B A S E D E D A T O S
Bases de Datos
2. Contenidos
Primera forma normal
Dependencias funcionales
Segunda forma normal
Tercer forma normal
Forma Normal Boyce-Codd
Cuarta forma normal
Quinta forma normal
Silvia Gabriela Rivadeneira Molina
2
3. Problemas en el diseño de base de datos
relacionales
Silvia Gabriela Rivadeneira Molina
3
Redundancia de información
Anomalías en inserción, eliminación y actualización
de información
4. La descomposición como
solución
Ejemplo:
PROVEEDORES (codprov, nomprov,
codinsumo, precio)
Solución:
DATOS_PROVEEDOR(codprov,
nombre)
SUMINISTROS (codprov, codinsumo,
precio)
Si queremos obtener los proveedores
que suministran el producto 103, se
hace una unión natural entre las dos
tablas.
CodProv NomProv CodInsumo Precio
P1 Silva 100 200
P1 Silva 103 70
P2 Morales 201 200
P3 Gallardo 305 100
P3 Gallardo 390 70
P1 Silva 103 70
Silvia Gabriela Rivadeneira Molina
4
5. Pérdida de información
Una mala descomposición puede
implicar pérdida de información.
Ejemplo:
Si descomponemos
PI (codinsumo, precio)
NDP (codprov, nomprov, precio)
Al hacer la misma consulta anterior se
pierde información, la respuesta no es
correcta.
CodProv NomProv CodInsumo Precio
P1 Silva 100 200
P1 Silva 201 200
P1 Silva 103 70
P1 Silva 390 70
P2 Morales 100 200
P2 Morales 201 200
P3 Gallardo 305 100
P3 Gallardo 103 70
P3 Gallardo 390 70
P1 Silva 103 70
Silvia Gabriela Rivadeneira Molina
5
P3 Gallardo 103 70
6. Primera Forma Normal (1FN)
Silvia Gabriela Rivadeneira Molina
6
Los dominios de todos los atributos de R son
atómicos.
8. Segundo ejemplo
Silvia Gabriela Rivadeneira Molina
8
SOCIO (nro-socio, nombre-socio, direccion-socio,
tel-socio, cod-barrio, seccional, cod-pelicula,
nombre-pelicula, fecha-alquiler, cant-alquilada,
contado)
Si el atributo tel-socio permitiera la carga de varios
teléfonos. Entonces, habría que descomponer la relación
S1 (nro-socio, tel-socio)
S2 (nro-socio, nombre-socio, direccion-socio, cod-barrio,
seccional, cod-pelicula, nombre-pelicula, fecha-alquiler, cant-
alquilada, contado)
9. Dependencias funcionales
Silvia Gabriela Rivadeneira Molina
9
Sea R una relación con atributos (a1, a2, …, an), X e Y
dos subconjuntos de los atributos ai.
XY
t1[X] = t2[X] t1[Y] = t2[Y]
10. Definición de clave
Silvia Gabriela Rivadeneira Molina
10
K es clave si:
K (a1, a2, …, an) con (a1, a2, …, an) siendo el conjunto total de
atributos de R, y
No existe Y K tal que Y (a1, a2, …, an)
11. Ejemplo
Silvia Gabriela Rivadeneira Molina
11
PROVEEDORES (codprov, nomprov, codinsumo,
precio)
Codprov nomprov
Nomprov codprov (no, porque podrían haber dos
proveedores con el mismo nombre)
Codprov codinsumo (no, porque un proveedor puede
suministrar dos o más insumos)
Codinsumo precio (no, porque un insumo puede tener
distintos precios según proveedor)
(codprov, codinsumo) precio
12. Axiomas de Armstrong
Reglas de inferencia básicas:
Reflexividad: Si B es subconjunto de A, entonces A B
Aumentatividad: Si A B, entonces AC BC
Transitividad: Si A B y B C, entonces A C
Se deducen los siguientes:
Unión: Si A B y A C, entonces A BC
Descomposición: Si A BC, entonces A B y A C
Pseudotransitividad: Si A B y BC D, entonces AC D
Autodeterminación: A A (dependencia trivial)
Silvia Gabriela Rivadeneira Molina
12
13. Propiedades deseables de una descomposición
Silvia Gabriela Rivadeneira Molina
13
Descomposición de reunión sin pérdida
Conservación de dependencias
14. Descomposición de reunión sin pérdida
Silvia Gabriela Rivadeneira Molina
14
R1 y R2 forman parte de una descomposición de R.
(R1 R2) (R1 - R2) (R1 R2) R1
(R1 R2) (R2 - R1) (R1 R2) R2
15. Ejemplo
Silvia Gabriela Rivadeneira Molina
15
Si R1 (codprov, nomprov) y R2 (codprov, codinsumo,
precio)
R1 R2 = codprov, codprov nomprov, y R1 – R2 = nomprov
Si R1 (codinsumo, precio) y R2 (codprov, nomprov,
precio)
R1 R2 = precio y precio no determina a codinsumo, ni a
(codprov, nomprov)
16. Conservación de las dependencias funcionales
Silvia Gabriela Rivadeneira Molina
16
Si toda dependencia presente en F está en Fi o
puede ser deducida a partir de Fi.
17. Ejemplo
Silvia Gabriela Rivadeneira Molina
17
R (ciudad, calle, cpostal)
Cpostal ciudad
(ciudad, calle) cpostal
La clave es (ciudad, calle).
Si descomponemos:
R1 (cpostal, ciudad) y R2 (calle, cpostal)
Si comprobamos:
Pierde dependencias funcionales
F1 = {cpostal ciudad}
F2 = {calle calle, cpostal cpostal}
Sin pérdida de información
(R1 R2) {cpostal} y cpostal ciudad
18. Segunda Forma Normal (2FN)
Silvia Gabriela Rivadeneira Molina
18
Si se encuentra en 1FN, y;
Todo atributo que no pertenece a la clave depende
funcionalmente de toda la clave.
19. Dependencia funcional total/parcial
La 2FN se basa en el concepto de dependencia funcional
total.
Una dependencia funcional XY es una dependencia
funcional total si la eliminación de cualquier atributo
A de X hace que la dependencia deje de ser válida; es
decir, para cualquier atributo AX, (X-{A}) no determina
funcionalmente a Y.
Una dependencia funcional XY es una dependencia
funcional parcial si se puede eliminar un atributo
AX de X y la dependencia sigue siendo válida; es decir,
para algún AX, (X-{A}) Y.
Silvia Gabriela Rivadeneira Molina
19
20. Primer ejemplo
Silvia Gabriela Rivadeneira Molina
20
PROVEEDORES (codprov, nomprov, codinsumo,
precio)
Nomprov depende solo de una parte de la clave, no de toda la
clave, no está en 2FN
R1 (codprov, nomprov)
R2 (codprov, condinsumo, precio)
24. Tercera Forma Normal (3FN)
Silvia Gabriela Rivadeneira Molina
24
Si se encuentra en 2FN, y;
Ningún atributo no primo de R depende
transitivamente de la clave primaria.
25. Dependencia transitiva
La 3FN se basa en el concepto de dependencia
transitiva.
Una dependencia funcional XY en un esquema de
relación R es una dependencia transitiva si existe
un conjunto de atributos Z que no sea un
subconjunto de cualquier clave de R, y se cumplen
tanto XZ como ZY.
Silvia Gabriela Rivadeneira Molina
25
27. Otro ejemplo
Silvia Gabriela Rivadeneira Molina
27
R (ciudad, calle, codigop) con F ={(ciudad, calle)
codigop, Codigop ciudad} y clave {ciudad, calle}
Está en 3FN porque codigop depende funcionalmente sólo de
toda la clave.
28. Forma Normal de Boyce-Codd
Silvia Gabriela Rivadeneira Molina
28
Si se encuentra en 3FN, y;
Si y sólo si todo determinante es una clave candidata.
29. Ejemplo
Silvia Gabriela Rivadeneira Molina
29
R (ciudad, calle, cpostal)
Se encuentra en 3FN pero no en FNBC y no se puede
descomponer sin perder dependencias funcionales.
Cpostal no es superclave
30. Otro ejemplo
Imparte (estudiante, curso, profesor)
Las dependencias son:
{estudiante, curso} profesor
profesor curso
{estudiante, curso} es una clave candidata
Está en 3FN pero no en FNBC
Podríamos descomponer en uno de los tres pares
posibles:
(estudiante, profesor) y (estudiante, curso)
(curso, profesor) y (curso, estudiante)
(profesor, curso) y (profesor, estudiante)
Pero perdemos dependencias funcionales
Silvia Gabriela Rivadeneira Molina
30
31. Un último ejemplo
Cliente (nombre_cli, calle, ciudad_cli) y nombre_cli
(calle, ciudad_cli)
Sucursal (nombre_suc, activo, ciudad_suc) y
nombre_suc (activo, ciudad_suc)
Prestamo (nombre_suc, nombre_cli, numero_pres,
importe) y numero_pres (nombre_suc, importe)
P1 (numero_pres, nombre_suc, importe)
P2 (nombre_cli, numero_pres)
Comprobando
P1⋂ P2 = numero_pres y numero_pres (nombre_suc, importe)
y tampoco se pierden dependencias.
Silvia Gabriela Rivadeneira Molina
31
32. Cuarta forma normal
Si se encuentra en 3FN o FNBC, y;
No posee dependencias multivaluadas no triviales o,
también
Una relación está en 4NF si y sólo si, en cada
dependencia multivaluada X Y no trivial, X es
clave candidata.
Una dependencia multivaluada A B es trivial cuando B es
parte de A. Esto sucede cuando A es un conjunto de atributos,
y B es un subconjunto de A.
Silvia Gabriela Rivadeneira Molina
32
33. Dependencia multivaluada
La definición de 4FN confía en la noción de una
dependencia multivaluada.
Una dependencia multivaluada X Y especificada en
esquema R, donde X e Y son subconjuntos de R,
especifica la siguiente restricción sobre cualquier estado
de relación r de R: Si existen dos tuplas t1, t2 en r tales
t1[X]=t2[X], entonces deberán existir también dos tuplas
t3 y t4 en r con las siguientes propiedades donde Z es (R-
(X⋃Y)):
t3[X] = t4[X] = t1[X] = t2[X]
t3[Y] = t1[Y] y t4[Y] = t2[Y]
t3[Z] = t2[Z] y t4[Z] = t1[Z]
Silvia Gabriela Rivadeneira Molina
33
34. Un ejemplo
agenda (nombre, telefono, email)
Las claves candidatas serían los tres atributos, y las
dependencias serían nombre telefono y nombre
email
Descomponemos
A1 (nombre, telefono)
A2 (nombre, email)
Silvia Gabriela Rivadeneira Molina
34
35. Quinta forma normal
Conocida como forma normal de reunión por
proyección (FNRP) o de proyección-reunión (FNPR)
Si está en 4FN y;
Las únicas dependencias que existen son las
dependencias de reunión de una tabla con sus
proyecciones relacionándose entre las distintas
proyecciones mediante claves candidatas.
Silvia Gabriela Rivadeneira Molina
35
36. Proyección/unión
Proyección: De un conjunto atributos dados solo
tomamos lo que nos interesan, o sea, tendrán todas
las tuplas pero solo algunos atributos. Armamos otra
tabla que es subconjunto de la tabla original.
Unión: se pueden unir dos tablas con la misma
cantidad de atributos y con algún atributo en común
(JOIN).
Silvia Gabriela Rivadeneira Molina
36
37. Dependencia de reunión
Una dependencia de reunión especificada sobre el
esquema de relación R, especifica una restricción
sobre los estados r de R. la restricción establece que
todo estado permitido r de R debe tener una
descomposición de reunión sin pérdidas para dar R1,
R2, … Rn
Silvia Gabriela Rivadeneira Molina
37