Final del 14/08/19 (Bases de Datos)

De Cuba-Wiki
Revisión del 22:58 3 dic 2019 de Tinchou (discusión | contribs.) (→‎Pregunta 3: Respondo pregunta 3)

Consigna

Se aprueba con 60/100. (10 puntos cada una)

  1. Definir dependencia funcional. Dado {idAlumno, nombreAlumno, idCurso, idProfesor} dar un conjunto de dependencias funcionales. Decir en qué forma normal se encuentra.
  2. Definir clave candidata y clave primaria. Definir 2FN.
  3. Para qué sirve la normalización? Cómo se relaciona con las pautas de diseño de una base de datos? Describir anomalías que puede presentar una base de datos desnormalizada.
  4. Qué es una transacción? Dar un ejemplo de algún dominio. Por qué es importante el control de concurrencia?
  5. Explicar bases NoSQL por documentos, explicando el concepto de documento. Qué es un DID? Dar un ejemplo de un sistema de base de datos por documentos.
  6. Definir base de datos distribuida. Explicar nuevos niveles de transparencia.
  7. Explicar fragmentación. Explicar cómo se recupera la tabla original con álgebra relacional.
  8. Explicar independencia física.
  9. Dar dos ejemplos de optimizaciones algebraicas. Ejemplificar.
  10. Diferencia entre administrador de datos y DBA. Relacionar con concepto de independencia física y transparencia.

Respuestas posiblemente incorrectas

Pregunta 1

Una dependencia funcional X -> Y entre dos conjuntos de atributos X e Y de una BD indica que cualquiera dos tuplas t1 y t2 en R tal que t1[X] = t2[X], se debe cumplir t1[Y] = t2[Y].

Las dependencias funcionales dependen de la semántica de la relación, y por tanto vamos a asumir que el conjunto de atributos dado corresponde a un sistema de gestión unviersitaria (e.g Guaraní) para dar sus dependencias funcionales.

  1. idAlumno -> nombreAlumno: cada alumno tiene un único id asignado
  2. idCurso -> idProfesor: asumiendo que un curso representa una instancia de materia + profesor + cuatrimestre de cursada

Si asumimos que este esquema representa una relación del estilo "inscripción a cursada", podemos considerar que la PK estará compuesta por { idAlumno, idCurso }. En este caso no se llega a 2FN pues los atributos nombreAlumno e idProfesor dependen parcialmente de la PK. El esquema se encuentra en 1FN por no ser 2FN y no tener relaciones dentro de relaciones ni atributos multivaluados.

Pregunta 2

Una clave candidata es una de las posibles claves de una relación. Una clave S es un subconjunto de atributos de R con la propiedad de que no hay dos tuplas t1, t2 en un estado legal r(R) que cumplan t1(S) = t2(S).

La clave primaria es una clave candidata designada arbitrariamente como tal. Por ejemplo, en una tabla donde se tienen los atributos DNI y Pasaporte de una persona, uno podría elegir tanto DNI como Pasaporte como PK.

2FN es una forma normal que, además de ser 1FN (prohíbe relaciones dentro de relaciones, atributos multivaluados), cumple que todo atributo no primo A de R depende funcionalmente de manera completa de la PK de R. Esto es, que la PK es una DF minimal para todos los atributos que no pertenecen a alguna CK.

Pregunta 3

La normalización es una herramienta que se apoya en las DFs para evaluar y comparar distintas formas de agrupar atributos en un esquema. Al diseñar una base de datos normalizada siguiendo las formas normales, se busca que el resultado sea conceptualmente bueno (e.g entendible) y también físicamente bueno (e.g minimizar duplicación).

Para esto se siguen cuatro pautas fundamentales, que si bien no siempre pueden alcanzarse al mismo tiempo, dan una medida informal de la calidad del diseño:

  1. semántica clara
  2. reducir información redundante
  3. reducir la cantidad de valores NULL
  4. no permite generar tuplas espúreas

Una base de datos desnormalizada puede presentar distintos problemas, como por ejemplo:

  • Anomalías de modificación: el nombre del departamento 33 es inconsistente (Compras/Adquisiciones):
idEmpleado idDepartamento nombreDepartamento
1 33 Compras
2 34 Ventas
3 33 Adquisiciones
  • Anomalías de deleción: al borrar el empleado 2 desaparece el departamento Ventas
idEmpleado idDepartamento nombreDepartamento
1 33 Compras
3 33 Adquisiciones
  • Anomalías de inserción: este esquema no permite agregar información de departamentos que aún no tienen empleados. Lo siguiente es inválido:
idEmpleado idDepartamento nombreDepartamento
NULL 35 Ingeniería
NULL 36 Calidad

Pregunta 4

Pregunta 5

Pregunta 6

Pregunta 7

Pregunta 8

Pregunta 9

Pregunta 10