software online exercises examples database diagram entity-relationship

database - online - Genere un diagrama de ER mediante la ingeniería inversa de una base de datos



entity relationship diagram uml (5)

Dot es parte del paquete graphviz , que es una herramienta bastante genial / útil. Por supuesto, necesitarás algo para generar los archivos de puntos para graphviz. He usado SchemaSpy una o dos veces en el pasado, y funciona bastante bien, siempre que tenga las relaciones definidas en la base de datos.

Nota: Originalmente se le solicitó a PostgreSQL esta pregunta, sin embargo, la respuesta se aplica a casi cualquier base de datos que tenga un controlador JDBC que pueda detectar asociaciones de clave externa.

Consultar el diccionario de datos PostgreSQL para llaves foráneas y la relación entre tablas es muy sencillo, pero ¿cómo puedo usar esa información para generar un gráfico de las relaciones entre las tablas?

¿Alguna recomendación sobre herramientas que pueden hacer esto?

EDITAR: Sé que GraphVIZ / DOT puede ser útil, sin embargo, no sé si tengo alguna idea sobre cómo codificar una aplicación que generaría el archivo .DOT del gráfico dirigido.


Microsoft Visio hará esto fácilmente.


El punto es multiplataforma y puede ser útil.


Al menos para Oracle, ejecuto esta consulta o le pido al DBA que la ejecute y me envíe los resultados. Los resultados se pueden copiar directamente a un archivo de texto para ser interpretados por las herramientas de Graphviz, lo que da como resultado un diagrama de base de datos.

SELECT ''"'' || Source.TABLE_NAME || ''" -> "'' || Destiny.TABLE_NAME || ''";'' AS For_GraphViz FROM dba_constraints Source JOIN dba_constraints Destiny ON Source.owner=''my_db_owner'' AND Destiny.owner=''my_db_owner'' AND Source.CONSTRAINT_TYPE=''R'' -- theoretically this validation should be redundant -- AND Destiny.Constraint_type = ''P'' AND Source.R_CONSTRAINT_NAME = Destiny.CONSTRAINT_NAME ORDER BY Source.TABLE_NAME, Source.CONSTRAINT_TYPE, Source.CONSTRAINT_NAME , Source.R_CONSTRAINT_NAME, Source.INDEX_NAME;

Una consulta similar se puede crear fácilmente para SQL Server, no se conoce acerca de MySQL, PostgreSQL et al.


DBVisualizer es también una alternativa libre y agradable.