Diferencia entre revisiones de «Final del 11/11/19 (Bases de Datos)»

De Cuba-Wiki
(Empiezo a responder algunas preguntas)
Etiquetas: mobile edit mobile web edit
(→‎Pregunta 4: Respondo pregunta 4)
Etiquetas: mobile edit mobile web edit
Línea 98: Línea 98:


==== Pregunta 4 ====
==== Pregunta 4 ====
Asumimos que este esquema representa una relación del estilo "inscripción a cursada" y consideramos que la PK está compuesta por { idEstudiante, nroCurso }. Las DFs que vemos son:
# idEstudiante -> nombreEstudiante: cada alumno tiene un único id asignado
# nroCurso -> idProfesor: asumiendo que un curso representa una instancia de materia + profesor + cuatrimestre de cursada
En este caso no se llega a 2FN (ni a 3FN) pues los atributos nombreEstudiante e idProfesor dependen parcialmente de la PK.
Proponemos el esquema normalizado en 3FN:
Estudiantes
{|
! idEstudiante (PK)
! nombreEstudiante
|-
|...
|...
|}
Cursos
{|
! nroCurso (PK)
! idProfesor
|-
|...
|...
|}
Profesores
{|
! idProfesor (PK)
|-
|...
|}
EstudiantesEnCursos
{|
! nroCurso (PK)
! idEstudiante (PK)
|-
|...
|...
|}


==== Pregunta 5 ====
==== Pregunta 5 ====

Revisión del 19:06 2 dic 2019

Fueron 8 preguntas/ejercicios, dio 2hs. No todos los puntos valían lo mismo y no sabías cuánto valía cada punto. Es probable que el orden de las preguntas no haya sido exactamente así.

Consigna

  1. Definir transacciones y dar y explicar las propiedades ACID.
  2. Definir clave candidata. Definir clave primaria. Cuando un esquema está en 2FN?
  3. Definir dependencia funcional. ¿Para qué sirve que la normalización? ¿Cómo esta relacionado con la calidad de un diseño de bases de datos? ¿Qué problemas puede presentar una base desnormalizada? Ejemplifique
  4. Dada la siguiente relación (idEstudiante, nombreEstudiante, nroCurso, idProfesor). En base a su conocimiento del dominio, detalle cuales son las dependencias funcionales en ese esquema. ¿Está en 3FN? Justifique. En caso de no estarlo dar una descomposición que sea 3FN.
  5.  Defina bases de datos distribuida. Qué nuevos niveles de transparencia aparecen junto a estas bases?
  6. No me acuerdo exactamente el enunciado, pero era asi: Tenias dos tablas: Estudiantes E: (idEstudiante, nombreEstudiante, idFacultad, fechaNac), Facultad F: (idFacultad, nombreFacultad, region). Un estudiante va a 1 y solo 1 facultad. La tabla Estudiantes tiene 10000 registros de 30 bytes cada uno. La tabla universidad tiene 100 regitros de 20 bytes cada uno. Suponga una base de datos distribuida de 3 nodos N1, N2 y N3 donde N1 tiene la tabla estudiantes, N2 tiene la tabla universidades y N3 no tiene nada.
    1. Expresar en álgebra relacional la consulta: “devolver id de estudiante y nombre de la facultad para los estudiantes que hayan nacido despues de 1980”
    2. Dar dos estrategias de resolución de esta query, indicando cuantos bytes se transfieren por la red entre las maquinas. Por ejemplo “N1 y N2 mandan todo a N3”
    3. Esta no me la acuerdo mucho pero era algo como “de forma general, cual es la estrategia óptima?”
  7. (Creo que este era exactamente el enunciado, con un 90% de seguridad): Se tienen 4 servidores N1, N2, N3 y N4, y 4 regiones reg1, reg2, reg3, reg4 tal que cada servidor Ni está en la región regi.
    1. Indicar como sería la query en algebra relacional que fragmentaría a la tabla Facultades del insiso anterior para que cada facultad vaya al server de su región (todas las facultades pertenecen a una y solo una de esas 4 regiones) y la query que fragmente a la tabla Estudiantes por la region a la que pertenece su facultad.
    2. Qué tipo de fragmentación utilizó?
    3. Indicar en algebra relacional como sería la query que reconstruya las tablas originales
  8. Dar 2 heuristicas que use el optimizador de consultas. Ejemplifique.

Respuestas posiblemente incorrectas

Pregunta 1

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

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

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

Asumimos que este esquema representa una relación del estilo "inscripción a cursada" y consideramos que la PK está compuesta por { idEstudiante, nroCurso }. Las DFs que vemos son:

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

En este caso no se llega a 2FN (ni a 3FN) pues los atributos nombreEstudiante e idProfesor dependen parcialmente de la PK.

Proponemos el esquema normalizado en 3FN:

Estudiantes

idEstudiante (PK) nombreEstudiante
... ...

Cursos

nroCurso (PK) idProfesor
... ...

Profesores

idProfesor (PK)
...

EstudiantesEnCursos

nroCurso (PK) idEstudiante (PK)
... ...

Pregunta 5

Pregunta 6

Pregunta 7

Pregunta 8

Pregunta 9

Pregunta 10