viernes, 26 de junio de 2026

馃悩 Esquemas en PostgreSQL: qu茅 son y c贸mo usarlos

馃 ¿Qu茅 es un esquema?

Un esquema (schema) en PostgreSQL es una forma de organizar y agrupar objetos dentro de una base de datos.

馃憠 Es como una carpeta dentro de una base de datos.

Dentro de un esquema puedes tener:

  • Tablas

  • Vistas

  • Funciones

  • 脥ndices

  • Secuencias


馃幆 Ejemplo conceptual

Imagina una base de datos llamada:

empresa_db


Dentro puedes tener esquemas como:

  • ventas

  • recursos_humanos

  • finanzas

Y dentro de cada esquema sus propias tablas:

empresa_db

  ├── ventas.clientes

  ├── ventas.pedidos

  ├── recursos_humanos.empleados

  ├── finanzas.facturas



馃摝 ¿Para qu茅 se usan los esquemas?

Los esquemas sirven principalmente para:

1. 馃梻️ Organizar objetos

Separar l贸gica y funcionalidad dentro de la misma base de datos.

Ejemplo:

  • Esquema auth → usuarios y permisos

  • Esquema app → l贸gica de la aplicaci贸n

  • Esquema reporting → reportes


2. 馃敀 Controlar accesos

Puedes dar permisos por esquema en lugar de tabla por tabla.

GRANT USAGE ON SCHEMA ventas TO usuario_app;


3. 馃毇 Evitar conflictos de nombres

Puedes tener tablas con el mismo nombre en distintos esquemas.

ventas.clientes

soporte.clientes


4. 馃彈️ Soporte para m煤ltiples aplicaciones

Una sola base de datos puede contener varios sistemas organizados por esquema.


馃З Esquemas por defecto

Cuando creas una base de datos en PostgreSQL, ya existen esquemas:

馃敼 public

  • Es el esquema por defecto

  • Si no especificas esquema, los objetos se crean aqu铆

CREATE TABLE clientes (...);

-- equivale a

CREATE TABLE public.clientes (...);


馃敼 Otros esquemas internos

  • pg_catalog → funciones y metadatos internos

  • information_schema → vistas est谩ndar del sistema


馃洜️ Crear un esquema

馃敼 Sintaxis b谩sica

CREATE SCHEMA nombre_schema;

✅ Ejemplo:

CREATE SCHEMA ventas;


馃敼 Crear con propietario

CREATE SCHEMA ventas AUTHORIZATION postgres;


馃П Crear objetos dentro de un esquema

馃敼 Crear una tabla en un esquema espec铆fico

CREATE TABLE ventas.clientes (

id SERIAL PRIMARY KEY,

nombre VARCHAR(100),

email VARCHAR(100)

);


馃敼 Insertar datos

INSERT INTO ventas.clientes (nombre, email)

VALUES ('Juan P茅rez', 'juan@email.com');


馃敼 Consultar datos

SELECT * FROM ventas.clientes;


馃攧 Cambiar el esquema por defecto (search_path)

PostgreSQL usa una variable llamada search_path que define en qu茅 esquemas buscar.

馃敼 Ver configuraci贸n

SHOW search_path;


馃敼 Cambiar esquema por defecto

SET search_path TO ventas;

Ahora puedes hacer:

SELECT * FROM clientes;

(en lugar de ventas.clientes)


馃棏️ Eliminar un esquema

DROP SCHEMA nombre_schema;

⚠️ Ejemplo:

DROP SCHEMA ventas;


馃敼 Eliminar con todo su contenido

DROP SCHEMA ventas CASCADE;

馃毃 Esto elimina:

  • Tablas

  • Vistas

  • Funciones


馃攼 Permisos en esquemas

馃敼 Dar acceso

GRANT USAGE ON SCHEMA ventas TO usuario_app;

``

馃敼 Permitir crear objetos

GRANT CREATE ON SCHEMA ventas TO usuario_app;


⚖️ Esquemas vs Bases de Datos

Caracter铆stica

Base de Datos

Esquema

Nivel

Alto

Intermedio

Contiene

Todo

Objetos espec铆ficos

Aislamiento

Total

Parcial

Conexi贸n

Requiere reconexi贸n

No

馃憠 Resumen:

  • Base de datos = contenedor principal

  • Esquema = organizaci贸n interna


馃挕 Buenas pr谩cticas

✅ 1. No usar solo public

Define esquemas propios para organizar mejor.


✅ 2. Nombres claros

ventas

auth

reportes


✅ 3. Separar por dominio

  • core → l贸gica principal

  • audit → auditor铆a

  • api → capa de exposici贸n


✅ 4. Evitar mezclar todo

❌ Mala pr谩ctica:

public (todo aqu铆)


✅ Buena pr谩ctica:

app.usuarios

app.productos

audit.logs



✅ 5. Controlar permisos por esquema

M谩s simple y seguro que hacerlo por tabla.


馃殌 Caso pr谩ctico simple

-- Crear esquema

CREATE SCHEMA ecommerce;


-- Crear tabla

CREATE TABLE ecommerce.productos (

id SERIAL PRIMARY KEY,

nombre VARCHAR(100),

precio NUMERIC(10,2)

);


-- Insertar datos

INSERT INTO ecommerce.productos (nombre, precio)

VALUES ('Laptop', 15000.00);


-- Consultar

SELECT * FROM ecommerce.productos;


✅ Conclusi贸n

Los esquemas son una herramienta clave en PostgreSQL para:

  • Organizar la base de datos

  • Mejorar la seguridad

  • Escalar proyectos

  • Mantener orden en sistemas grandes

Si usas correctamente los esquemas desde el inicio, tu base de datos ser谩 mucho m谩s mantenible y profesional.


No hay comentarios:

Publicar un comentario

馃悩 Tipos de Datos en PostgreSQL