# Esquema de base de datos

> El plano de una base de datos: qué tablas hay, sus columnas y cómo se conectan.

- Nivel: Intermedio
- Temas: Datos
- URL: https://tidbit.legios.com.ar/es/database-schema/
- En inglés: [Database schema](https://tidbit.legios.com.ar/database-schema/)

El **esquema de base de datos** (schema) es la descripción de cómo está organizada una base de datos: qué tablas tiene, qué columnas tiene cada tabla, qué tipo de valor va en cada columna (un número, una fecha, un texto), qué columnas son obligatorias y cómo se relacionan las tablas entre sí. Describe la forma de los datos, no los datos.

Pensá en una tienda online. El esquema puede decir que hay una tabla `customers` con un `id`, un `name` y un `email` que no puede quedar vacío, y una tabla `orders` con un `id`, un `customer_id`, un `total` con dos decimales y una fecha `created_at`. Con eso definido, la base rechaza un pedido con total "banana" o sin cliente. En SQL, el esquema se escribe con comandos como `CREATE TABLE` y se modifica con `ALTER TABLE`.

Los esquemas cambian a medida que cambia el producto, y eso es delicado: renombrar una columna puede romper todos los reportes y apps que la leen. Los equipos lo manejan con **migraciones**, pequeños scripts versionados que cambian el esquema paso a paso y se revisan como código. En algunas bases, como PostgreSQL, la palabra tiene además un sentido más chico: un schema es una carpeta con nombre que agrupa tablas.

## Una analogía

El plano de un edificio: no te dice quién vive ahí, pero sí cuántos ambientes hay, qué tamaño tiene cada uno y qué puertas los conectan. No podés poner una heladera donde el plano dice que hay una escalera.

## Para quedarse

- Define tablas, columnas, tipos de datos, campos obligatorios y relaciones.
- Permite que la base rechace datos con la forma equivocada.
- Se escribe y se cambia en SQL, idealmente con migraciones versionadas.
- Un warehouse controla el esquema al escribir; un data lake lo aplica al leer.

## Para seguir leyendo

- [¿Qué es un esquema de base de datos? (IBM)](https://www.ibm.com/es-es/think/topics/database-schema)
- [Database schema en Wikipedia (en inglés)](https://en.wikipedia.org/wiki/Database_schema)

## Términos relacionados

- [Base de datos](https://tidbit.legios.com.ar/es/database/): Un depósito ordenado de datos que los programas consultan y actualizan sin riesgo.
- [SQL](https://tidbit.legios.com.ar/es/sql/): El lenguaje para hacerle preguntas a una base de datos.
- [Data lake](https://tidbit.legios.com.ar/es/data-lake/): Almacenamiento barato donde todos los datos se guardan como archivos crudos.
