3 Fundamentos de Base de Datos
3.1 Conceptos básicos de base de datos
Entendemos como Base de Datos un conjunto de datos estructurado y almacenado de forma sistemática con el objetivo de facilitar su posterior utilización. Son accesibles electrónicamente a través de un sistema informático
Los elementos clave de una base de datos son la estructuración y la sistematicidad, las cuales son responsables de las características que hacen de la base de datos un enfoque superior para la gestión de datos. Estas propiedades permiten organizar la información de manera coherente, segura y eficiente, superando las limitaciones de manejar datos dispersos en múltiples archivos no estructurados.
3.1.1 Los sistemas de gestión de base de datos (SGBD)
Un Sistema de Gestión de Bases de Datos (SGBD) es el software que permite interactuar con la base de datos de manera eficiente y segura. Según Korth y Sudarshan [1], un SGBD ofrece:
- Funciones CRUD
- Crear, Leer, Actualizar y Borrar datos de manera estructurada.
- Seguridad
- Controla el acceso a los datos mediante permisos y roles.
- Integridad de Datos
- Asegura que los datos cumplen con reglas definidas para mantener su consistencia y exactitud.
- Respaldo y Recuperación
- Facilita la creación de copias de seguridad y la recuperación de datos ante fallos.
- Concurrencia
- Permite que múltiples usuarios accedan y modifiquen la base de datos simultáneamente sin conflictos.
Para ilustrar la importancia de una base de datos, consideremos un escenario en el que varios profesionales trabajan en un proyecto de conservación forestal:
- Gestor Forestal
- Utiliza datos sobre especies de árboles, áreas protegidas y modelos de elevación para planificar actividades de reforestación.
- Ingeniero Civil
- Necesita acceder a estos mismos datos para diseñar la instalación de un tendido eléctrico en el territorio.
Si cada profesional maneja sus propios archivos de datos de manera independiente, surgen varios problemas:
- Redundancia
- Múltiples copias de los mismos datos, aumentando el espacio de almacenamiento y el riesgo de inconsistencias.
- Incoherencia
- Actualizaciones realizadas por un usuario no se reflejan en las copias de otros, llevando a decisiones basadas en información desactualizada.
- Dificultad de Coordinación
- Gestionar y sincronizar múltiples versiones de datos puede volverse complejo y propenso a errores.
Al centralizar la información en una base de datos, se resuelven estos problemas de la siguiente manera:
- Unificación de Datos: Todos los profesionales acceden y actualizan la misma fuente de información, eliminando la redundancia.
- Consistencia: Cualquier cambio realizado por un usuario se refleja inmediatamente para todos los demás, asegurando que todos trabajan con datos actualizados.
- Seguridad y Control de Accesos: Se establecen permisos específicos para cada rol, garantizando que solo los usuarios autorizados puedan modificar ciertos datos.
- Eficiencia en el Respaldo: Las bases de datos facilitan la creación de copias de seguridad automáticas, protegiendo la información contra pérdidas o fallos.
3.2 Ventajas de Usar Bases de Datos
Basándonos en el ejemplo anterior y en las referencias de Laudon y Laudon [2], las ventajas de utilizar bases de datos son las siguientes:
3.2.1 Mayor Independencia de los Datos
- Desacoplamiento de Aplicaciones
- Los datos no están ligados a una aplicación específica, lo que permite que múltiples aplicaciones accedan y utilicen la misma información sin conflictos.
- Flexibilidad
- Facilita la integración de nuevas aplicaciones o herramientas sin necesidad de reorganizar la estructura de datos existente.
3.2.2 Mayor Disponibilidad
- Acceso Centralizado
- Los datos están disponibles desde diferentes ubicaciones y dispositivos, permitiendo a los usuarios acceder a la información desde cualquier lugar.
- Soporte para Multiusuario
- Permite que múltiples usuarios accedan y trabajen con los datos simultáneamente sin interferencias.
3.2.3 Mayor Seguridad
- Control de Acceso
- Define quién puede ver, modificar o administrar los datos mediante roles y permisos.
- Protección de Datos
- Facilita la implementación de medidas de seguridad como cifrado, autenticación y auditorías para proteger la información sensible.
- Respaldo y Recuperación
- Provee mecanismos robustos para respaldar datos y recuperarlos en caso de fallos, asegurando la continuidad del negocio.
3.2.4 Menor Redundancia
- Almacenamiento Eficiente
- Almacena cada dato una sola vez, reduciendo el espacio necesario y evitando duplicaciones innecesarias.
- Consistencia de Datos
- Garantiza que todas las referencias a un dato específico son coherentes, eliminando discrepancias entre diferentes copias.
3.2.5 Mejora en la Integridad y Consistencia
- Reglas de Integridad
- Implementa restricciones y reglas que aseguran que los datos almacenados sean válidos y consistentes.
- Transacciones ACID
- Asegura que las operaciones sobre los datos sean atómicas, consistentes, aisladas y duraderas, lo que es crucial para aplicaciones críticas como sistemas financieros.
3.2.6 Optimización en el Rendimiento
- Consultas Eficientes
- Permite realizar consultas complejas y optimizadas para recuperar información de manera rápida.
- Indexación
- Mejora la velocidad de acceso a los datos mediante el uso de índices.
3.3 Tipos de base de datos
Las bases de datos se clasifican principalmente en relacionales y no relacionales (NoSQL), cada una con características y usos específicos. Comprender estas categorías es esencial para seleccionar la solución adecuada según las necesidades de almacenamiento, acceso y manipulación de datos.
3.3.1 Bases de Datos Relacionales
3.3.1.1 Definición y Características
Las bases de datos relacionales organizan la información en tablas (relaciones) compuestas por filas (tuplas) y columnas (atributos). Este modelo, propuesto por Edgar F. Codd en 1970, se basa en el álgebra relacional y utiliza SQL (Structured Query Language) como lenguaje estándar para gestionar los datos.
3.3.1.2 Características Principales
- Estructura Tabular
-
Los datos se almacenan en tablas con campos definidos. Por ejemplo, una tabla llamada Clientes podría tener columnas como
ID_Cliente, Nombre y Dirección:
| ID_Cliente | Nombre | Dirección |
|---|---|---|
| 1 | Carla Díaz | Av. Principal #123 |
| 2 | José Lima | Calle 8 #32 |
| 3 | Marta Ríos | Paseo Central #45 |
- Claves Primarias y Foráneas
Clave Primaria (PK): Identifica de manera única cada fila en una tabla (ej., ID_Cliente). Clave Foránea (FK): Vincula una tabla con otra, garantizando la integridad referencial. Por ejemplo, en una tabla Pedidos se podría referir al cliente mediante la columna ID_Cliente (FK), que apunta a la columna ID_Cliente en la tabla Clientes.
| ID_Pedido | ID_Cliente (FK) | Fecha | Monto |
|---|---|---|---|
| 101 | 1 | 2025-01-17 | 150.000 |
| 102 | 1 | 2025-01-18 | 70.000 |
| 103 | 2 | 2025-01-19 | 200.000 |
- Propiedades ACID
Las transacciones en una base de datos son ejecutadas bajo un conjunto de características conocidas como ACID, que garantizan la fiabilidad y consistencia de las operaciones.
- Atomicidad
- Una transacción se ejecuta completamente o no se ejecuta en absoluto. Si ocurre un fallo durante la transacción, los cambios realizados hasta ese punto se deshacen, dejando la base de datos en su estado original.
- Consistencia
- Las transacciones llevan la base de datos de un estado válido a otro estado válido, manteniendo las reglas de integridad establecidas.
- Aislamiento (Isolation)
- Las operaciones de una transacción no son visibles para otras transacciones hasta que se hayan completado, lo que asegura que las transacciones concurrentes no interfieran entre sí.
- Durabilidad
- Una vez que una transacción se confirma (commit), sus cambios permanecen en la base de datos incluso si hay una falla en el sistema.
3.3.1.3 Casos de Uso Típicos
- Sistemas Bancarios
- Requieren una alta integridad en las transacciones para garantizar la precisión y seguridad de los datos financieros.
- Aplicaciones de Comercio Electrónico
- Utilizadas para gestionar inventarios, procesar pedidos y almacenar información de clientes de manera eficiente.
- Sistemas de Gestión Empresarial
- Incluyen soluciones como ERP (Enterprise Resource Planning) para la planificación de recursos y CRM (Customer Relationship Management) para la gestión de relaciones con los clientes.
3.3.2 Bases de Datos No Relacionales (NoSQL)
- Definición y Características
- Las bases de datos no relacionales (NoSQL) surgieron para abordar las limitaciones de las bases de datos relacionales en términos de escalabilidad y flexibilidad. No siguen un modelo tabular y permiten una mayor diversidad en la estructura de los datos.
3.3.2.1 Tipos Principales de NoSQL
- Basadas en Documentos
- Almacenan datos en formato de documentos (como JSON o BSON), permitiendo estructuras flexibles. Ejemplos: MongoDB, CouchDB.
- Clave-Valor
- Cada elemento se almacena como un par clave y valor, similar a un diccionario. Ejemplos: Redis, Riak.
- Column Family
- Organizan los datos en columnas en lugar de filas, optimizando el almacenamiento y la consulta de grandes volúmenes de datos. Ejemplos: Apache Cassandra, HBase.
3.3.2.2 Casos de Uso Típicos
- Redes Sociales
- Manejo de grandes volúmenes de datos y relaciones complejas entre usuarios.
- Aplicaciones en Tiempo Real
- Juegos en línea, chats y sistemas de monitoreo que requieren respuestas rápidas.
- Sistemas de Recomendación
- Análisis de relaciones entre productos y usuarios para ofrecer recomendaciones personalizadas.
- Internet de las Cosas (IoT)
- Gestión de grandes volúmenes de datos generados por sensores en tiempo real.
3.4 Introducción a SQL
3.4.1 ¿Qué es SQL?
SQL (Structured Query Language) es un lenguaje de programación especializado en el manejo de bases de datos relacionales.
- Permite
- Definir la estructura de la base de datos (creación y modificación de tablas). Insertar, consultar, modificar y eliminar datos (DML, Data Manipulation Language). Administrar aspectos de seguridad y acceso a la información.
3.4.2 Aspectos básicos de la sintaxis de SQL
- Palabras clave en mayúsculas
- Es una buena práctica escribir las palabras reservadas de SQL en mayúsculas para mejorar la legibilidad.
SELECT nombre, ciudad FROM clientes;
- Punto y coma (;)
- Se utiliza para finalizar una sentencia SQL.
- Indentación y espacios
- Facilitan la lectura y comprensión de las consultas.
3.4.3 Componentes Principales de DML
- SELECT: Consultar Datos
Permite extraer información de una o varias tablas.
Sintaxis Básica:
SELECT first_name, country FROM Customers; - INSERT: Insertar Datos
Añade nuevos registros a una tabla.
Sintaxis Básica:
INSERT INTO Customers (first_name, last_name, age, country)
VALUES ('Alice', 'Brown', 27, 'Canada'); - UPDATE: Actualizar Datos
Modifica datos existentes en una tabla.
UPDATE Customers
SET customer_id = 6
WHERE first_name = "Alice";- DELETE: Eliminar Datos
Elimina registros de una tabla.
Sintaxis Básica:
DELETE FROM Customers
WHERE first_name = 'Alice' AND last_name = 'Brown';3.4.4 Ejercicios
A continuación, se proponen 10 ejercicios para practicar consultas SQL utilizando las tablas disponibles en Programiz SQL Compiler. Cada ejercicio está diseñado para reforzar el uso de los componentes principales del DML y otras cláusulas básicas.
1. Obtener todos los datos de la tabla Customers
Muestra toda la información de los clientes registrados en la tabla Customers.
2. Mostrar los nombres y apellidos de todos los clientes
Selecciona únicamente las columnas first_name y last_name de la tabla Customers.
3. Filtrar clientes de un país específico
Obtén los nombres de los clientes que viven en “USA”.
4. Filtrar clientes con varias condiciones
Encuentra a los clientes que tienen menos de 30 años y viven en “UK”.
5. Ordenar clientes por edad
Muestra todos los clientes ordenados por su edad de forma ascendente.
6. Limitar el número de resultados
Obtén los tres primeros registros de la tabla Customers.
7. Buscar nombres que comiencen con “J”
Selecciona los nombres y apellidos de los clientes cuyo nombre comienza con la letra “J”.
8. Consultar datos de los pedidos realizados
Muestra todos los items y sus montos de la tabla Orders.
9. Combinar datos entre tablas
Obtén los nombres de los clientes y los productos que han pedido, combinando las tablas Customers y Orders.
10. Filtrar pedidos por clientes de “UK”
Muestra los nombres de los clientes que viven en “UK” y los productos que han solicitado.
3.4.5 Respuestas
1. Obtener todos los datos de la tabla Customers
SELECT *
FROM Customers;2. Mostrar los nombres y apellidos de todos los clientes
SELECT first_name, last_name
FROM Customers;3. Filtrar clientes de un país específico
SELECT first_name, country
FROM Customers
WHERE country = 'USA';4. Filtrar clientes con varias condiciones
SELECT first_name, age, country
FROM Customers
WHERE age < 30 AND country = 'UK';5. Ordenar clientes por edad
SELECT first_name, age
FROM Customers
ORDER BY age ASC;6. Limitar el número de resultados
SELECT *
FROM Customers
LIMIT 3;7. Buscar nombres que comiencen con “J”
SELECT first_name, last_name
FROM Customers
WHERE first_name LIKE 'J%';8. Consultar datos de los pedidos realizados
SELECT item, amount
FROM Orders;9. Combinar datos entre tablas
SELECT Customers.first_name, Orders.item
FROM Customers
JOIN Orders ON Customers.customer_id = Orders.customer_id;10. Filtrar pedidos por clientes de “UK”
SELECT Customers.first_name, Orders.item
FROM Customers
JOIN Orders ON Customers.customer_id = Orders.customer_id
WHERE Customers.country = 'UK';