Ir al contenido principal

BD Relacionales

¿Qué es una base de datos relacional?

Una base de datos relacional es un sistema que organiza la información en tablas, y que establece las relaciones entre esas tablas mediante claves. Es el modelo más usado del mundo, y detrás de casi cualquier sistema que maneje datos —desde el listado de alumnos de una escuela hasta la cuenta de un banco— hay una base de datos relacional.

Su idea central es simple y poderosa: cada tabla guarda datos de una sola cosa, y las tablas se conectan entre sí por referencias en lugar de repetir la información. En lugar de anotar en cada venta el nombre y el teléfono del cliente, se anota un número que apunta a la tabla de clientes, donde ese dato vive una sola vez.

Esa forma de organizar la información tiene un nombre: se dice que los datos están normalizados. Es la base de todo lo que sigue, y tiene su propio tema.

Tablas, filas y columnas

La tabla es la estructura básica del modelo relacional, y se parece bastante a una planilla de cálculo. Tiene dos dimensiones y un nombre único dentro de la base de datos:

  • Las columnas —o campos— son los atributos: describen qué se guarda. Cada una tiene un nombre y un tipo de dato.
  • Las filas —o registros— son los elementos: cada fila es uno de los elementos de los que habla la tabla.
  • Las celdas son las intersecciones: contienen un valor concreto, de una fila y una columna.
Tabla: CLIENTES NOMBRE TELEFONO CIUDAD
1Ana Gómez555-1234La Plata
2Luis Pérez555-9876Berisso
3María Sosa555-4321Ensenada

En esa tabla hay tres columnas (además del identificador) y tres filas. Cada fila es un cliente; cada columna, un dato de todos los clientes. La estructura no cambia cuando se agregan filas: siempre son las mismas columnas, y eso es justamente lo que permite consultarlas de forma ordenada.

Las claves: cómo se relacionan las tablas

Si cada tabla guarda datos de una sola cosa, hace falta un mecanismo que las conecte. Ese mecanismo son las claves, y hay dos que hay que distinguir bien.

Clave primaria

La clave primaria es el campo que identifica de manera única cada fila de la tabla. Es lo que permite decir "este cliente" sin ambigüedad.

Sus dos condiciones no se negocian: no se puede repetir y no puede quedar vacía. Si se pudiera repetir, dos filas distintas serían indistinguibles; si pudiera estar vacía, habría filas imposibles de identificar.

Puede ser un número que el sistema genera solo —lo más común— o un dato que ya existe en la realidad, como el número de documento. En general conviene el número generado: los datos reales cambian, se cargan con errores de tipeo o llegan incompletos.

Clave foránea

La clave foránea es un campo que hace referencia a la clave primaria de otra tabla. Es lo que convierte dos tablas sueltas en un sistema relacionado.

Tabla: PRESTAMOS LIBRO (foránea) CLIENTE (foránea) FECHA
110123/3
210134/3

En esa tabla, LIBRO y CLIENTE no guardan nombres: guardan números que apuntan a la tabla de libros y a la de clientes. De ese modo, el nombre del libro está escrito una sola vez, en su propia tabla. Y si el libro se llamaba mal, se corrige en un solo lugar.

Integridad referencial

La integridad referencial es la garantía de que toda referencia apunta a algo que existe. Dicho de otra forma: no puede haber un préstamo que mencione el libro 999 si ese libro no está en la tabla de libros.

No es una recomendación: es una regla que el gestor hace cumplir. Si se intenta guardar una fila que apunta a un valor inexistente, la operación se rechaza con un error.

Qué protege

  • Al cargar. Impide escribir una referencia a algo que no existe. Si el cliente 7 no está cargado, no se le puede asignar un préstamo.
  • Al borrar. Si se intenta borrar un cliente que tiene préstamos, el gestor lo impide —o exige decidir qué hacer con esos préstamos— en lugar de dejar registros apuntando al vacío.

El lenguaje SQL

Las bases de datos relacionales se manejan con SQL (Structured Query Language, "lenguaje de consulta estructurado"). Es un lenguaje que se escribe con frases parecidas al inglés, y sus instrucciones se agrupan en cuatro familias según lo que hacen.

Familia Para qué Instrucciones
Definición (DDL) Crear y modificar la estructura: tablas, campos, claves. CREATE, ALTER, DROP
Manipulación (DML) Trabajar con los datos: consultar, insertar, modificar y borrar. SELECT, INSERT, UPDATE, DELETE
Control (DCL) Administrar quién puede hacer qué. GRANT, REVOKE
Transacciones (TCL) Agrupar operaciones para que se apliquen todas juntas o ninguna. COMMIT, ROLLBACK

Una consulta típica se lee casi como una frase: "traeme el nombre y el teléfono de los clientes que viven en La Plata, ordenados por nombre".

SELECT nombre, telefono
FROM clientes
WHERE ciudad = 'La Plata'
ORDER BY nombre;

Normalización y transacciones

Dentro de las bases de datos relacionales hay dos conceptos del programa que tienen su propia página, porque cada uno es largo y se apoya en lo que se vio acá.

Tema Qué se ve
Normalización y redundancia Por qué no conviene repetir datos, las tres anomalías que eso provoca, y las formas normales 1FN, 2FN y 3FN con un ejemplo completo.
Transacciones Qué es una transacción, las propiedades ACID, y por qué dos operaciones simultáneas pueden dejar la base de datos mal.

Resumen

Concepto La idea que hay que recordar
Base de datos relacionalOrganiza la información en tablas relacionadas por claves.
TablaGuarda datos de una sola cosa: columnas (atributos) y filas (elementos).
Clave primariaIdentifica cada fila. No se repite y no puede estar vacía.
Clave foráneaApunta a la clave primaria de otra tabla. Así se relacionan.
Integridad referencialToda referencia tiene que apuntar a algo que existe.
SQLEl lenguaje de las bases relacionales: definición, manipulación, control y transacciones.
NormalizaciónEvitar la redundancia: cada dato en un solo lugar. Tiene página propia.
TransacciónOperaciones que se aplican todas juntas o ninguna. Tiene página propia.