Resumen Base de Datos
Resumen Base de Datos
Resumen Base de Datos
Unidad Nro°1:
Sistema de Base de Datos: un sistema de base de datos es básicamente un sistema computarizado para guardar registros; es
decir, es un sistema computarizado cuya finalidad general es almacenar información y permitir a los usuarios recuperar y
actualizar esa información con base en peticiones.
Dato: entrada.
Información: dato procesado.
Componentes de una base de datos
1- Dato: es una de las entradas de un sistema de información. Pueden ser:
- Integrados: significa que podemos imaginar a la base de datos como una unificación de varios archivos con
redundancia mínima.
- Compartidos: significa que las piezas individuales de la base de datos son utilizadas por varios usuarios de
manera concurrente (“Acceso Concurrente”). Nota: si la base de datos no es compartida se la conoce como
“personal” o “específica de la aplicación”.
Estas dos características son una importante ventaja en la base de datos.
2- Hardware: los volúmenes de almacenamiento secundario que se emplean para contener los datos almacenados, junto a
los dispositivos de E/S, los controladores de dispositivos, los canales de E/S, entre otras cosas conforman el Hardware.
Es decir, se refiere al servidor de base de datos, el cual abarca las unidades de procesamiento, almacenamiento
principal y almacenamiento secundario.
3- Software: abarca tanto al S.O. como así también al motor de base de datos. El motor de base de datos (DBMS – Data
Base Management System) es una pieza de software ubicada entre el sistema operativo y los programas de aplicación
que utilizan los usuarios. Todas las peticiones son procesadas por el DMBS (agregar, eliminar, modificar y leer datos)
ocultando a las aplicaciones y usuarios los detalles de implementación. Es importante aclarar que el DBMS es, sin
dudas, el componente de software más importante de la base de datos.
4- Usuarios:
- Programadores: son los responsables de escribir los programas de aplicación, en algún lenguaje, y estos
programas acceden a la base de datos emitiendo las solicitudes adecuadas al DBMS por o general es una
instrucción SQL.
- Usuario final: utilizan las aplicaciones desarrolladas por el programador (estas aplicaciones son las que acceden
de manera concurrente a la base de datos.) Interactúan con los sistemas desde terminales en línea.
5- Administrador de base de datos (DBA - Database Administrator): personal técnico responsable del funcionamiento y
disponibilidad del sistema de base de datos. Garantiza que estos datos siempre estén en línea.
6- Administrador de datos (DA): personal no técnico responsable de la necesidad de información del sistema de base de
datos (es quien dice qué datos se deben almacenar en el sistema y de establecer políticas para mantener y manejar
esos datos una vez almacenados).
o Recuperación ante fallos: los sistemas de base de datos están preparados para recuperarse automáticamente ante
cualquier falla de un sistema computarizado.
En el caso del DA: Estas personas entienden de las necesidades de la empresa, respecto a los datos, en un nivel de
administración superior. Decide que datos serán almacenados en a base de datos y establecen políticas para mantener y
manejar esos satos una vez almacenados.
Modelo de datos
Forma en la que se estructuran los datos en un sistema de información. Hay tres aspectos:
o Aspecto estructural: la estructura de os datos de alto nivel utilizada en el modelo. Define la estructura que voy a usar.
Ejemplo: arboles, redes, tablas, cubos, objetos, es decir, define la base de datos.
o Aspecto de integridad: buscan que los datos sean correctos en relación con lo que representan en el mundo real.
Sinónimo de permanencia, responsabilidad de los DBA.
En un modelo relacional, las bases de datos relacionales están basadas en un modelo/teoría matemática y todo está
demostrado, fundamentado en teoremas y axiomas. La pregunta ahora es, ¿Por qué se denomina base de datos relacional?
“Relación” es sólo un término matemático para una tabla. Su teoría se denomina, justamente, teoría relacional.
Clave extrajera (exporanea): Clave por la cual tengo que buscar en otra tabla.
Estas dos claves mantienen la consistencia en os datos, ya que no podemos duplicar ni borrar datos relacionados. Entre ambas
claves existe una relación.
Álgebra relacional
Conjunto de operadores que toman tablas (o relaciones) como operando y regresan una tabla como resultado.
Operaciones (soportadas por SQL 92)
- Proyección: operación unaria que tiene como operando una tabla y produce como resultado la misma tabla, pero con
menos campos. Adicionalmente la operación requiere un parámetro que es una lista de campos. Elimina registros
duplicados.
π a−c =
- Selección: operación unaria que tiene un solo operando y produce como resultado la misma tabla, pero con menos
registros. Adicionalmente posee un parámetro que es una condición.
δ a>5 =
x =
Sentencias
1- DDL (Data Definition Language): definen y crean el modelo de datos. CREATE TABLE – ALTER TABLE (altera la estructura)
– DROP TABLE (elimina).
2- DML (Data Manipulation Language): manipula los registros (no cambia la estructura). INSERT – UPDATE (actualiza) –
DELETE – SELECT (leo o consulto una tabla).
Subconsulta
Es una sentencia SELECT completa embebida en la cláusula WHERE de otra sentencia SELECT completa, utilizando conectores de
inclusión.
Hay 2 tipos de subconsultas
- Anidadas: son aquellas que no hacen referencia a ningún objeto (tablas o alias) de la consulta exterior. El orden de
procesamiento lógico es: 1º subconsulta una vez 2º consulta exterior una vez.
Este tipo de subconsulta tiene la particularidad de que si tomo la porción de código correspondiente únicamente a la
subconsulta y la ejecuto, funciona. Dicho de otro modo, las subconsultas anidadas son independientes.
Desde el punto de vista de desempeño, son más eficientes que las subconsultas correlacionadas ya que se ejecutan una
sola vez. Por último, cabe aclarar que las tablas generadas por las subconsultas se almacenan temporalmente en
memoria y, una vez utilizadas, se desechan.
- Correlacionadas: son aquellas que hacen referencia a objetos de la consulta externa. El orden de procesamiento lógico
es: 1º consulta externa una vez y por cada registro a validar en su cláusula WHERE se ejecuta la subconsulta. Este tipo
de subconsulta no es independiente y no es tan eficiente desde el punto de vista del desempeño ya que debe
ejecutarse n veces, siendo n la cantidad de registros de la tabla de la consulta externa.
Catalogo
Es la ubicación en donde el DMS almacena los metadatos en sus bases de datos.
Los metadatos, dato de los datos, se guardan en los catálogos en la base de datos. Estos metadatos son ubicaciones físicas de los
archivos de la base de datos, tablas, índices, campos, tipos de datos de los campos y estadísticas de distribución de datos
(valores más comunes, densidad de los datos más repetitivos) que estos últimos se utilizan para optimizar.
El DBMS (sistema de administración de base de datos) es el software que maneja todo acceso a la base de datos. De manera
conceptual, lo que sucede es lo siguiente:
1. Un usuario emite una petición de acceso, utilizando algún sublenguaje de datos específico (por lo regular SQL).
2. El DBMS intercepta esa petición y la analiza.
3. El DBMS inspecciona, en su momento, (las versiones objeto de) el esquema externo para ese usuario, el Mapping
externo/conceptual correspondiente, el esquema conceptual, el Mapping interno/conceptual y la definición de la
estructura de almacenamiento.
4. El DBMS ejecuta las operaciones necesarias sobre la base de datos almacenada.
A manera de ejemplo, considere lo que implica la recuperación de una ocurrencia de un registro externo en particular: el DBMS
debe primero recuperar todas las ocurrencias solicitadas de los registros almacenados, luego construir las ocurrencias solicitadas
de los registros conceptuales y después construir las ocurrencias solicitadas de los registros externos. En cada etapa, podrían ser
necesarias conversiones de tipos de datos u otras.
Manipulación de datos: el DBMS debe ser capaz de manejar peticiones para recuperar, actualizar o eliminar datos
existentes en la base de datos o agregar nuevos datos a ésta. En otras palabras, el DBMS debe incluir un componente
procesador DML o compilador DML para tratar con el DML (lenguaje de manipulación de datos).
Las peticiones DML pueden ser "planeadas" o "no planeadas":
a) Una petición planeada es aquella cuya necesidad fue prevista antes del momento de ejecutar la petición.
Probablemente el DBA habrá “preparado” el diseño físico de la base de datos de tal forma que garantice un buen
desempeño para las peticiones planeadas (se sabía de antemano cuáles eran).
b) Una petición no planeada es una consulta ad hoc; es decir, una petición para la que no se previó por adelantado su
necesidad, sino que en vez de ello, surgió sin pensarlo. El diseño físico de la base de datos podría o no ser el
adecuado para la petición específica en consideración.
Las peticiones planeadas son características de las aplicaciones "operacionales" o de "producción", mientras que las
peticiones no planeadas son características de las aplicaciones de "apoyo a la toma de decisiones". Además, peticiones
Optimización y ejecución: las peticiones DML, planeadas o no planeadas, deben ser procesadas por el componente
optimizador de la base de datos, cuya finalidad es determinar una forma eficiente de implementar la petición. Las
peticiones optimizadas se ejecutan entonces bajo el control del administrador en tiempo de ejecución.
Seguridad e integridad de los datos: el DBMS debe vigilar las peticiones del usuario y rechazar todo intento de violar las
restricciones de seguridad y de integridad definidas por el DBA.
Recuperación de datos y concurrencia: el DBMS —o más probablemente, algún otro componente de software
relacionado, denominado comúnmente administrador de transacciones o monitor de procesamiento de transacciones
(monitor PT) — debe imponer ciertos controles de recuperación y concurrencia.
Diccionario de datos: el DBMS debe proporcionar una función de diccionario de datos (contiene datos acerca de los
datos, es decir, metadatos).
Rendimiento: el DBMS debe realizar todas las tareas antes identificadas de la manera más eficiente posible.
Podemos resumir todo lo anterior diciendo que la finalidad general del DBMS consiste en proporcionar una interfaz de usuario
para el sistema de base de datos.
Optimización
Se dice a menudo que los lenguajes relacionales no son de procedimientos, en el sentido de que los usuarios especifican el qué,
no el cómo; es decir, dicen lo que desean sin especificar un procedimiento para obtenerlo. El proceso de "navegar" por los datos
a fin de satisfacer la petición del usuario es realizado automáticamente por el sistema, en vez de ser realizado en forma manual
por el usuario. Por esta razón, en ocasiones se dice que los sistemas relacionales realizan una navegación automática.
Decidir cómo realizar la navegación es responsabilidad de un componente muy importante del DBMS denominado optimizador.
En otras palabras, para cada petición relacional del usuario, es trabajo del optimizador seleccionar una forma eficiente de
implementar esa petición (un ejemplo visto en los ejercicios resueltos es determinar qué producto cartesiano conviene hacer
primero).
Por lo tanto, para repetir: Los usuarios sólo especifican qué datos desean, no cómo obtenerlos; la estrategia de acceso para
obtener los datos es seleccionada por el optimizador ("navegación automática"). Los usuarios y los programas de usuario son
independientes de dichas estrategias de acceso, lo que desde luego es esencial si se pretende lograr la independencia de los
datos.
Tablas:
o Tablas base: Son tablas existentes, es decir, que existen físicamente en el modelo conceptual.
o Tablas derivadas: Son tablas que no existen físicamente, sino que es o que pueden ser obtenidas a partir de tablas base
por medio de alguna operación relacional.
El tiempo de vida de las tablas de una base es corto y no va mas allá del procesamiento de una sentencia SQL o una
conexión al DBMS.
o Vistas: Por lo regular los sistemas relacionales también manejan otro tipo de tablas, denominada vista. Son tablas
virtuales que se utilizan en las diferentes visiones del nivel interno. La definición de la tabla virtual es permanente, pero
los datos no existen físicamente, sino que se generan al momento de la utilización de la misma.
La diferenciación entre variables de relación base y vistas se caracteriza con frecuencia de la siguiente manera:
Las variables de relación base “existen realmente”, en el sentido de que representan datos que en realidad están
almacenados en la base de datos.
En contraste, las vistas “no existen realmente”, sino que sólo proporcionan diferentes formas de ver a “los datos reales”
en un instante dado.
Transacción
Es una unidad de trabajo lógica que comprende varias sentencias SQL que transforman un estado consistente de la base de
datos en otro estado consistente. Es una unidad de trabajo porque todas las operaciones dentro de la transacción se toman
como un todo (no está permitido que se ejecute una sentencia y la otra no). También es una unidad de recuperación porque si
alguna de las operaciones falla se vuelve toda la transacción atrás (se hace todo o no se hace nada).
Propiedades de la transacción - Propiedades ACID (La sigla viene de cada propiedad inglés):
Las transacciones comienzan con un BEGIN TRANSACTION y pueden finalizar con un COMMIT si la transacción terminó
correctamente o, con un ROLLBACK si la transacción debe volverse atrás o deshacerse.
La operación COMMIT indica la finalización de una transacción satisfactoria: que la base de datos está o debería
estar nuevamente en un estado consistente y que todas las actualizaciones efectuadas por esa unidad de
trabajo ahora pueden ser "confirmadas" o definitivas.
Por el contrario, la operación ROLLBACK indica la finalización de una transacción no satisfactoria: que la base de
datos puede estar en un estado inconsistente y que todas las actualizaciones realizadas hasta este momento
por la unidad de trabajo lógica deben ser "revertidas" o deshechas. Esta sentencia puede ejecutarse
automáticamente por el DMS ante cualquier error o ser ejecutado por el programador luego de capturar o
reconocer algún error.
Cabe aclarar que una sentencia SQL por sí sola, es también una transacción.
BEGIN TRANSACTION
UPDATE Cuenta1
IF OK
COMMIT
ELSE
ROLLBACK
INSERT Cuenta2
IF OK
COMMIT
ELSE
ROLLBACK
---------ES LO MISMO---------
BEGIN TRY
BEGIN TRANSACTION
UPDATE Cuenta1
INSERT Cuenta2
COMMIT
END TRY
BEGIN CATCH
ROLLBACK
END CATCH
BEGIN TRANSACTION
UPDATE Cuenta1
COMMIT
¿Cómo se recupera el servidor de base de datos? Todo lo que va haciendo lo guarda en otro lado, transation log:
Activa (o en línea): Formado por las posiciones del T-log que contiene las transacciones viejas en la base de datos
Pasiva (archivada o fuera de línea): Posición del T-log que contiene las transacciones históricas en la base de datos.
Puede limpiarse sola, pero por lo general uno tiene que limpiarla, si no se limpia el T-log pasivo crece y puede llegar un
punto en que sea mas grande que la base de datos.
Marcas:
o “COMMIT POINT” (punto de confirmación): Es una marca que se produce cuando una transacción es confirmada
(ejecuta el commit), corresponde al final de una unidad lógica de trabajo y a un estado de consistencia de la base de
datos. En este punto, la transacción en el T-log pasa de activa a pasiva y los cambios se hacen durables en la base de
datos.
o “CHECK POINT”: Son marcas que se producen a intervalos regulares en el tiempo. En ese punto, se produce la bajada de
los buffers de la memoria principal a memoria secundaria.
o Fallas suaves o locales: escribe la recuperación, se realiza a través de la utilización de archivos especiales que
conforman el denominado transation log (t-log).
o Fallos globales: Cuando se produce una falla global el DBMS ejecuta un proceso de recovery para restablecer la
consistencia del motor de la base de datos, ya que algunas transacciones que finalizaron ok pudieron haber bajado
completamente en memoria secundaria.
El proceso de recovey consta de los siguientes pasos:
1. Posicionarse en el T-log en el último check point previo a la falla y genera dos listas:
Deshacer: Una con las transacciones que debe deshacer, inicialmente cuenta con las transacciones
activas en ese momento.
Rehacer: Contienen las
2. Comienza a procesar el T-log hacia delante; si encuentra un inicio de una transacción (BEGIN TRANSACTION), la
carga en la lista de deshacer. En cambio, si encuentra la finalización de una transacción (COMMIT), la mueve a
la lista tanto de deshacer como de rehacer.
3. Elimina de la lista de deshacer las transacciones que comenzaron a posteriori y nunca terminaron.
4. Deshace las transacciones que quedaron en la lista de deshacer. Y rehace completamente las transacciones
que quedaron en la lista de rehacer.
5. Se habilita el sistema para la realización. Ya que una vez terminada toda la actividad de recuperación, es
entonces (y sólo entonces) que el sistema está listo para aceptar más trabajo.
Hard Crash (caída fuerte o fallas del medio): son caídas en donde hay compromiso en los medios de almacenamiento
secundario y parte de la base de datos se destruye físicamente (ejemplo: se rompieron los discos, falla del controlador
del disco, roce de cabezales, etc.).
Para recuperarse de un Hard Crash implica restaurar las copias de seguridad que se han realizado en otro soporte. Una
vez restaurada, si el medio de almacenamiento en donde estaba el T-Log no fue comprometido se lo utiliza para
ejecutar el proceso de Recovery normal con la salvedad de que se inicie en el último Check Point anterior de la copia de
seguridad.
No hay necesidad de deshacer transacciones que estaban en progreso al momento de la falla, ya que por definición
todas las actualizaciones de esas transacciones ya han sido "deshechas" (de hecho, se perdieron).