Inicio › Herramientas para desarrolladores › Diseñador de esquemas de bases de datos

Diseñador de esquemas de bases de datos

Diseña tu base de datos de forma visual: añade tablas, define columnas, tipos de datos, claves primarias y claves foráneas, y observa cómo se actualiza el diagrama entidad-relación sobre la marcha. El script CREATE TABLE correspondiente para MySQL, PostgreSQL o SQLite se genera en vivo, y puedes guardar el diseño como JSON para seguir trabajando en él más tarde.

Última actualización:

Arrastra las tablas para moverlas · arrastra el espacio vacío para desplazarte · Ctrl + rueda para hacer zoom · haz clic en una tabla para editarla

Importar desde SQL (sentencias CREATE TABLE)

SQL DDL

Publicidad
Publicidad

Cómo usar Diseñador de esquemas de bases de datos

  1. Empieza con el ejemplo o pulsa Añadir tabla. Haz clic en cualquier tabla del diagrama (o elígela en la lista Editar tabla) para abrirla en el editor.
  2. Define las columnas: nombre, tipo de datos, tamaño, valor por defecto y las marcas PK, Not null, Unique y Auto inc. Reordénalas con las flechas.
  3. Enlaza tablas eligiendo un destino en la lista Referencias de una columna; aparece la línea y el tipo de la columna se ajusta al de la clave a la que apunta.
  4. Organiza el diagrama arrastrando tablas, o pulsa Ordenar tablas para una disposición automática. Usa el zoom con Ajustar, + y −.
  5. Elige un dialecto (MySQL, PostgreSQL o SQLite) y copia o descarga el SQL. Usa Guardar JSON para conservar una copia editable del diseño.

Correspondencia de tipos por base de datos

Diseña una sola vez con tipos portables; cada exportación usa el tipo nativo más parecido de la base de datos de destino.

Tipo en el diseñadorMySQL 8PostgreSQLSQLite
INT / BIGINT / SMALLINTINT / BIGINT / SMALLINTINTEGER / BIGINT / SMALLINTINTEGER
DECIMAL(p,s)DECIMAL(p,s)NUMERIC(p,s)NUMERIC
FLOAT / DOUBLEDOUBLEDOUBLE PRECISIONREAL
BOOLEANBOOLEAN (TINYINT(1))BOOLEANINTEGER (0/1)
VARCHAR(n) / CHAR(n) / TEXTVARCHAR(n) / CHAR(n) / TEXTVARCHAR(n) / CHAR(n) / TEXTTEXT
DATE / TIME / DATETIMEDATE / TIME / DATETIMEDATE / TIME / TIMESTAMPTEXT (ISO 8601)
TIMESTAMP (con zona horaria)TIMESTAMPTIMESTAMPTZTEXT
UUIDCHAR(36)UUIDTEXT
JSONJSONJSONBTEXT
BLOBBLOBBYTEABLOB

Lista de comprobación para diseñar esquemas

  • Dale a cada tabla una clave primaria. Una clave sustituta id BIGINT con autoincremento es la opción más sencilla; las claves naturales, como una dirección de correo electrónico, tienden a cambiar.
  • Modela las relaciones de muchos a muchos con una tabla intermedia (como project_members en el ejemplo) cuya clave primaria sea el par de claves foráneas.
  • Haz coincidir exactamente los tipos de clave foránea. Una clave BIGINT referenciada por una columna INT falla en MySQL y desperdicia espacio en otras bases de datos; el diseñador avisa de las discrepancias.
  • Elige ON DELETE con cuidado: CASCADE para filas hijas que no tienen sentido solas (comentarios de una tarea), SET NULL para enlaces opcionales (el responsable de una tarea) y el valor por defecto (sin acción) cuando se deban bloquear los borrados.
  • Normaliza primero, desnormaliza después. Guarda cada dato una sola vez (tercera forma normal) y duplica datos solo cuando una consulta medida lo necesite.
  • Usa NOT NULL por defecto y permite NULL solo cuando "desconocido" sea un estado real. Simplifica las consultas y permite que el diagrama muestre los enlaces obligatorios con líneas continuas.
  • Usa nombres coherentes: snake_case en minúsculas, nombres de tabla en plural y claves foráneas <tabla>_id evitan las comillas y hacen evidentes los joins.

Preguntas frecuentes

¿Qué exporta el diseñador de esquemas?

Un script SQL listo para ejecutar con sentencias CREATE TABLE con claves primarias, NOT NULL, UNIQUE, valores por defecto y restricciones de clave foránea con nombre, además de sentencias DROP TABLE y CREATE INDEX opcionales. También puede guardar el diseño como JSON (para volver a abrirlo aquí más tarde) y el diagrama como imagen PNG.

¿Cómo se traducen los tipos de datos entre MySQL, PostgreSQL y SQLite?

Diseñas con tipos portables y cada dialecto recibe su equivalente nativo. Por ejemplo, TIMESTAMP con zona horaria pasa a ser TIMESTAMP en MySQL, TIMESTAMPTZ en PostgreSQL y TEXT en SQLite; UUID pasa a ser CHAR(36), UUID y TEXT; JSON pasa a ser JSON, JSONB y TEXT. SQLite solo usa sus clases de almacenamiento (INTEGER, REAL, TEXT, BLOB, NUMERIC).

¿Cómo se escribe el autoincremento en cada base de datos?

MySQL usa AUTO_INCREMENT, PostgreSQL usa GENERATED BY DEFAULT AS IDENTITY (el sustituto estándar SQL de SERIAL) y SQLite usa INTEGER PRIMARY KEY AUTOINCREMENT, que solo se permite en una clave primaria entera de una sola columna.

¿En qué orden se crean las tablas?

Las tablas referenciadas se crean antes que las tablas que apuntan a ellas, así que el script se ejecuta de arriba abajo sin errores. Si dos tablas se referencian entre sí, la segunda clave foránea se añade después con ALTER TABLE en MySQL y PostgreSQL. SQLite acepta referencias hacia adelante, así que todas las claves quedan en línea.

¿Por qué indexar las columnas de clave foránea?

Los joins y las comprobaciones ON DELETE buscan filas por la columna de clave foránea. InnoDB de MySQL crea ese índice automáticamente, pero PostgreSQL y SQLite no, así que la herramienta añade sentencias CREATE INDEX para esos dialectos salvo que desactives la opción.

¿Dónde se guarda mi esquema?

Solo en tu navegador. El diseño se guarda automáticamente en el almacenamiento local de este dispositivo, y Guardar JSON descarga un archivo que puedes respaldar, compartir o abrir más tarde con Abrir JSON. No se envía nada a ningún servidor.

¿Puedo editar una base de datos existente?

Sí. Exporta su esquema como SQL (por ejemplo con mysqldump --no-data o pg_dump --schema-only), pégalo en Importar desde SQL y las tablas, claves y relaciones aparecerán en el diseñador listas para modificar.

¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?

Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.

Herramientas relacionadas

Ver todas las de Generadores de código →