Edición de «Final del 14/08/19 (Bases de Datos)»

De Cuba-Wiki
Advertencia: no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si inicias sesión o creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.

Puedes deshacer la edición. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces publica los cambios para así efectuar la reversión.

Revisión actual Tu texto
Línea 26: Línea 26:


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.
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 t<sub>1</sub>, t<sub>2</sub> en un estado legal r(R) que cumplan t<sub>1</sub>(S) = t<sub>2</sub>(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:
# semántica clara
# reducir información redundante
# reducir la cantidad de valores NULL
# 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 ====
Una transacción es un conjunto de instrucciones que se ejecutan formando una unidad lógica de procesamiento. Una transacción puede incluir uno o más accesos a la BD a través del uso de diversas operaciones (inserción, eliminación, modificación, etc.).
Diversos sistemas como los bancarios, los de reservas de vuelos o del mercado de valores, usan transacciones para garantizar la consistencia de los datos. Por ejemplo, un sistema bancario que usa una transacción para actualizar dos saldos a causa una transferencia evita la pérdida o creación de dinero en caso de fallas. En este caso, la atomicidad de la transacción garantiza que se ejecuta completo o se deshace por completo.
Este tipo de sistemas requieren rápida respuesta y alta disponibilidad para muchos usuarios que acceden de manera concurrente. En este escenario, un motor de base de datos hace uso de la multiprogramación, intercalando operaciones de distintas transacciones que se ejecutan concurrentemente. El control de concurrencia resulta importante pues queremos evitar que una transacción interfiera con otra: para el usuario, las transacciones se comportan como si se hubieran ejecutado una a continuación de la otra. De no manejar la concurrencia, pueden aparecer distintos problemas como:
* Lost update
* Dirty read
* Incorrect summary
* Unrepeatable read
==== Pregunta 5 ====
Una base de datos NoSQL por documentos es una base no-relacional que almacena los datos como documentos estructurados. El concepto principal es el documento. La BD almacena y recupera documentos. Los documentos pueden ser XML, JSON, BSON, etc.
Cada documento es una colección de pares: nombre de campo y valor. Los valores pueden ser un valor simple, una estructura compleja como una lista, otro documento o listas de documentos hijos.
A la hora de diseñar este tipo de bases de datos hay tres pasos fundamentales:
# Modelo conceptual de alto nivel, incluyendo patrones de consulta y diagramas de entidad-relación
# Modelo lógico a través de un diagrama de interrelación de documentos (DID)
# Modelo físico, incluyendo JSON Schema, estrategias de replicación y distribución, índices
Basándose en el DER, en el DID se especifica la interrelación entre documentos, principalmente si se incrustarán o referenciarán, determinando así el grado de desnormalización de los documentos.
MongoDB es una base de datos de documentos cuya principal ventaja es la capacidad de escalar horizontalmente casi sin configuración. Particionando los datos basándose en sus claves, este motor hace trivial la tarea de sharding. Además, provee otras características como un framework para procesamiento batch y una API de consulta que permite búsquedas por campo, rangos, regex.
==== Pregunta 6 ====
Una base de datos distribuída (DDB) es una colección de múltiples BD que están lógicamente relacionadas y se encuentran distribuídas en una red de computadoras. Este tipo de DBs presentan características nuevas, para las que los motores proveen transparencia (a costa de flexibilidad) para simplificar el proceso de desarrollo. Estas son:
# Distribución de los datos: libera al usuario de conocer detalles operativos de la red y ubicación de los datos
# Replicación: el usuario desconoce la existencia de copias
# Fragmentación horizontal y vertical: libera al usuario de conocer detalles sobre la fragmentación de los datos
# Diseño y Ejecución: libera al usuario de conocer cómo está diseñada la DDB y dónde es ejecutada una transacción
A la hora de elegir una DDB, se deberá tener en cuenta la flexibilidad y el grado de control que se requieran para alcanzar la performance, disponibilidad y tolerancia a fallos que se precise (entre otras cosas).
==== Pregunta 7 ====
La fragmentación consiste en dsitribuir una relación en subrelaciones.
* En el caso de la fragmentación horizontal, estas subrelaciones son subconjuntos de las tuplas de la relación original. En términos de álgebra relacional, estamos hablando de una selección (&sigma;(R)).
* En el caso de la fragmentación vertical, son subconjuntos de columnas de la relación original. En térmnos de AR, es una proyección (&pi;(R)).
* La fragmentación híbrida combina las dos anteriores.
Para recuperar las tablas, debemos pensar en las operaciones "opuestas" a las de fragmentación.
* Para reconstruir una fragmentación horizontal debemos aplicar la operación UNION a todos los fragmentos. Cabe mencionar que nos referimos a la union de conjuntos (sin duplicados) teniendo en cuenta que puede haber replicación.
* Para reconstruir una fragmentación vertical debemos aplicar la operación OUTER UNION. Como es de esperar, esta operación recombina las columnas de cada fila, lo cual es posible solo si cada fragmento contiene al menos una clave candidata (e.g la PK).
* Para reconstruir una híbrida se requiere aplicar UNION y OUTER UNION en el orden apropiado. Ni las slides ni el libro "Introduction to Database Management System" dicen cuál es. Pareciera que a veces es uno y a veces otro, pero no dice bajo qué condiciones.
==== Pregunta 8 ====
La independencia física es la capacidad de poder cambiar el esquema interno sin tener que cambiar el esquema conceptual (y por lo tanto tampoco los esquemas externos). Algunos potenciales cambios al esquema interno podrían ser la organización de los archivos o el agregado de un índice, usualmente con el fin de mejorar el rendimiento de las operaciones de consulta o de actualización de datos.
==== Pregunta 9 ====
Las optimizaciones algebraicas son aquellas que buscan mejorar la performance de la
consulta independientemente de la organización física. Involucran propiedades algebraicas que permiten construir una consulta equivalente a la original.
Por ejemplo, podemos convertir una selección compleja en una cascada de selecciones simples: &sigma;<sub>C1∧C2∧...∧Cn</sub>(R) &equiv; &sigma;<sub>C1</sub>(&sigma;<sub>C2</sub>(...&sigma;<sub>Cn</sub>(R)))
Otra optimización posible es conmutar selecciones: &sigma;<sub>C1</sub>(&sigma;<sub>C2</sub>(R)) &equiv; &sigma;<sub>C2</sub>(&sigma;<sub>C1</sub>(R))
Ambas optimizaciones están íntimamente relacionadas, pues descomponer una cascada puede hacerse como primer paso antes de la conmutación.
Esto resulta particularmente performante cuando se dispone de un índice que puede ser aprovechado en una selección (e.g C<sub>2</sub> selecciona los usuarios con apellido que empiece con "J" y se dispone de un índice sobre este atributo)
==== Pregunta 10 ====
* Administrador de base de datos -> modelo conceptual y lógico
* DBA -> modelo físico, especialista en el motor de base de datos
El administrador de datos es un perfil netamente funcional. Es un especialista en los datos de una organización desde el punto de vista lógico, con funciones como la colección y análisis de requerimientos para el modelado de negocio.
El administrador de datos suele desentenderse de la organización física de los datos, de la cual el DBA es el especialista. Esta persona es quien conoce los detalles de un motor de base de datos, y es asistido por el administrador de datos en la creación de los modelos físicos a partir de los modelos lógicos.
Ten en cuenta que todas las contribuciones a Cuba-Wiki pueden ser editadas, modificadas o eliminadas por otros colaboradores. Si no deseas que las modifiquen sin limitaciones, no las publiques aquí.
Al mismo tiempo, asumimos que eres el autor de lo que escribiste, o lo copiaste de una fuente en el dominio público o con licencia libre (véase Cuba-Wiki:Derechos de autor para más detalles). ¡No uses textos con copyright sin permiso!

Para editar esta página, responde la pregunta que aparece abajo (más información):

Cancelar Ayuda de edición (se abre en una ventana nueva)