Introducción a las Bases de Datos
Abstract
Presentación para un curso de introducción a las bases de datos relacionales
Full text
Fundamentos de bases de datos Jose Emilio Labra Gayo Universidad de Oviedo
Más información Material del curso: https://github.com/cursosLabra/introBBDD Sobre el profesor: https://labra.weso.es/
•Introducción a las bases de datos •Importancia y tecnología en negocios •Tipos de bases de datos y sistemas de gestión de bases de datos •Introducción a SQL y su sintaxis básica •Lenguaje SQL •Diseño conceptual de bases de datos relacionales •Selección y proyección •Uniones •Funciones agregadas y agrupamiento de datos •Subconsultas •Transacciones •Optimización de consultas y técnicas de rendimiento •Manejo de errores y excepciones Contenidos
•Introducción a las bases de datos •Importancia y tecnología en negocios •Tipos de bases de datos y sistemas de gestión de bases de datos •Introducción a SQL y su sintaxis básica •Lenguaje SQL •Diseño conceptual de bases de datos relacionales •Selección y proyección •Uniones •Funciones agregadas y agrupamiento de datos •Subconsultas •Transacciones •Optimización de consultas y técnicas de rendimiento •Manejo de errores y excepciones Contenidos
Importancia de las Bases de datos Bases de datos = corazón de la era digital Todo lo que usamos depende de Bases de Datos Desde redes sociales, hospitales, sistemas financieros, … Prácticamente todas las aplicaciones modernas se apoyan en Bases de Datos En mundo empresarial Permiten la toma de decisiones Análisis de grandes volúmenes de información Esenciales para IA y aprendizaje automático Aseguran consistencia, integridad y disponibilidad de la información Están en el núcleo de todos los servicios Sin Bases de datos, no hay información Sin información, no hay decisiones
Importancia y tecnología en negocios Función esencial de la informática = almacenar datos 2 problemas ¿Cómo representar la información? ¿Cómo almacenar esas representaciones? "Los datos son algo precioso, y durarán más que los propios sistemas" Tim Berners-Lee, Inventor de la Web
Personas vs Máquinas Programadas para ciertas tareas Previsibles (sin errores*) Tareas repetitivas sin problema Dificultad para entender el contexto Creatividad, imaginación Imprevisibles (cometemos errores) Nos cansamos ante tareas repetitivas Comprensión basada en contexto *cuando están bien programadas 100000001 010010011 001001001 001001010
Representación de información En ordenadores actuales, todo son 0s y 1s Distintos tipos de información Valores booleanos: 0 (falso), 1 (true) Números: codificaciones de tamaño fijo ó variable Caracteres: Codificaciones como ASCII o Unicode (https://unicode.org/) Cadenas de texto Secuencias de caracteres Registros y estructuras de datos Valores compuestos. Ejemplo: coordenadas, tablas, árboles, grafos, ... Valores binarios Secuencias de 0's y 1's
Tamaños de datos Unidad Abrev. Tamaño En bytes Bit Byte B 8 bits Kilobyte KB 1024 B ≈ 1,000 bytes Megabyte MB 1024 KB ≈ 1,000,000 bytes Gigabyte GB 1024 MB ≈ 1,000,000,000 bytes Terabyte TB 1024 GB ≈ 1,000,000,000,000 bytes Petabyte PB 1024 TB ≈ 1,000,000,000,000,000 bytes Exabyte EB 1024 PB ≈ 1,000,000,000,000,000,000 bytes Zettabyte ZB 1024 EB ≈ 1,000,000,000,000,000,000,000 bytes Yottabyte YB 1024 ZB ≈ 1,000,000,000,000,000,000,000,000 bytes Ronnabyte RB 1024 YB ≈ 1,000,000,000,000,000,000,000,000,000 bytes The Zettabyte era: https://en.wikipedia.org/wiki/Zettabyte_Era
Aplicaciones de bases de datos Las bases de datos son una parte fundamental de cualquier empresa Cada vez más, las empresas se convierten en empresas de datos En cualquier dominio Banca, seguros, ventas, siderurgia, etc. Tecnológicas: eBay, Facebook, Google, Amazon, ... Algunos datos El negocio de SGBD = 89 mil millones de $ en 2024 Se espera que alcance los 248 mil millones en 2034 [1] [1] https://www.expertmarketresearch.com/reports/database-management-system-market
Actividades profesionales relacionadas Gobierno de datos Ciclo de vida, seguridad, acceso, etc. Ingeniería de datos Representación de datos, infraestructura, rendimiento, costes Ciencia de datos Análisis de datos, extracción de información/conocimiento Ingeniería del software Aplicaciones que trabajan con los datos, integración, explotación, etc. Administración de base de datos Mantenimiento Bases de datos, seguridad, réplicas, backups, etc.
Actividades relacionadas Migración de datos Cambiar los esquemas de las BBDD Cambiar el SGBD BD1BD2 BD BD BD ETL Extracción - Transformación - Carga (Load) Análisis y minería de datos Extraer información a partir de datos En ocasiones se extrae de los logs de las BBDD Auditoría de datos Certificación Ingestión y conservación de datos Procesos ETL (Extracción - Transformación - Carga)
¿Hojas de cálculo como alternativa a BBDD? Hojas de cálculo Modelo de tabla (celdas) Valores de celdas pueden calcularse a partir de otras Pensadas para acceso interactivo Proceso automatizado más engorroso Tamaño/capacidad limitado Control de usuarios limitado Acceso concurrente limitado No hay soporte para recuperación Bases de datos Varios modelos (tablas...) Datos estáticos (manipulación mediante programas) Pensadas para acceso batch o mediante software Proceso interactivo más engorroso Almacenamiento grandes cantidades de datos Control de usuarios formar parte de SGBD Soporte para concurrencia y transacciones Soporte para recuperación (backups) y similares
•Introducción a las bases de datos •Importancia y tecnología en negocios •Tipos de bases de datos y sistemas de gestión de bases de datos •Introducción a SQL y su sintaxis básica •Lenguaje SQL •Diseño conceptual de bases de datos relacionales •Selección y proyección •Uniones •Funciones agregadas y agrupamiento de datos •Subconsultas •Transacciones •Optimización de consultas y técnicas de rendimiento •Manejo de errores y excepciones Contenidos
Evolución de bases de datos Los primeros modelos eran jerárquicos y en red Modelo relacional: Desde mediados 70 SQL no es el único modelo: modelos NOSQL Reciente popularidad de bases de datos vectoriales Modelo Jerárquico IBM Modelo red CODASYL Modelo Relacional Lenguaje SQL BBDD documentales BBDD grafo: property graphs, ... 1960 1970 1980 1990 2000 2010 2020 BBDD XML NOSQL BBDD Objetos BBDD clave-valor SPARQL/RDF triple stores RDF BBDD vectoriales
Clasificación tradicional en 2 tipos Datos operacionales Utilizados para facilitar la operación de la empresa Ejemplos: datos de usuarios, inventario, transacciones, etc. Son necesarios para que la empresa pueda funcionar Operaciones habituales: Altas, Bajas, Modificaciones A veces se utiliza el término CRUD (Create Retrieve Update Delete) Se asocia con OLTP (OnLine Transaction Processing) y SGBD Datos analíticos Utilizados por científicos de datos y analistas de negocios Objetivo: predicciones, tendencias, inteligencia de negocio, ... No suele ser transaccional ni relacional Los datos no son críticos para el funcionamiento de día a día Se asocia con OLAP (OnLine Analytical Processing) y data warehouses
Clasificación de Bases de datos según modelo Relacionales (SQL) Modelo basado en tablas, claves primarias y secundarias Ofrecen soporte para lenguaje SQL Ejemplos: MySQL, SQL Server, SQLite, Oracle, … NoSQL Ideales para datos no estructurados en tablas Pueden escalar horizontalmente (clústeres de servidores) Varios modelos: Documentales, clave-valor, grafos, etc. Ejemplos: MongoDB, CouchDB, Neo4J, … Vectoriales Almacenan vectores numéricos (representaciones texto, imágenes, vídeos,…) Aplicaciones para Búsqueda semántica, similaridad, IA generativa Aplicaciones con embeddings Ejemplo: Pinecone, Qdrant, Milvus, …
Clasificación según dónde están los datos On Premises: - Instaladas en servidores propios o de la organización - La empresa controla infraestructura, seguridad, copias de respaldo - Requieren mantenimiento técnico y hardware - Ejemplos: Oracle, SQL Server, MySQL, PostgreSQL, SQLite (en dispositivo) En la nube: - Se accede por internet, proveedor gestiona infraestructura y mantenimiento - Pago por uso (Database as a Service) - Escalabilidad rápida y flexible - Ejemplos: Amazon, Google Cloud, Microsoft Azure
Algunos datos sobre cuotas de mercado Mercado global estimado en unos 78 mil millones de dólares en 2024 - BBDD relacionales ocupan 52% del mercado - BBDD NoSQL muestran la mayor tasa de crecimiento (15-16%) - BBDD como servicio pasó de 23 mil millones en 2023 y se espera que alcance los 104 mil millones en 2032 Fuente: https://www.emergenresearch.com/industry-report/dbms-market
Ejercicio: Descargar SQLite localmente y crear una base de datos Arrancar Jupyter notebook y ejecutar desde Google Colab https://github.com/cursosLabra/introBBDD/
Sintaxis básica de SQL SQL intenta alcanzar un compromiso entre: Lenguaje legible y natural para el ser humano Lenguaje no ambiguo y procesable por las máquinas Sentencias tipo: SELECT, INSERT, etc. Palabras clave no distinguen minúsculas/mayúsculas Cadenas de texto entre comillas Cada instrucción finaliza en punto y coma (;) Trabaja con conjuntos de datos (no registro a registro) Ejemplo de comando: SELECT Apellidos, Nombre FROM Alumnos WHERE Nombre = 'Ana’ AND Nota >= 9;
•Introducción a las bases de datos •Importancia y tecnología en negocios •Tipos de bases de datos y sistemas de gestión de bases de datos •Introducción a SQL y su sintaxis básica •Lenguaje SQL •Diseño conceptual de bases de datos relacionales •Selección y proyección •Uniones •Funciones agregadas y agrupamiento de datos •Subconsultas •Transacciones •Optimización de consultas y técnicas de rendimiento •Manejo de errores y excepciones Contenidos
Diseño conceptual de bases de datos relacionales Diagramas Entidad-Relación y modelo relacional SQL como lenguaje de definición de datos (DDL) Creación de tablas SQL como lenguaje de manipulación de datos (DML) Inserción, modificación y borrado de datos SQL como lenguaje de consulta (DQL) Selección de valores
Diagramas entidad-relación Propuestos por Peter P. Chen en 1970 Entidad: Cualquier objeto o concepto Se representan por cajas Relación: Correspondencia o asociación entre entidades Se representan con un rombo Grado: número de entidades que relacionan Empleado Proyecto trabajaEn Peter Chen Fuente: https://www.csc.lsu.edu/~chen/
Grados de una relación Grado = número de entidades que intervienen en una relación Relación reflexiva: grado 1 Relación binaria: grado 2 Relación ternaria: grado 3 Auditor Empresa audita Expediente Empleado Proyecto trabajaEn Empleado tieneJefe
Cardinalidad Anotar el número de elementos mínimo y máximo que intervienen (1,1) = exactamente 1 (0,1) = opcional (0,n) = 0 ó más (1,n) = 1 ó más (al menos 1) (m,n) = muchos a muchos Empleado Proyecto trabajaEn (m,n)
Atributos Atributo = característica o propiedad de una entidad o relación Pueden representarse mediante elipses Empleado Proyecto trabajaEn Nombre Dirección Fecha
Dominios Un dominio representa conjunto de valores permitidos para un atributo Por ejemplo: Un número entero, una fecha, una cadena de texto, un valor de una lista, ... Dominio atómico: cuando es un único valor Ejemplo: El dni de una persona es un único valor El número de teléfono podría ser atómico si cada persona tiene un único número No siempre se cumple en la práctica
Notación UML para entidades Empleado Nombre: Texto Dirección: Texto FechaNacimiento: Fecha UML = Unified Modelling Language Lenguaje de modelado utilizado para diseñar sistemas Varios tipos de diagramas Los diagramas de clases pueden utilizarse para representar relaciones Proyecto Nombre: Texto Inicio: Fecha Fin: Fecha trabajaEn 1..* 0..3
Diseño de bases de datos relacionales Definir esquemas de Bases de datos Concepto de normalización: Normalización: Dividir en varias tablas para evitar duplicidades Denormalización: Juntar en una tabla para mejorar rendimiento Solución de compromiso: Mantenimiento vs rendimiento
Diseño conceptual de bases de datos relacionales Diagramas Entidad-Relación y modelo relacional SQL como lenguaje de definición de datos (DDL) Creación de tablas SQL como lenguaje de manipulación de datos (DML) Inserción, modificación y borrado de datos SQL como lenguaje de consulta (DQL) Selección de valores
Creación de tablas CREATE permite crear tablas CREATE TABLE NombreTabla (col1 Tipo1,...colN TipoN) Ejemplo: CREATE TABLE alumnos ( Id TEXT, Nombre TEXT, Apellidos TEXT, FechaNacimiento Date, Tlfno TEXT ) Id Nombre Apellidos FechaNacimiento Tlfno NOTA: SQLLite añade automáticamente una columna denominada ROWID
Restricciones en tablas Es posible añadir restricciones en los valores de las tablas CREATE TABLE Contactos ( id integer primary key, nombre text not null collate nocase, email text not null unique, tlfno text not null default 'UNKNOWN', edad integer check (edad >= 0 and edad <= 120), unique (nombre, tlfno) );
Definiciones de claves CREATE TABLE Alumnos ( Id INTEGER PRIMARY KEY, Nombre TEXT NOT NULL, Apellidos TEXT NOT NULL, FechaNacimiento DATE NOT NULL ); CREATE TABLE Cursos ( Id INTEGER PRIMARY KEY, Nombre TEXT NOT NULL, Descripcion TEXT ); CREATE TABLE Notas ( Id INTEGER PRIMARY KEY, AlumnoId INTEGER, CursoId INTEGER, Nota REAL CHECK(Nota >= 0 AND Nota <= 10), FOREIGN KEY (AlumnoId) REFERENCES Alumnos(Id), FOREIGN KEY (CursoId) REFERENCES Cursos(Id) );
Modificación de tablas (ALTER) Permite modificar una tabla Cambiar de nombre: ALTER TABLE alumnos RENAME TO Estudiantes; Añadir/renombrar/borrar columnas ALTER TABLE Estudiantes ADD COLUMN Email Text; ALTER TABLE Estudiantes RENAME COLUMN Email TO Correo; ALTER TABLE Estudiantes DROP COLUMN Correo;
Eliminación de tablas (DROP) Borrar una tabla Ejemplo: DROP TABLE Estudiantes;
Diseño conceptual de bases de datos relacionales Diagramas Entidad-Relación y modelo relacional SQL como lenguaje de definición de datos (DDL) Creación de tablas SQL como lenguaje de manipulación de datos (DML) Inserción, modificación y borrado de datos SQL como lenguaje de consulta (DQL) Selección de valores
Inserción de registros INSERT permite añadir registros a una tabla INSERT INTO nombreTabla (nombreCol [, ...]) VALUES (nuevoValor [, ...]); Ejemplo: INSERT INTO alumnos (Id, Nombre, Apellidos, FechaNacimiento) VALUES ("uo234", "Jose", "Torres", "29/10/1992"), ("uo512", "Ana", "Cardo", "25/11/1987"), ("uo545", "Ana", "Pascual", "30/01/1995");
Borrado de registros DELETE permite borrar registros de una tabla DELETE FROM table_name WHERE expression Ejemplo: DELETE FROM alumnos WHERE FechaNacimiento = "29/10/1993";
•Introducción a las bases de datos •Importancia y tecnología en negocios •Tipos de bases de datos y sistemas de gestión de bases de datos •Introducción a SQL y su sintaxis básica •Lenguaje SQL •Diseño conceptual de bases de datos relacionales •Selección y proyección •Uniones •Funciones agregadas y agrupamiento de datos •Subconsultas •Transacciones •Optimización de consultas y técnicas de rendimiento •Manejo de errores y excepciones Contenidos
Proyección En la cabecera se indica qué columnas se muestran en resultado La cabecera puede contener: - Una lista de columnas - * para seleccionar todas las columnas - Expresiones A cada columna se puede asociar un alias mediante AS Se puede usar SELECT DISTINCT para eliminar duplicados SELECT Apellidos, Nombre FROM Alumnos SELECT * FROM Alumnos SELECT FechaNacimiento AS Nacimiento, Nombre || ' ' || Apellidos AS NombreCompleto FROM Alumnos SELECT DISTINCT Nombre FROM alumnos
Selección (WHERE) Define una condición que permite filtrar registros en tabla de resultados Se proporciona una expresión que se evalúa para cada fila Las filas cuyo resultado sea falso o NULL son descartadas Expresiones que pueden incluirse: Expresiones lógicas encadenadas mediante AND, OR, NOT Expresiones de comparación: <, >, >=, >=, =, != Operadores aritméticos: +, - *, /, % Otras operaciones: ISNULL, NOT NULL, IS DISTINCT FROM, CASE, IN, NOT IN, ... Funciones: https://www.sqlite.org/lang_corefunc.html
Selección (WHERE) Ejemplos: SELECT Nombre, Apellidos, FechaNacimiento FROM alumnos WHERE FechaNacimiento > '2000-01-01' OR FechaNacimiento < '1990-31-12' SELECT Nombre, Apellidos, FechaNacimiento FROM alumnos WHERE length(Apellidos) > 6
•Introducción a las bases de datos •Importancia y tecnología en negocios •Tipos de bases de datos y sistemas de gestión de bases de datos •Introducción a SQL y su sintaxis básica •Lenguaje SQL •Diseño conceptual de bases de datos relacionales •Selección y proyección •Uniones •Funciones agregadas y agrupamiento de datos •Subconsultas •Transacciones •Optimización de consultas y técnicas de rendimiento •Manejo de errores y excepciones Contenidos
FROM Permite identificar las tablas desde las que se obtendrán los valores Puede contener: - Un nombre de tabla - Un Alias para el nombre de la tabla - Varias tablas mediante JOIN - 3 tipos de JOIN: Interno, Externo https://www.youtube.com/shorts/RiCsbGKKymU Explicando los joins con piezas Lego:
CROSS JOIN (unión cruzada/producto cartesiano) Id Nombre Id Nota uo234 Jose uo234 7.8 uo512 Ana uo234 7.8 uo545 Luis uo234 7.8 uo234 Jose uo545 10 uo512 Ana uo545 10 uo545 Luis uo545 10 uo234 Jose uo666 3 uo512 Ana uo666 3 uo545 Luis uo666 3 Id Nombre uo234 Jose uo512 Ana uo545 Luis Id Nota uo234 7.8 uo545 10 uo666 3 X X X X X X X X X Nombres Valores SELECT * FROM Nombres CROSS JOIN Valores;
SELECT Nombres.Id, Nombre, Nota FROM Nombres INNER JOIN Valores ON Nombres.Id = Valores.Id ; INNER JOIN (Unión natural) Id Nombre Nota uo234 Jose 7.8 uo545 Luis 10 Id Nombre uo234 Jose uo512 Ana uo545 Luis Id Nota uo234 7.8 uo545 10 uo666 3 X X Nombres Valores
SELECT Nombres.Id, Nombre, Nota FROM Nombres LEFT OUTER JOIN Valores ON Nombres.Id = Valores.Id ; OUTER JOIN (Unión externa) Id Nombre Nota uo234 Jose 7.8 uo545 Luis 10 uo512 Ana Null Id Nombre uo234 Jose uo512 Ana uo545 Luis Id Nota uo234 7.8 uo545 10 uo666 3 X X Nombres Valores
•Introducción a las bases de datos •Importancia y tecnología en negocios •Tipos de bases de datos y sistemas de gestión de bases de datos •Introducción a SQL y su sintaxis básica •Lenguaje SQL •Diseño conceptual de bases de datos relacionales •Selección y proyección •Uniones •Funciones agregadas y agrupamiento de datos •Subconsultas •Transacciones •Optimización de consultas y técnicas de rendimiento •Manejo de errores y excepciones Contenidos
Transacciones Transacción = bloque de operaciones que se ejecutan como una unidad atómica Es decir: O se ejecutan todas, o no se ejecuta ninguna Propiedades ACID - Atomicidad: todas las operaciones se aplican, o ninguna -Consistencia: la base datos pasa de un estado válido a un estado válido - Aislamiento: cambios intermedios no afectan a otras operaciones concurrentes -Durabilidad: los cambios confirmados se mantienen incluso si hay un fallo de energía
Comandos de transacciones BEGIN [Transaction] COMMIT ROLLBACK CREATE TABLE alumnos (nombre TEXT,nota REAL); INSERT INTO alumnos VALUES ('Luis', 6); BEGIN TRANSACTION; INSERT INTO alumnos VALUES ('Juan', 7.5); INSERT INTO alumnos VALUES ('Mara', 12); ROLLBACK; Nom bre Nota Luis 6
•Introducción a las bases de datos •Importancia y tecnología en negocios •Tipos de bases de datos y sistemas de gestión de bases de datos •Introducción a SQL y su sintaxis básica •Lenguaje SQL •Diseño conceptual de bases de datos relacionales •Selección y proyección •Uniones •Funciones agregadas y agrupamiento de datos •Subconsultas •Transacciones •Optimización de consultas y técnicas de rendimiento •Manejo de errores y excepciones Contenidos
Optimización de consultas y rendimiento Normalización de bases de datos Creación de índices Planes de ejecución Comando EXPLAIN Reconstrucción de la base de datos VACUUM Actualización de estadísticas
•Introducción a las bases de datos •Importancia y tecnología en negocios •Tipos de bases de datos y sistemas de gestión de bases de datos •Introducción a SQL y su sintaxis básica •Lenguaje SQL •Diseño conceptual de bases de datos relacionales •Selección y proyección •Uniones •Funciones agregadas y agrupamiento de datos •Subconsultas •Transacciones •Optimización de consultas y técnicas de rendimiento •Manejo de errores y excepciones Contenidos
Manejo de errores y excepciones Violaciones de restricciones Uso de disparadores (triggers) Tabla con log de errores mediante triggers Copias de seguridad
Más allá de SQL Otros modelos de datos
Bases de datos de grafo RDF SPARQL y RDF Triple Stores Wikidata
RDF y Web Semántica RDF surgió en 1998 Marco para describir recursos Se basa en tripletas: Sujeto - Predicado - Objeto Objetivo: Web Semántica URIs para predicados
SPARQL Lenguaje de consultas para RDF Similar a SQL, pero para RDF Recomendación W3C