Herramienta gratuita

PostgreSQL a diagrama ER

Pega la salida de pg_dump tal cual, con sus líneas SET, sus restricciones ALTER TABLE ONLY y sus bloques COPY, y obtén un diagrama ER de cada tabla y clave foránea. Prueba el ejemplo de SaaS multiinquilino, que usa columnas de identidad, un tipo enum y una tabla particionada.

Resultado de ejemplo

Diagrama de ejemplo dibujado a partir de un ejemplo de PostgreSQL
Prueba un ejemploSaaS multiinquilino

Cómo funciona

  1. Pega o suelta la salida de pg_dump

    Un volcado en texto plano, un archivo de migración o sentencias CREATE TABLE de psql, pgAdmin o un ORM. No hace falta limpiar el volcado antes.

  2. Mira cada tabla con sus claves

    Las claves que pg_dump escribe al final del archivo se asocian a sus tablas, cada línea de clave foránea parte de su propia columna, y un volcado con varios esquemas recibe un marco por esquema.

  3. Ábrelo en Archboard

    Guárdalo como un diagrama nuevo para reorganizarlo, anotarlo, compartir un enlace o exportarlo en SVG y PNG. Para registrarte basta una cuenta de Google o GitHub.

Saca el esquema de base de datos de PostgreSQL

Ejecuta esto contra la base de datos y luego pega schema.sql o suelta el archivo:

  1. --schema-only deja fuera las filas, y --no-owner y --no-privileges quitan las líneas OWNER TO, GRANT y REVOKE. Añade --schema=sales para volcar un solo esquema. Sustituye mydb por el nombre de la base de datos y añade -h y -U o una URI de conexión si hace falta.

    pg_dump --schema-only --no-owner --no-privileges mydb > schema.sql

Sintaxis de PostgreSQL en un volcado

Qué pasa con cada construcción de un archivo de pg_dump:

serial · GENERATED … AS IDENTITY
Se leen como columnas normales que conservan el tipo tal como está escrito; el valor por defecto de identidad o de secuencia no se muestra. Una columna serial solo se marca como PK si lo indica una PRIMARY KEY, porque serial por sí sola no crea una clave.
CREATE TYPE … AS ENUM
El nombre del tipo enum pasa a ser el tipo de la columna, por ejemplo order_status; sus etiquetas no aparecen en la tarjeta.
CREATE SCHEMA
Cuando el volcado tiene más de un esquema, cada esquema con tablas se convierte en un marco alrededor de ellas, y las claves foráneas entre esquemas cruzan los marcos.
ALTER TABLE ONLY … ADD CONSTRAINT
Se lee. pg_dump escribe las claves primarias, las restricciones únicas y las claves foráneas al final del todo, y se aplican cuando ya se conocen todas las tablas.
PARTITION OF
Se pliegan en la tabla padre, así que una tabla dividida por meses es una sola tarjeta; la vista previa indica cuántas particiones se plegaron. ATTACH PARTITION se trata igual.
$$ … $$
Los cuerpos de funciones y procedimientos entre dólares se omiten enteros, así que sus puntos y coma no pueden cortar una sentencia. Dentro de un bloque DO, CREATE TABLE y ALTER TABLE … ADD CONSTRAINT se siguen leyendo.
COPY … FROM stdin
Las líneas de datos que siguen se omiten sin leerse, hasta la línea \. que las cierra.
\restrict
Se omite. Las versiones recientes de pg_dump rodean el volcado con líneas \restrict y \unrestrict; estas y otras metaórdenes de psql como \connect se ignoran.

Lo que un diagrama de pg_dump deja fuera

  • Los datos de las tablas. Las filas de los bloques COPY y de las sentencias INSERT no se leen, así que un volcado con datos dibuja el mismo diagrama que uno hecho con --schema-only.
  • Funciones, procedimientos, disparadores y el código de los bloques DO. Sus cuerpos se omiten y se cuentan; de un bloque DO solo se toman las tablas y las restricciones.
  • Las políticas de acceso por fila (RLS), GRANT y REVOKE, y los propietarios de los objetos. Quién puede leer o cambiar una tabla no aparece en el diagrama.
  • Lo que viene de un servidor PostgreSQL en marcha. No se abre ninguna conexión, así que no se muestran tamaños de tabla, recuentos de filas ni extensiones instaladas.

Preguntas sobre PostgreSQL

¿Qué opciones de pg_dump debo usar?

pg_dump --schema-only --no-owner --no-privileges da la salida más corta, pero sirve cualquier volcado en texto plano, incluso con datos. Un archivo en formato personalizado hecho con -Fc no es texto SQL: conviértelo con pg_restore --schema-only -f schema.sql seguido del nombre del archivo.

¿Cómo se muestran varios esquemas?

Cada esquema con tablas se convierte en un marco con sus tablas dentro, así que public, billing y audit quedan separados, y las claves foráneas entre ellos cruzan los marcos. Para dibujar un solo esquema, vuélcalo aparte con --schema=nombre, o -n para abreviar.

¿Qué pasa con las tablas particionadas?

Las particiones creadas con PARTITION OF, o adjuntadas después con ATTACH PARTITION, se pliegan en su tabla padre, así que una tabla payments dividida en doce particiones mensuales aparece como una sola tarjeta. La vista previa indica cuántas particiones se plegaron.

¿Se muestran los enum y los tipos propios?

Un enum creado con CREATE TYPE … AS ENUM se usa como tipo de columna, así que una columna status muestra order_status, pero las etiquetas del enum no se listan. Los dominios y los tipos compuestos no se dibujan como tarjetas; las columnas que los usan siguen mostrando el nombre del tipo tal como está escrito.

¿Se guarda algo al pegar un volcado?

La vista previa no se guarda. Cuando eliges Abrir en Archboard, el diagrama dibujado, con sus tarjetas de tabla, nombres y tipos de columna, marcos de esquema y líneas, se guarda como un diagrama nuevo en tu espacio de trabajo. Los cambios posteriores en la base de datos no lo actualizan.

¿La herramienta de diagramas ER para PostgreSQL es gratuita?

Sí. Pegar un volcado y ver el diagrama no requieren cuenta. Para abrir el diagrama en Archboard basta una cuenta gratuita.

Abre un lienzo en un minuto

Inicia sesión con Google o GitHub. Gratis para un asiento. Mejora el plan cuando se una el equipo.