Générer un diagramme E-R en procédant au reverse engineering d'une base de données [fermé]

StackOverflow https://stackoverflow.com/questions/185967

Question

Remarque: à l'origine, cette question était posée à PostgreSQL. Toutefois, la réponse s'applique à presque toutes les bases de données disposant d'un pilote JDBC pouvant détecter les associations de clé étrangère.

Interroger le dictionnaire de données PostgreSQL pour les clés étrangères et la relation entre les tables est très simple, mais comment puis-je utiliser ces informations pour générer un graphique des relations entre les tables?

Des recommandations sur les outils pouvant le faire?

EDIT: Je sais que GraphVIZ / DOT peut être utile, mais je ne sais pas comment coder une application générant le graphe dirigé. Fichier .DOT.

Était-ce utile?

La solution

Dot fait partie du package graphviz , qui est un outil extrêmement utile / utile. Bien sûr, vous aurez besoin de quelque chose pour générer les fichiers de points pour graphviz. J'ai déjà utilisé SchemaSpy une ou deux fois dans le passé, et cela fonctionne plutôt bien si les relations sont définies dans la base de données.

Autres conseils

Microsoft Visio le fera facilement.

Au moins pour Oracle, je lance cette requête ou demande au DBA de l'exécuter et de m'envoyer les résultats. Les résultats peuvent être copiés directement dans un fichier texte pour être interprétés par les outils de Graphviz, ce qui donne un diagramme de base de données.

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;

Une requête similaire peut être créée facilement pour SQL Server. Je ne connais pas MySQL, PostgreSQL et autres.

Le point est multiplateforme et peut être utile.

DBVisualizer est également une alternative gratuite et attrayante.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top