Beruflich Dokumente
Kultur Dokumente
A B C D
a1 b1 c1 d1
a2 b1 c2 d1
a3 b2 c3 d1
a4 b2 c3 d1
a) ABCD
b) BA
c) C/A (7 SIGNIFICA “NO DETERMINA”)
d) BC/A
e) BCD
f) DA
1
6) Considere la relación:
Asumimos que un auto lo pueden vender varios vendedores, por lo que {NúmeroAuto,
NúmeroVendedor} es la clave principal. Las siguientes son otras dependencias adicionales:
b) ¿En cuál forma normal se encuentra R? Explique claramente por qué no cumple la
siguiente FN.
Dado que ABD es la clave, la relación se encuentra en 1FN, no cumple la 2FN porque hay
atributos no claves que dependen parcialmente de la clave. Estos son: C, EF, IK, GH.
2
2. R3(ADGH) al sacar AD -> GH
3. R5(BDEF) al sacar BD -> EF
4. R7(AIK) al sacar A -> IK
5. Queda R8(ABDJ)
a) Genere todas las claves candidatas para R. Existen tres claves candidatas.
De A -> B
A-> A por reflexividad
AC -> BC por aumento en C de A -> B
AC -> C por descomposición
AC -> E por transitividad teniendo BC -> E
ACD -> ED por aumento en D
ACD -> D por descomposición
Clave ACD porque determina a todos los atributos y es minimal.
3
De ED -> A
ED -> E por reflexividad
ED -> D por reflexividad
ED -> B por transitividad teniendo A ->B
EDC ->BC por aumento en C
EDC ->C por descomposición
Clave ECD porque determina a todos los atributos y es minimal.
De BC -> E
BC -> B por reflexividad
BC -> C por reflexividad
BCD ->ED por aumento en D de BC -> E
BCD ->D por descomposición
BCD ->A por transitividad teniendo ED -> A
Clave BCD porque determina a todos los atributos y es minimal.
Si R está en 3FN porque en todas las dependencias funcionales se cumple que los atributos en
los consecuentes son atributos parte de una clave.
10) (RESUELTO) Demuestre que cualquier esquema de relación con dos atributos está en FNBC.
Para una relación con dos atributos, tal como (A,B), solo existen tres posibilidades de clave: el
atributo A, el atributo B, o el conjunto de atributos AB. Si A es clave significa que tenemos la DF: A
->B en cuyo caso A es superclave y por lo tanto se satisfacen los requerimientos de la FNBC. El
mismo análisis se puede realizar para el caso de B. Si AB es clave entonces tenemos la DF trivial
AB->AB y también satisfacemos los requerimientos de la FNBC.
TituloLibro -> Editorial, TipoLibro TipoLibro -> Precio Autor -> AfiliaciónAutor
4
Luego tenemos TituloLibro,Autor-> AfiliaciónAutor por transitividad teniendo Autor ->
AfiliaciónAutor
b) ¿En cuál forma normal se encuentra LIBROS? Explique claramente por qué no cumple la
siguiente FN.
LIBROS se encuentra en 1FN no cumple los requerimientos para la 2FN puesto que hay
atributos no clave que dependen parcialmente de la clave. Las DFs que muestran esta
situación son: TituloLibro -> Editorial, TipoLibro y Autor -> AfiliaciónAutor
Al considerar la DF Autor -> AfiliaciónAutor para descomponer LIBROS nos quedan dos relaciones:
LIBROS2 está en FNBC porque Autor es superclave. La descomposición es por join sin pérdida
puesto que LIBROS1 LIBROS2 Autor y podemos derivar Autor ->Autor, AfiliaciónAutor
desde la DF Autor -> AfiliaciónAutor por aumento.
LIBROS1 sigue en primera y es necesario descomponerla tomando en consideración la DF:
TituloLibro -> Editorial, TipoLibro. Nos quedan las relaciones:
LIBROS3 y LIBROS4 están en FNBC porque en la primera relación no hay dependencias funcionales
además de la clave de LIBROS y en la segunda relación TituloLibro es clave. La descomposición es
por join sin pérdida puesto que LIBROS3 LIBROS4 TituloLibro y podemos derivar
TituloLibro->TituloLibro, TipoLibro, Editorial desde la DF TituloLibro -> Editorial, TipoLibro por
aumento.
Se pierde la DF TipoLibro -> Precio porque el atributo TipoLibro queda en la relación LIBROS4 y
Precio queda en la relación LIBROS3.
e) Por cada dependencia funcional que se pierde en la descomposición de LIBROS escriba una
consulta SQL que permita comprobar si se cumple la dependencia funcional en el nuevo
esquema de LIBROS. Justifique.
5
Dado que por cada TituloLibro existe un único TipoLibro (por la dependencia funcional TituloLibro
-> Editorial, TipoLibro) basta con una consulta que cuente el número total de tuplas de la tabla
LIBROS3 que tengan el mismo TituloLibro pero diferente precio, estos libros deben existir en la
tabla LIBROS4 por lo que es necesario realizar un join. La consulta es la siguiente:
SELECT COUNT(*)
FROM LIBROS4 L1, LIBROS3 L2, LIBROS3 L3
WHERE L1.TituloLibro = L2.TituloLibro AND L1.TituloLibro = L3.TituloLibro
AND L2.Precio <> L3.Precio
Si el resultado de la consulta es 0, no hay violación de la DF.
También se puede crear una vista que contenga por cada TipoLibro el Precio.
Luego la consulta:
SELECT COUNT(*)
FROM Dif_precio D1, Dif_precio D2
WHERE D1.TipoLibro = D2.TipoLibro AND D1.Precio<>D2.Precio