Herramienta gratuita

SQLite a diagrama ER

Pega lo que imprime sqlite3 con .schema o .dump y obtén un diagrama ER de las tablas, las claves y las claves foráneas, incluidas las columnas sin tipo. Prueba el ejemplo de app de notas: cuadernos, notas, etiquetas y la tabla que une las notas con las etiquetas.

Resultado de ejemplo

Diagrama de ejemplo dibujado a partir de un ejemplo de SQLite
Prueba un ejemploApp de notas

Cómo funciona

  1. Pega o suelta el esquema

    La salida de .schema o .dump, un archivo de migración escrito en SQL o sentencias CREATE TABLE copiadas de cualquier herramienta de SQLite.

  2. Mira las tablas y sus vínculos

    Cada tabla se convierte en una tarjeta con sus columnas, y cada cláusula REFERENCES se convierte en una línea hacia la tabla a la que apunta, estén activadas o no las claves foráneas.

  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 un archivo de SQLite

Ejecuta esto junto al archivo de la base de datos y pega lo que imprime:

  1. .schema imprime cada sentencia CREATE sin las filas; .dump imprime lo mismo más los datos, que se omiten. Sustituye app.db por el nombre del archivo, o añade > schema.sql para guardar la salida y suelta ese archivo.

    sqlite3 app.db .schema

Sintaxis de SQLite en un esquema

Qué pasa con cada construcción de la salida de sqlite3:

INTEGER PRIMARY KEY
Se marca como PK. Esta columna es el rowid de la tabla, y otras tablas pueden apuntar a ella con REFERENCES.
AUTOINCREMENT
Se lee como parte de la clave primaria y no se muestra. SQLite lo escribe sin guion bajo, a diferencia del AUTO_INCREMENT de MySQL.
CREATE TABLE note_tags (note_id, tag_id)
Se lee. Una columna declarada sin tipo se muestra con su nombre y sin tipo, y las claves sobre ella siguen contando.
WITHOUT ROWID · STRICT
Se omiten como opciones de tabla; la tabla, sus columnas y su clave primaria se leen como siempre.
sqlite_sequence
Se oculta. SQLite crea esta tabla para AUTOINCREMENT y .schema la muestra, pero no forma parte del diseño de la app; un .dump solo la llena con líneas INSERT, que se omiten.
CREATE TRIGGER
Se omiten y se cuentan. Los puntos y coma dentro de BEGIN … END se manejan bien, así que las tablas que siguen a un disparador se siguen leyendo.

Lo que un diagrama de SQLite deja fuera

  • Disparadores y vistas. Sus cuerpos se omiten y se cuentan, así que nada de lo que hacen aparece en el diagrama.
  • Las tablas internas de SQLite, como sqlite_sequence y sqlite_stat1. Todo lo que empieza por sqlite_ se oculta.
  • Si las claves foráneas se aplican o no. PRAGMA foreign_keys está desactivado por defecto en SQLite, y el diagrama dibuja cada REFERENCES declarado sin importar ese ajuste.
  • El propio archivo de la base de datos. Un archivo .db no se puede abrir aquí, así que no se muestran el tamaño de página, los recuentos de filas ni las filas guardadas; pega el texto de .schema en su lugar.

Preguntas sobre SQLite

.schema o .dump: ¿cuál uso?

.schema es más corto porque imprime solo las sentencias CREATE. .dump añade cada fila como sentencias INSERT entre BEGIN TRANSACTION y COMMIT, y también funciona, porque las filas se omiten. Para imprimir una sola tabla, pásale su nombre a .schema, como en .schema notes.

¿Por qué algunas columnas no tienen tipo?

SQLite permite declarar una columna sin tipo, como en CREATE TABLE note_tags (note_id, tag_id). El diagrama muestra esa columna con su nombre y un tipo vacío. En una tabla STRICT cada columna tiene tipo, y se muestra tal como está escrito.

¿Por qué no hay líneas entre mis tablas?

Las líneas vienen de las cláusulas REFERENCES y de las restricciones FOREIGN KEY. Muchas apps nunca las declaran y solo guardan identificadores, así que no hay nada que dibujar. En cuanto el esquema las declara, las líneas aparecen, esté activado o no PRAGMA foreign_keys.

¿Puedo hacer el diagrama de la base de datos SQLite de una app móvil?

Sí. Copia el archivo de la base de datos del dispositivo o del emulador a tu ordenador, ejecuta sqlite3 app.db .schema y pega la salida. Lo mismo vale para apps de escritorio, apps de Electron y bases de datos locales de desarrollo de Django o Rails.

¿Se guarda algo al pegar un esquema?

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

¿La herramienta de diagramas ER para SQLite es gratuita?

Sí. Pegar un esquema 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.