Fundamentos de Bases de Datos Relacionales (RDBMS)

Antes de escribir código interactivo o diagramar mapas lógicos, es vital comprender la naturaleza matemática y estructural que rige al almacenamiento de tecnología.

Naturaleza Logística

Una Base de Datos Relacional es un software diseñado para almacenar terabytes de información categorizada bajo el modelo matemático del científico E.F. Codd en los 70s. Organiza masivamente la "realidad" a través de matrices bidimensionales (tablas) que se enlazan mediante variables primarias para omitir y anular por completo la duplicación extrema de la información que ocurre en gestores empíricos como Excel.

Entidades y Tuplas

El mundo relacional se subdivide en Esquemas o Tablas. Cada tabla agrupa miembros y consta de dos ejes absolutos:

  • Atributos (Columnas): Definen conceptualmente al objeto. (Coche: Matrícula, Chasis, Motor, Precio).
  • Registros (Filas / Tuplas): Representan cada instanciación de un individuo grabado históricamente en esa tabla. Todos los atributos de un tupla representan su identidad temporal.

La Regla Cero: Llaves

Sin llaves, la BD se deteriora en una selva de la que no podrás extirpar información unívoca.

  • Llave Primaria (Primary Key, PK): Es un código, número o hash que hace que una Fila sea inconfundible con el resto. Jamás debe repetirse (ej. DNI, Pasaporte o ISBN de un libro).
  • Llave Foránea (Foreign Key, FK): Una variable normal que recibe prestada una Primary Key desde OTRA tabla, lo cual forja un puente intergaláctico indestructible entre ambos sectores.

Transacciones ACID

Una BDD no puede quedarse en un estado incompleto. Cumple 4 principios férreos:

  • Atomicidad: "Todo o Nada". Si cae la luz en medio de un procedimiento de dos partes, todo se revierte (Rollback).
  • Consistencia: El estado de origen y el de destino siempre resguardan las reglas restrictivas de la base de datos.
  • Aislamiento: Dos programas modificando la misma celda de tabla se encolan o no interfieren entre sí visiblemente.
  • Durabilidad: Si el disco graba el cambio, ese cambio es irremediablemente guardado de picos de voltaje.

Lenguaje Lingüistico (S.Q.L)

"Lenguaje de Consulta Estructurada". Es el idioma universal que utilizamos para comandar el almacén e independientemente del Gestor utilizado (MySQL, PostgreSQL, Oracle), utiliza estas macros de la industria:

DDL (Data Definition)

Comandos de albañil que declaran y construyen/muta la estructura vacía de las Tablas.
CREATE DROP ALTER
DML (Data Manipulation)

Comandos del día a día; alteran, leen e introducen carne fresca sobre las tablas existentes.
SELECT INSERT UPDATE
DCL & TCL (D. Control / Transactions)

Encargados del área de seguridad cibernética perimetral, bloqueos de usuario y commit de historial en disco.
GRANT REVOKE COMMIT

Datos y Estructura

Para cada columna debemos definir un tipo de dato rígido:

  • INT / BIGINT: Números enteros (IDs, Cantidades).
  • VARCHAR(n): Texto de longitud variable (Nombres, Correos).
  • BOOLEAN: Verdadero o Falso (Activo, Pagado).
  • DECIMAL / NUMERIC: Dinero o precisión matemática.

Creación: Usamos CREATE TABLE nombre ( col1 tipo pk, ... ); acompañado de constraints como NOT NULL o UNIQUE.

Consultas Extra-Extensas

El SELECT es el corazón de SQL. Su flujo lógico es:

SELECT col FROM tabla WHERE cond ORDER BY col LIMIT n;

Subconsultas: Son queries dentro de otras queries.
Ej: "Busca usuarios cuyo ID esté en (SELECT id FROM admins)". Permiten lógica de filtrado dinámica y poderosa.

El Arte del JOIN

Unir tablas es lo que hace a las BD "Relacionales":

  • INNER JOIN: Solo trae lo que tiene pareja en ambas tablas (Intersección).
  • LEFT JOIN: Trae todo de la izquierda y lo que coincida de la derecha (Nulos si no hay match).
  • RIGHT JOIN: Al revés del Left.
  • FULL JOIN: Trae la unión total de ambos mundos.

PostgreSQL: El Estándar de Oro

PostgreSQL no es solo una base de datos relacional; es un motor de objetos-relacional ultra potente. Aquí sus comandos y sintaxis más icónicas:

Tipos de Datos Pro
  • JSONB: Almacena JSON binario indexable (Velocidad NoSQL).
  • SERIAL: Autoincrementales automáticos.
  • UUID: Identificadores únicos universales.
  • TIMESTAMPTZ: Fechas con zona horaria real.
Sintaxis "Especial"
  • ILIKE: Búsqueda de texto ignorando mayúsculas.
  • RETURNING *: Devuelve la fila insertada/editada al instante.
  • ON CONFLICT DO UPDATE: El famoso "Upsert".
  • DISTINCT ON (col): Filtra duplicados por una columna específica.
Comandos de Consola (psql)
  • \d [tabla]: Describe la estructura de la tabla.
  • \l: Lista todas las bases de datos.
  • \dt: Lista las tablas del esquema actual.
  • \c [db]: Conecta a otra base de datos.
Ejemplos de Código (Sintaxis Real)
-- El famoso UPSERT (On Conflict)
INSERT INTO usuarios (id, nombre, email)
VALUES (1, 'Jordy', 'jordy@dev.com')
ON CONFLICT (id) DO UPDATE
SET nombre = EXCLUDED.nombre;

-- Retornar ID al insertar
INSERT INTO posts (titulo) VALUES ('Postgres Tips')
RETURNING id, fecha_creacion;
-- Manejo de JSONB (Querying)
SELECT info->>'ciudad' as ciudad
FROM usuarios
WHERE info @> '{"rol": "admin"}';

-- Window Functions (Ranking)
SELECT nombre, salario,
RANK() OVER (ORDER BY salario DESC)
FROM empleados;

SQL Playground

Escribe queries (SELECT) sobre las tablas cargadas virtualmente en tu navegador.

¿Cómo usarlo?

En el bloque oscuro de la izquierda ingresa comandos SELECT [columnas] FROM [tabla]; (Por ejemplo: SELECT nombre, email FROM usuarios;). Revisa las Tablas Disponibles a la derecha y, tras presionar el botón verde Run Query, mira cómo los datos se procesan y devuelven filtrados en la cuadrícula de debajo.

query.sql

Tablas Disponibles

    Resultados

    Ejecuta una consulta para ver los resultados.

    ERD Builder

    Diagramador visual de arquitectura para proyectar cómo se relacionarán tus datos.

    Teoría de Relaciones ERD (Guía de Arquitectura Matemática)
    ¿Cómo diagramar?
    • 🎯 Entidades (Tablas): Cosas independientes (Ej: Usuarios, Coches).
    • 💎 Rombos (Notación Chen): Figura geométrica que ilustra una Acción/Verbo que une dos tablas Muchos a Muchos (Ej: Usuarios [Compran] Coches).
    • Trazar Cuerdas: Arrastra desde un puerto lateral (○) de una forma hasta otra para soldarlas físicamente.
    • 🔧 Reglas de Cardinalidad: ¡Haz CLIC en la cuerda o línea finalizada para abrir el Panel Mágico y dictar cómo fluye de Extremo a Extremo basándote en la teoría!
    Leyenda de Cardinalidad (Patas de Gallo)
    • | | Uno Obligatorio (1:1): Al menos un y solo un registro en la tabla destino. (Ej: 1 Persona ➔ 1 DNI).
    • |< Muchos Obligatorio (1:N): Uno o más registros asociados, nunca cero. (Ej: 1 Factura ➔ Mucho Detalle).
    • o | Cero o Uno (0:1 - Opcional): Puede coexistir o no sin que estalle el sistema. (Ej: 1 Empleado ➔ Cero ó 1 Coche de Empresa asignado).
    • o < Cero a Muchos (0:N - Opcional): El rey de las DB relacionales. (Ej: 1 Post de Blog ➔ Cero a Infinitos "Me Gusta").

    La Ruta de la Normalización

    Guía de axiomas matemáticos para la sanidad relacional.

    ¿Cómo usarlo?

    Haz clic pausadamente en los botones secuenciales (Tabla Estándar > 1NF > 2NF > 3NF). Observa la tabla redundante y fíjate cómo evoluciona en tiempo real a medida que lees sus explicaciones, hasta dividirse en tablas ultra-básicas conectadas eficientemente por medio de Foreign Keys (FK).