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 conseguirlo, debemos utilizar MySQL Workbench. Es una aplicación gratuita de MySQL de Oracle y que podemos descargar desde aquí.
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
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:
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.
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.
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.
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:
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 unica 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.
Espero que os haya gustado y os sirva de utilidad.
Genial . me sirvio de mucho.
existe alguna forma de relacionar las tablas de un software libre en este caso estoy trabajando con OTRS y las tablas me salen sin ninguna relacion.
Lo único que se me ocurre es que añadas tu mismo las Foreign Keys: http://dev.mysql.com/doc/refman/5.0/es/innodb-foreign-key-constraints.html No entiendo porqué relacionan la mitad de las tablas y la otra mitad no. Ya me ha pasado con otras aplicaciones Open Source. Un saludo.
Muchas gracias. Hice esto hace unos años y no recordaba cómo se hacía.
Con tu post he podido refrescar la memoria e intentar avanzar en un proyecto.
Lo compartiré por Google+, Twitter y LinkedIn.
Muchas gracias. Me alegro que le haya sido de utilidad. Saludos.
muchas gracias, bien explicado
Muchas gracias, estoy recien llegada al mundo MySQL y necesitaba ver que campos estaban relacionados en mi BD. Me ha sido de gran utilidad.
Me alegro que te haya sido de utilidad 😉
Muchas gracias. Ha sido de mucha utilidad. Si se puede me podrías decir como hago para realizar al revés? es decir. Yo hago el diagrama primero y quiero que ese diagrama se convierta en las tablas con las llaves correspondientes y relaciones.
Hola John Jairo. Una vez que tengas abierto el diagrama, en el menú Database, en vez de seleccionar Reverse Engineer, habría que seleccionar Forward Engineer. Un saludo, Javier.
Interesante. No encontraba cómo hacerlo. Gracias Javier.
Me sirvio mucho porque nunk lo habia trabajado asi
man no tienes una base de datos para agregar como sakila que viene con workbench
No he usado ninguna BBDD de muestra como la que comentas. He utilizado una de las que tenía instalada en local de cualquier aplicación Open Source (WordPress, Dolibarr, Prestashop,…). Puedes usar cualquiera para hacer la reingeniería inversa. Un saludo.
man cuales son los criterios para modelar una base de datos de cero, es decir identificar tablas y relaciones.
Eso no se puede explicar en pocas palabras. Busca un libro de Bases de Datos Entidad-Relación para poder coger conceptos. Son muchos y no se pueden explicar así como así. Un saludo.
muy hermoso les aseguro que es de gran ayuda para mi y muy buena explicación mil gracias y bendiciones.!!
Man podrias recomendarme unos libros que ati te hayan servido para aprender base de datos y todo esto de las relaciones de las tablas? De antemano Muchas gracias 😀
Lo que aprendí fue lo que me enseñaron en la universidad. No tengo libros de referencia para poder recomendarte. Lo siento.
Hola, y ante todo darte las gracias por el tutorial.
Mi duda es, si es posible meter datos en las tablas desde el schema y que posteriormente los vea desde phpmyadmin.
He estado haciendo pruebas y sólo puedo hacerlo desde la conexión. Es decir los datos que introducco en la instancia del workbench si llegan a phpmyadmin, pero los datos que introducco en las tablas del schema no se ven ni siquiera en la parte de conexiones.
gracias de antemano y sigue con los tutos que ayudan mucho.
Hola. Desde la propia aplicación, en el propio resultado de la select, si haces doble clic sobre el campo puedes editar su valor. Si no lo ves en phpmyadmin puede ser porque tengas desactivado el auto-commit en algún sitio. No sé si te refieres a eso. Un saludo.
ME SIRVIOOOOOOOOO!
GRACIAS!
Muchas gracias por el tutorial!!!!
Muchas gracias por el tutorial, me sirvio mucho.
Me alegra que te haya sido de ayuda. Un saludo.
gracias bro, encontre lo q buscaba. Buena informacion
Me alegra que te haya sido de ayuda. Un saludo.
no tengo maneras de decir gracias porque mayormente las personas copian la misma informacion una y otra vez, no lograba encontrar como generar los esquemas desde mis tablas creadas
Me alegra que te haya servido. Saludos.
Gracias por el aporte, me sirvio mucho!
Este post es el que necesitaba, en serio, gracias.
Me alegra que te haya sido de utilidad. Gracias.
Hola, como puedo generar un script de creación de Base de Datos a partir de un diagrama creado? Gracias.
Con el diagrama abierto te vas a File > Export > Forward Engineer SQL, y sigue los pasos del asistente. Un saludo.
Hola que tal, una duda no entiendo como en mysql directamente se hacen las relaciones entre tablas
Hola. Tienes que crear las Foreign Keys. Te dejo el enlace con la ayuda: https://dev.mysql.com/doc/refman/5.7/en/create-table-foreign-keys.html
Excelente, una aclaración ese es un modelo relacional, el modelo entidad relación es diferente
Cierto, Camilo. Gracias!
Amigo mio es lo mismo modelo entidad relación que modelo relacional? ? Porque lo que crea workbench es modelo relacional y no entidad relación que son distintos. Si sabes la manera de hacer un entidadrelacion apartir de una base de datos agradezco que pase el aporte… por todo lo demas muy buena información aqui. A excepción del error ya comentado
Hola HeckThor. Le di la razón a Camilo por la errata. Si lo llamo Entidad-Relación es por darle más peso al nombre del modelo, ya que sí representa las Entidades. Sé que no es el nombre apropiado según la teoría pero para mí para es más descriptivo y me gusta así aunque esté mal dicho. En cuanto a cómo convertir un modelo entidad relación a un modelo relacional, creo que no existen herramientas para eso. Para eso existe la asignatura de BBDD que se da en la carrera de informática. Si tu problema es representar los rombos del diagrama, suelen equivaler por regla general en una tabla con las primary keys y foreing keys de las tablas que están unidas por el rombo. Después cada Entidad representada con un rectángulo queda como tal en el diagrama entidad relacional. Eso es a nivel general y explicado muy básicamente. Pero como te digo, para esto existe una asignatura por lo que hay mucha teoría detrás. Es una asignatura muy bonita e interesante. Te animo a que busques una academia ya que aprenderás todo lo necesario para diseñar tus modelos de BBDD. Un saludo.
Hola Javier , explico mi problema.
He creado un modelo, y las tablas que requiero y generado un fichero extensión mwb, bak y sql. Ahora cuando ejecuto la opción “Reverse engineer” y llego a la pantalla que hay que indicarle el “Schema” no me aparece a pesar de tenerlo.
Que he hecho mal hasta llegar a este punto.
Muchas gracias
No sé si te entiendo bien Raul. Este tutorial es para generar el diagrama desde una base de datos existente. En la segunda captura del tutorial, ¿consigues conectarte a la BBDD? Un saludo.
Excelente aporte. Gracias
muito obrigado pela ajuda.
hola que tal hay alguna manera de importar mu base de datos de MySQL 5.5 a MySQL WorkBench? es que no alló como.
muchas gracias si es que me contestas.
Hola Fabian. MySQL WorkBench no es un motor de base de datos, es un cliente. En MySQL WorkBench tu configuras la cadena de conexión de la base de datos a la que te quieres conectar y ya puedes lanzar consultas sobre ella. Pero como tal, no es un motor de base de datos. Es lo mismo que phpMyAdmin, es otro cliente de base de datos para que te hagas una idea. Un saludo.
Que tal amigo buenas tardes!
Tengo un problema y necesito de tu ayuda, tengo la version 6.3 CE de worckbench y al momento de crear mi diseño entidad relacion ves que muestra todas las tablas de la bases de datos y al momento de poner el puntero en el titulo de cada tabla aparece un recuadro donde te muestra todas las relaciones que tiene dicha tabla pero ahora que lo vuelvo a crear ya no me aparece y me gustaria saber por que ya que es de gran ayuda ese recuadro.
Gracias Saludos.
Las puedes ver en la tabla que aparece abajo como ves en las imágenes que he puesto. Las imágenes que he publicado son de la misma versión que indicas. El recuadro que comentas creo que a mí tampoco me sale. Un saludo.
Ok muchas gracias Javier por lo que veo es la version de workbench, y es que ya me habia acostumbrado a usar ese recuadro, ahora tendre que usar el que muetras en las imagenes rayos…
Muchas gracias saludos.
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.