Este repositorio contiene material de estudio y referencia correspondiente a la materia Bases de Datos de la Universidad Tecnológica Nacional (UTN). Incluye los principales conceptos teóricos y prácticos sobre la gestión de bases de datos relacionales, como el Modelado Entidad-Relación (MER/DER), Modelo Relacional, Normalización, Álgebra Relacional, SQL, Transacciones, y las estructuras físicas de almacenamiento y optimización.
REDVEN
Contiene scripts y ejemplos prácticos de:- Stored Procedures
- Consultas comunes
- Transacciones
- Vistas
- Funciones SQL
ventas_e
Contiene scripts y ejemplos prácticos de:- Creación de la base de datos y usuarios
- Creación de tablas y relaciones
- Modificación de tablas
- Población de datos inicial
- Actualizaciones y cambios históricos de usuarios y empresas
Una Base de Datos (BDD) es una colección organizada de datos que representan un aspecto del mundo real, denominado minimundo o universo de discurso. Los datos no son aleatorios; deben mantener coherencia y significado, de modo que puedan ser utilizados para consultas, reportes y análisis de manera eficiente.
Un Sistema de Administración de Bases de Datos (DBMS / SGBD) es un conjunto de programas que permite a los usuarios:
- Definición de Datos: Especificar tipos de datos, estructuras, restricciones y relaciones entre los datos.
- Construcción y Almacenamiento: Guardar los datos en un medio persistente controlado por el DBMS, asegurando integridad y consistencia.
- Manipulación: Permite realizar consultas, actualizaciones y generación de informes que reflejan cambios en el minimundo.
- Compartición: Facilita el acceso concurrente a múltiples usuarios y aplicaciones, manteniendo consistencia y aislamiento.
Características del DBMS:
- Autodescriptivo: Contiene datos y metadatos (estructura y restricciones), almacenados en un catálogo interno.
- Abstracción de Datos: La estructura física de almacenamiento es independiente de los programas que acceden a los datos.
- Seguridad y Persistencia: Control de accesos y recuperación ante fallos.
El Modelo Entidad-Relación (MER) es una herramienta conceptual que traduce objetos y relaciones del mundo real en un esquema que puede implementarse en una base de datos.
- Entidad: Objeto distinguible del mundo real, tangible o abstracto, con propiedades únicas (atributos).
- Conjunto de Entidades: Agrupa entidades del mismo tipo que comparten atributos comunes.
- Relación: Asociación entre entidades. Puede contener atributos propios.
- Atributo: Propiedad que describe a una entidad. Su conjunto de valores posibles se denomina dominio.
- Clave primaria: Atributo o conjunto de atributos que identifica de manera única a cada entidad.
- Simples: No se dividen más.
- Compuestos: Formados por subatributos (ej., dirección → calle, número, ciudad).
- Multivalorados: Pueden tener varios valores para la misma entidad.
- Derivados: Calculables a partir de otros atributos (ej., edad a partir de fecha de nacimiento).
- Entidad Débil: No tiene clave propia y depende de otra entidad para su identificación.
- Especialización / Generalización: Define jerarquías de entidades y relaciones entre niveles (cobertura total/parcial, exclusión/superposición).
- Agregación: Permite considerar una relación y sus entidades participantes como una nueva entidad para simplificar el modelado.
-
1:1 (Uno a Uno): Cada entidad de A se asocia con una sola entidad de B.
-
1:N (Uno a Muchos): Cada entidad de A se asocia con varias entidades de B.
-
N:M (Muchos a Muchos): Entidades de A y B pueden asociarse múltiples veces entre sí.
-
Cardinalidad mínima: Indica si la participación es obligatoria (≥1) u opcional (0).
-
Cardinalidad máxima: Indica el número máximo de asociaciones.
El Modelo Relacional traduce el MER a un formato implementable mediante tablas:
- Tuplas (filas): Representan instancias de entidades o relaciones.
- Atributos (columnas): Representan propiedades de las entidades o relaciones.
- Claves: Garantizan unicidad y permiten establecer integridad referencial.
- Clave candidata (CC): Conjunto mínimo de atributos que identifica tuplas.
- Clave primaria (CP): CC elegida para identificar de manera única.
- Clave externa (FK): Atributo que referencia la CP de otra tabla, asegurando integridad referencial.
Garantiza consistencia entre relaciones:
- Restrict (NO ACTION): Evita modificar o borrar una tupla referenciada.
- Cascade: Propaga modificaciones o eliminaciones a las tablas relacionadas.
- Entidades fuertes y débiles → tablas.
- Atributos compuestos → simples.
- Atributos multivalorados → tablas separadas con FK.
- Relaciones 1:1 y 1:N → FK en la tabla correspondiente.
- Relaciones N:M → tabla de intersección con claves primarias de ambas entidades y atributos propios de la relación.
La Normalización reduce redundancia y anomalías en la BDD.
- Inserción: Problemas al añadir un nuevo registro que depende de información existente.
- Borrado: Eliminación de información que no debería perderse.
- Modificación: Necesidad de actualizar el mismo dato en múltiples registros.
- X → Y: Valores de X determinan valores de Y:
- Dependencia parcial: Y depende solo de parte de la clave primaria.
- Dependencia transitiva: Si (X \rightarrow Y) y (Y \rightarrow Z), entonces (X \rightarrow Z).
- 1FN: Sin grupos repetitivos:
- 2FN: Sin dependencias parciales:
- 3FN: Sin dependencias transitivas:
- BCNF: Cada determinante es clave candidata:
- 4FN y 5FN: Manejo avanzado de multivalores y divisiones complejas.
- Desnormalización: Solo por rendimiento justificado.
Permite manipular relaciones para obtener nuevas relaciones:
- Conjuntos: Unión (∪), Intersección (∩), Diferencia (−), Producto Cartesiano (χ).
- Operadores relacionales: Selección (σ), Proyección (π), Renombre (ρ), Producto Natural (⋈), División (÷).
- Manipulación avanzada: Asignación (←), Modificación (δ).
- Seleccionar empleados del departamento 4 con sueldo mayor a 60000:
- Proyectar Nombre, Apellido y DNI:
- Proyectar Nombre y DNI de Beneficiarios:
- Unir ambos conjuntos:
- DDL (Data Definition Language): CREATE, ALTER, DROP.
- DML (Data Manipulation Language): INSERT, SELECT, UPDATE, DELETE, TRUNCATE.
- WHERE: Filtra registros según condiciones.
- LIKE / NOT LIKE: Patrones con
%y_. - IN / NOT IN: Coincidencia con listas.
- DISTINCT / DISTINCTROW: Elimina duplicados.
- GROUP BY: Agrupa registros.
- HAVING: Condición sobre grupos.
- INNER JOIN: Devuelve solo coincidencias.
- LEFT/RIGHT/FULL OUTER JOIN: Incluye filas sin coincidencias.
- NATURAL JOIN / USING: Combina automáticamente por atributos comunes.
- Procedimientos almacenados: Bloques de SQL reutilizables con parámetros.
- Triggers (Disparadores): Ejecutan acciones automáticas ante eventos.
-
Transacción: Unidad lógica de operaciones (BEGIN…COMMIT/ROLLBACK).
-
Propiedades ACID:
- Atomicidad:
$$ T = { O_1, O_2, \dots, O_n } \implies \text{todas o ninguna se ejecuta} $$
- Consistencia:
$$ \forall T, D_{\text{inicial}} \xrightarrow{T} D_{\text{final}}, D_{\text{final}} \text{ cumple todas las restricciones} $$
- Aislamiento (Serialización):
$$ \text{Ejecutar } T_1, T_2, \dots, T_n \text{ concurrentemente } \equiv \text{ alguna ejecución serial de } T_i $$
- Durabilidad:
$$ \text{Si } T \text{ se confirma (COMMIT), los cambios persisten aunque falle el sistema.} $$
-
Problemas comunes: Actualización perdida, Lectura sucia, Análisis inconsistente.
-
Recuperación: Actualización diferida, inmediata y Shadow Paging.
- MyISAM: Optimizado para lectura, subtipos estático/dinámico/comprimido.
- InnoDB / BDB: Soporta ACID, FK y transacciones seguras.
- HEAP: Tablas en memoria, muy rápidas.
- MERGE: Combina tablas MyISAM idénticas.
- Heap: Tabla sin índice clusterizado.
- Clustered Table: Tabla con índice clusterizado que organiza físicamente los datos.
- In-Memory OLTP: Tablas completamente en memoria para alta velocidad de transacciones.
- Temporal Tables: Mantienen un historial automático de cambios para auditorías y recuperación.
- Columnstore: Optimizado para almacenamiento columnar y análisis de grandes volúmenes de datos.
- Mejoran el rendimiento de consultas mediante punteros a registros.
- Tipos: PRIMARY, UNIQUE, FULLTEXT, COLUMNSTORE.
- Comandos útiles: EXPLAIN, OPTIMIZE TABLE.
- Manejo de colisiones y sinónimos.
- Densidad de empaquetamiento (DE): Medida de eficiencia del almacenamiento.
- Granularidad: Tamaño de los elementos (grueso/fino), afecta concurrencia.