Hay muchas herramientas para modelar bases de datos MySQL, pero si quieres que sean open source, las opciones se limitan a solo dos: DBDesigner y MySQL Workbench.

Comparando DBDesigner y MySQL Workbench

MySQL workbench es una herramienta de Oracle con multitud de funcionalidades, desde la administración de la base de datos a la consola SQL, pasando por herramientas de modelado y diseño de bases de datos. Tiene instaladores para Linux, Windows y Mac, y viene con licencia GPL.

sakila_full.mwb - MySQL Workbench_001

DBDesigner es una aplicación de escritorio enfocada al modelado de bases de datos. Puede generar SQL para varios SGBDR, incluyendo MySQL. Solo está disponible para Windows, pero puedes ejecutarla sin problemas en Linux utilizando wine.

DBDesigner Fork - [DB Model | ERD_cuvibox]_002

He trabajado durante años con las dos, pero tengo que decir que para modelar bases de datos prefiero DBDesigner. Estos son mis motivos:

 

  • DBDesigner es ligero y rápido: MySQL Workbench tiene muchas más funciones para las bases de datos MySQL aparte del modelado, pero, naturalmente, es más pesado.
  • DBDesigner es más usable:
    • Puedes crear relaciones con solo dos clicks. Las relaciones crearán los campos apropiados en las tablas (por ejemplo los campos para las foreign keys), constraints o restricciones, índices, etc…
    • Cuando añades una foreign key a una tabla (por ejemplo, Usuario pertenece a Grupo), la tabla de usuarios recibe un nuevo campo tras la clave de la tabla “group_id“. Los campos dentro de una tabla se ordenan por defecto, primero las primary, después las foreign keys, y después el resto de campos.
    • Cuando ordenamos los campos manualmente en MySQL workbench, solo puedes añadir campos al final de la tabla, y después moverlos hacia arriba uno a uno (click derecho, mover hacia arriba una posición,..). Esto con una tabla de 15 campos consume mucho tiempo y es bastante molesto (debería poner una feature request en el proyecto, lo sé…).
    • Crear y utilizar tus propios tipos de datos personalizados es facil en DBDesigner. Por ejemplo, puedes definir un tipo de datos “PHONE” y asignarlo a un CHAR(15). Esto también se puede hacer en Mysql Workbench, pero cuando añades un nuevo campo a una tabla tendrás que seleccionarlo su tipo de una larga lista, con el ratón, ya que el teclado no autocompleta en este caso. De nuevo, es lento para hacer diseños rápidos.
  • Sincronización con base de datos:
    • Con ambas herramientas puedes transferir los cambios que hayas hecho al diseño al esquema de una base de datos. Tengo que decir que este proceso de dos clicks con DBDesigner. En Mysql Workbench podemos realizar el mismo proceso, pero supone el lanzamiento de un asistente con varios pasos, en el último de los cuales se lanza la sincronización.
  • Otras herramientas incluidas en DBDesigner:
    • Standard inserts: Con DBDesigner puedes definir “standard inserts”, o registros estándar que deben formar parte de la tabla como constantes, (por ejemplo, tabla de dificultades: Difícil, Medio, Bajo). La herramienta te preguntará si quieres ejecutar también estos inserts al sincronizar el modelo.
    • Documentador de base de datos: DBDesigner genera un informe HTML de vuestro diseño con todos los campos, comentarios, etc…
    • Web de mantenimiento: DBDesigner puede generar una pequeña aplicación PHP con la que podrás gestionar los datos introducidos en el esquema diseñado.

Esta claro, me encanta DBDesigner.

DBDesigner Fork

DBDesigner es un proyecto descontinuado. Hay también un fork del proyecto en SourceForge, DBDesigner Fork, pero parece que también está muerto. He utilizado ambos, y por ahora, no he encontrado ninguna diferencia entre ellos.

Conectando a la base de datos

Para conectar a la base de datos MySQL, os recomiendo que utilicéis un usuario dedicado, con todos los privilegios sobre el esquema de destino. Lo único que tenéis que tener en cuenta es que DBDesigner es ya un poco viejo, y utiliza el formato antiguo de contraseñas para MySQL. Por tanto, tras crear vuestro usuario de base de datos y asignarle los privilegios necesarios, tendréis que lanzar este comando:

SET PASSWORD FOR 'your_user'@'your_host' = OLD_PASSWORD('your_password');

FLUSH PRIVILEGES

Si lo hacéis desde phpMyAdmin, hay una opción para modificar la clave del usuario utilizando el formato antiguo.

Especificación de motor de tabla en MySQL

Esta herramienta es vieja, pero seguro que os gustaría utilizar la última versión de MySQL. Si lo hacéis, comprobaréis que al sincronizar con la base de datos, os retorna una serie de errores. Esto se debe a que la cláusula “TYPE=InnoDB” para especificar el motor que gestionará la tabla, está deprecada desde MySQL v.5. A partir de esta versión hay que utilizar la síntaxis “ENGINE InnoDB“.

El código de DBDesigner Fork está en sourceforge, pero no sé Kylix. Por otra parte, el proyecto parece estar congelado o muerto, si le echáis un vistazo a las fechas de los issues abiertos. Así que me he buscado una solución simple al problema, porque realmente me encanta esta herramienta.

Lo que he hecho:

  1. Descargar DBDesignerFork y descomprimirlo a una carpeta.
  2. Modificar directamente el archivo “DBDesignerFork.exe“, el ejecutable principal de la aplicación. Yo lo hice directamente con el editor vi (utilizo Linux).
  3. Buscar la cadena: “TYPE=” y cambiarla a “–PE=” (doble guion medio).
  4. Guardar el archivo y listo.

vi DBDesignerFork.exe

Lo que hemos hecho es localizar en el archivo binario donde se encuentra el literal “TYPE=” que el ejecutable utiliza para generar el DDL de la tabla. Después, poniendo un guión doble, lo que hacemos es comentar el resto de la línea del comando DDL. La cláusula TYPE es la última, con lo que comentar el resto de la línea no tiene ningún otro efecto. La tabla será creada utilizando el motor por defecto definido en la base de datos de destino, InnoDB, en mi caso.

Puede parecer una solución poco elegante, pero me llevó un minuto y funciona.

Si queréis, podéis descargar directamente el ejecutable modificado desde aquí.

Facebooktwitterredditpinterestlinkedinmail
Compartir es vivir...
Publicado en Artículos
Etiquetado con: , , , ,

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies