Por fin encontré una forma sencilla de generar un diagrama de Entidad-Relación de una base de datos existente con MySql Workbench.
Para poder generar el esquema de base de datos, debemos utilizar MySQL Workbench. Es una aplicación gratuita de MySQL de Oracle. Podéis descargar MySQL WorkBench desde aquí.
(Artículo revisado con MySQL WorkBench 8.0.16. Las capturas de pantalla siguen siendo iguales)
También te puede interesar:
Cambiar la contraseña de root de MySQL
Consultas MySQL mediante una macro de VB
Guía de administración de MySQL
Guía para crear una base de datos MySQL desde comandos en linux
Pincha en la imagen para saber más sobre este libro
Tabla de contenidos
- 1 Cómo generar el Diagrama Entidad Relación desde MySQL Workbench
- 2 Seleccionar objetos a importar mediante ingeniería inversa
- 3 Resultado de la ingeniería inversa: modelo MySQL
- 4 Relaciones en MySQL Workbench
- 5 Identificar qué campos están relacionados dentro del modelo
- 6 Modificar el tipo del diagrama del modelo de datos en MySQL Workbench
- 7 Conclusiones
Cómo generar el Diagrama Entidad Relación desde MySQL Workbench
Una vez instalada y configurada nuestra conexión a la base de datos de la que queremos obtener su "Diagrama Entidad-Relación", nos vamos al menú superior Database y seleccionamos la opción de Reverse Engineer (Ingeniería inversa):
Se nos mostrará la siguiente ventana donde seleccionamos nuestra conexión a la base de datos, localhost, y pulsamos Next (Siguiente):
Cuando termine el proceso, volvemos a pulsar Next:
Seleccionamos la base de datos que nos interese y pulsamos Next:
Cuando termine el proceso, volvemos a pulsar Next:
Seleccionar objetos a importar mediante ingeniería inversa
En la siguiente ventana debemos seleccionar qué objetos queremos incluir en nuestro diagrama entidad relación. En nuestro caso seleccionaremos todos. Es importante seleccionar el check que aparece en la parte inferior. En algunas ocasiones me ha ocurrido que no me deja seleccionarlo porque a lo mejor hay demasiados objetos seleccionados. Pulsamos Next para continuar:
Cuando termine el proceso, volvemos a pulsar Next:
Si todo sale correctamente debería aparecernos una ventana como la siguiente:
Pulsamos Finish para terminar y debería mostrarnos el diagrama con todas las tablas de nuestra base de datos. En algunas ocasiones sólo importa las tablas sin establecer las relaciones entre estas. Esto se debe a que esa información no existe en las tablas, muy común en aplicaciones de software libre.
Resultado de la ingeniería inversa: modelo MySQL
El modelo MySQL de la BBDD tras la realización de la ingeniería inversa es el siguiente.
Relaciones en MySQL Workbench
Si nos fijamos bien, las tablas que tienen dibujadas las relaciones es porque tienen esa información creada:
En cambio, aquí podemos ver una tabla que sí dispone de las columnas foráneas:
pero que no dispone de dicha información creada:
Por ese motivo, no dibuja las relaciones en el diagrama entidad relación.
Pincha en la imagen para saber más sobre este libro
Una vez que ya tenemos el diagrama completo, podremos imprimirlo y tomar anotaciones de cada una de las tablas así como colocarlas a nuestro gusto para que nos sea más fácil leer el diagrama.
Identificar qué campos están relacionados dentro del modelo
Además de conseguir el diagrama, hay dos cosas que me han gustado bastante de esta herramienta, aunque parezca una chorrada, son las siguientes.
Si nos posicionamos sobre una relación entre tablas, ésta se sombrea e indica qué campos de las tablas son los que están relacionados. Esto es muy útil porque visualmente no es fácil saber qué columnas están relacionadas. Hay muchas aplicaciones de Software Libre que utilizan una nomenclatura sencilla en los campos e incluso en algunas ocasiones les dan nombres genéricos porque se tratan de claves primarias que sirven para multitud de tipos de Entidades, por lo que el poder visualizar esto hace que sea más sencillo elaborar tu consultas SQL:
Modificar el tipo del diagrama del modelo de datos en MySQL Workbench
Y la otra cosa que también es muy útil, es que permite modificar el tipo de diagrama para que lo anterior sea más sencillo todavía. Desde el menú superior, en Model, y en el menú Relationship Notation podemos seleccionar el estilo del diagrama. Por defecto viene seleccionado "Crow´s Foot (IE)" pero si seleccionamos Connect to Columns podremos ver directamente las relaciones sobre los campos implicados.
El diagrama se mostraría de la siguiente manera, indicando además la cardinalidad de las relaciones con simbología más clara si no tenemos grandes conocimientos de UML:
La única pega que tiene es que no dibuja las relaciones con líneas horizontales y verticales. Utiliza líneas diagonales y el díbujo queda un poco más feo. Pero por lo menos ayuda a interpretar el esquema de la base de datos.
Conclusiones
Esta es una forma de poder obtener un diagrama de una base de datos existente. Si has creado una base de datos con MySQL y quieres dibujar su esquema, esta sería la forma más rápida.
Espero que os haya gustado y os sirva de utilidad.
Javier
Buenas tardes,
Consulta, instalé MySql y diseñé con worbench la base de datos. Ocurre que al hacer el Forward Engenner, genera la base pero las tablas solo con máximo 5 campos. Tienes alguna idea de que puedo estar haciendo mal.
Gracias ...
Atte
Carlos Zelada V
Hola Carlos. Pues es raro. Como no sea que tengas la versión de pago en vez de la versión community ¿?. Un saludo.
Hola Javier, he instalado la versión 8.0 (GPL) de todos los paquetes (MySQL, Shell, Router, Connector-ODBC, Cluster y Workbench) para MacOS Mojave, pero al realizar la 'Ingeniería Inversa' las relaciones entre tablas no son visibles. Puedes ayudarme?
Hol Andrés. Puede que no existan. Mira aquí Relaciones entre tablas en MySQL WorkBench. Un saludo.
Hola, ¿cómo puedo sacar el diagrama entidad-relación pero solo de ciertas tablas y no de todas?
Espero y me respondas, gracias.
Hola. Siempre puedes eliminar manualmente aquellas que no quieras del diagrama y quedarte solo con las que necesites. Un saludo.
sigue siendo muy útil, gracias desde el año 2019 😉
Me alegro que te haya sido de ayuda. Saludos!
Sabes de un sistema al cual le pueda hacer algo haci, tengo que hacer una base de datos con 120 tablas como minimo y no de donde sacarlas o de que sistema
Hola Alex. No entiendo tu pregunta. La herramienta te genera el diagrama por si solo desde una base de datos existente, o puedes usarlo para diseñar tu modelo de datos y te crea los scripts para crear las tablas. No sé si es eso a lo que te refieres. Un saludo.
pero este es el diagrama relacional o diagrama entidad relación, me cabe la duda, por favor si alguein es tan amable de corregirme si me equivoco en que opino en que es el diagrama relacional.
Sí Carwil, ya se comentó en anteriores comentarios. Saludos.
Buen día Javier!
Nos alegra mucho que te gustara nuestro producto!
Soy Armando Lopez del Equipo de MySQL WexQA y llamo mi atención el problema que tienes con las relaciones que no se están importando correctamente.
Podrías abrir un bug en: https://bugs.mysql.com/ adjuntando un "dump" de la base de datos (lo cual puedes hacer fácilmente con WB: https://dev.mysql.com/doc/workbench/en/wb-admin-export-import-management.html) y el modelo con el problema?
Muchas de ante mano.
Buenas tardes Armando. Encantando de tener a alguien de Oracle por mi blog. Es un placer ;). Este tutorial lo hice hace bastante tiempo. Tendría que volver a probar con la última versión a ver si me sigue pasando. Pero también te comento, que es lo que digo en el tutorial, es que hice el ejemplo con una BBDD de una aplicación de código abierto, a si que posiblemente también pueda ser por eso. No le daría mayor importancia. No te preocupes. Un saludo y muchas gracias por pasarte y escribirme, Javier!
Excelente!! muy práctico! me sirvió mucho! Muchísimas gracias.
Hola. ¿Esto solo genera una vista estática?, es decir, supongamos hago la ingeniería inversa y tengo mi 'mapa de ralciones', luego por ej modifico /elimino campos y/o relaciones de la table (pero desde otra herramienta).. se refleja esto? o debo importar nuevamente....
Un ejemplo de como me parece el mejor mapa de relaciones, es como se muestra en access 97, especifico este porque no se si hubo cambios en versiones recientes... pero era lo mas sencillo y directo y se actualiza en tiempo real... eliminando relaciones, actualizando cambpos et si cambiaron los datos..
Ahora mismo no te sabría decir si con MySQL WorckBench se puede hacer eso. Sé que con Oracle Data Modeler se puede, pero no sé si con esta. Un saludo.
Hola, el link de la aplicación de codigo abierto o la BBDD por favor. Gracias.
¿Te refieres a Dolibarr? Te sale en google en primer lugar. Tiene descarga gratuita. Un saludo.
Buenas. Cuando genero el diagrama y quiero generar a continuación el diccionario de datos, me sale vacío. ¿Tiene alguna idea de por qué puede ser?
Hola Victoria. No lo he hecho nuca, no te sabría decir. Un saludo.
una vez creado el diagrama, como puedo hacer que se guarde en un formato diferente (img, png, jpg, pdf)??
Hace mucho que no pruebo. Si no viene la opción, imprime la pantalla por trozos y los juntas después si lo necesitas con gran resolución. Al menos para salir del paso te puede valer. Un saludo.
Buena noche, muy buena explicación solo me gustaría hacer la aclaración que lo que hiciste es el diagrama de un modelo relacional, un modelo entidad relación tiene una apariencia diferente. pero excelente aporte a lo que se refiere a un modelo relacional
Gracias por este artículo, me fue de mucha ayuda