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.
Un ejemplo práctico: La necesidad de una base de datos

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.
Solución con una base de datos

Al centralizar la información en una base de datos, se resuelven estos problemas de la siguiente manera:

  1. Unificación de Datos: Todos los profesionales acceden y actualizan la misma fuente de información, eliminando la redundancia.
  2. Consistencia: Cualquier cambio realizado por un usuario se refleja inmediatamente para todos los demás, asegurando que todos trabajan con datos actualizados.
  3. Seguridad y Control de Accesos: Se establecen permisos específicos para cada rol, garantizando que solo los usuarios autorizados puedan modificar ciertos datos.
  4. 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

  1. 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
  1. 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
  1. 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

  1. SELECT: Consultar Datos

Permite extraer información de una o varias tablas.

Sintaxis Básica:

SELECT first_name, country FROM Customers; 
  1. 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'); 
  1. UPDATE: Actualizar Datos

Modifica datos existentes en una tabla.

UPDATE Customers
SET customer_id = 6
WHERE first_name = "Alice";
  1. 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';