Saltar al contenido
Diseño de BD

Generador de DDL

Diseña tablas de forma visual y genera sentencias CREATE TABLE (MySQL / PostgreSQL / SQLite) junto con un diagrama ER. También puedes pegar una muestra JSON para inferir las columnas automáticamente. Todo se ejecuta en tu navegador; nada de lo que ingreses se envía a ningún sitio.

Guía: Cómo usarlo y características

  • Pega un objeto o array JSON en "Generar desde JSON" para añadir una tabla con tipos de columna, clave primaria y NOT NULL ya inferidos.
  • En "Diseño de tablas" puedes editar el nombre de la tabla, columnas, tipos, PK/NOT NULL/UNIQUE/autoincremento y valores por defecto directamente.
  • En "Relaciones", elige una tabla/columna origen y una tabla/columna destino para añadir una clave foránea y su línea en el diagrama ER.
  • Elige un dialecto (MySQL / PostgreSQL / SQLite) y pulsa "Generar DDL" para obtener las sentencias CREATE TABLE con ese formato.

FAQ: Preguntas frecuentes

  • ¿Cómo cambian los tipos entre MySQL, PostgreSQL y SQLite?

    Las tablas se guardan internamente con tipos lógicos comunes (INTEGER, DECIMAL, VARCHAR, etc.) y solo se convierten a los tipos reales de cada base de datos al generar el DDL. Por ejemplo, BOOLEAN se convierte en INTEGER en SQLite, y una clave primaria autoincremental se convierte en AUTO_INCREMENT en MySQL, SERIAL en PostgreSQL e INTEGER PRIMARY KEY AUTOINCREMENT en SQLite.
  • ¿Qué ocurre con NOT NULL, UNIQUE y el valor por defecto si marco una columna como PK?

    Una clave primaria es NOT NULL y UNIQUE por definición, así que al marcar PK se ignoran esos ajustes y solo se genera "TIPO PRIMARY KEY" (más AUTO_INCREMENT/SERIAL si el autoincremento está activado).
  • ¿Cómo se manejan los datos anidados al generar desde JSON?

    Una propiedad de nivel superior cuyo valor es un array de objetos se separa automáticamente en su propia tabla con una clave foránea hacia la tabla padre. Un objeto anidado simple se convierte en una columna de tipo JSON. El anidamiento de más de un nivel no se divide automáticamente.

Casos de uso: Casos de uso habituales

  • Bocetar tablas para una nueva API o servicio

    Monta visualmente las tablas y columnas que necesitas en las primeras etapas de un proyecto y expórtalas directamente como sentencias CREATE TABLE.

  • Deducir un esquema de BD a partir de una respuesta JSON existente

    Pega una muestra JSON de una respuesta de API o un registro de log para generar automáticamente una estructura de tablas y un DDL de partida.

  • Generar un diagrama ER para una revisión de diseño en equipo

    Consulta al instante la estructura de tablas diseñada como un diagrama ER en formato Mermaid, útil para alinear el diseño durante una revisión.

  • Un flujo completo de diseño a consulta con sql-to-er / SQL Builder

    Envía el DDL generado a SQL Builder para empezar a construir consultas, o pégalo más tarde en sql-to-er para revisar la estructura.

Notas: Notas y limitaciones

  • El DDL generado solo cubre restricciones básicas

    Se admiten PRIMARY KEY, NOT NULL, UNIQUE, DEFAULT y FOREIGN KEY, pero no se generan índices, restricciones CHECK, juegos de caracteres/collation ni particionado. Revisa siempre el resultado antes de usarlo en una migración de producción.

  • La inferencia de tipos desde JSON depende de tu muestra

    Los tipos solo pueden inferirse a partir de los valores presentes en la muestra proporcionada. Si una columna puede contener realmente otros tipos de valores, ajusta el tipo inferido a mano.

Generar desde JSON (opcional)

Diseño de tablas

Relaciones (claves foráneas)

Salida DDL

Vista previa del diagrama ER

Artículos para esta herramienta

Artículos recientes

Caso de uso
2026-08-07

Opciones de curl: qué hacen realmente -X, -H y -d

Referencia de las opciones de curl que aparecen en el trabajo diario con APIs: por qué -d ya implica POST, en qué se diferencia de --data-raw, la @ inicial que lee un archivo sin avisar, comillas simples frente a dobles, y por qué -k y -L merecen más cuidado del habitual.

Introducción
2026-08-06

Convertir entre JSON Schema y Zod: cómo se corresponden required y .optional()

Por dentro de un conversor bidireccional que transforma JSON Schema en un esquema de Zod y el código Zod de vuelta a JSON Schema. Incluye los valores por defecto invertidos entre required y .optional(), la tabla de correspondencia de restricciones y cómo se analiza Zod sin ejecutar código.

Caso de uso
2026-08-06

Orden de evaluación en SQL: por qué WHERE no ve el alias del SELECT

El orden en que escribe las cláusulas de SQL no es el orden en que se ejecutan. Referencia del orden lógico (FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT), por qué fallan los alias en WHERE, cuándo usar WHERE y cuándo HAVING, ONLY_FULL_GROUP_BY y la trampa de LEFT JOIN con WHERE.

Caso de uso
2026-08-06

Formato unified diff: cómo leer las cabeceras @@ de git diff

Cómo leer el formato unified diff que genera git: qué significan los cuatro números de @@ -12,7 +12,9 @@, por qué un cambio de un solo carácter aparece como línea completa reemplazada, las trampas de los espacios y los finales de línea, \ No newline at end of file, los diffs combinados @@@ en los merges y la detección de renombrados.

Caso de uso
2026-08-06

Conversión UTC⇄JST: tabla del desfase de 9 horas y errores de zona horaria

Convierta entre UTC y la hora de Japón (JST) con una tabla de referencia, y vea por qué la diferencia con España cambia entre 7 y 8 horas según el horario de verano. Incluye el significado de Z y +09:00 en ISO 8601, cuándo JavaScript desplaza las fechas, el comportamiento de MySQL/PostgreSQL y por qué el cron de GitHub Actions siempre corre en UTC.

Caso de uso
2026-08-04

Referencia de CREATE TABLE: tipos y restricciones en MySQL, PostgreSQL y SQLite

Referencia de CREATE TABLE (DDL) con tablas comparativas entre bases de datos: tipos de datos, autoincremento (AUTO_INCREMENT / IDENTITY / rowid), comportamiento de ON DELETE en claves foráneas y la restricción CHECK que MySQL ignora en silencio.

Anuncio

Anuncio