Generare un diagramma E-R mediante il reverse engineering di un database [chiuso]
-
06-07-2019 - |
Domanda
Nota: in origine questa domanda era stata posta per PostgreSQL, tuttavia la risposta si applica a quasi tutti i database che dispongono di un driver JDBC in grado di rilevare le associazioni di chiavi esterne.
L'interrogazione del dizionario dei dati PostgreSQL per le chiavi esterne e la relazione tra le tabelle è molto semplice, ma come posso usare queste informazioni per generare un grafico delle relazioni tra le tabelle?
Qualche consiglio sugli strumenti che può farlo?
MODIFICA: So che GraphVIZ / DOT può essere utile, tuttavia, non ho idea di come codificare un'app che genererebbe il grafico diretto File .DOT.
Soluzione
Altri suggerimenti
Microsoft Visio lo farà facilmente.
Almeno per Oracle eseguo questa query o chiedo al DBA di eseguirla e di inviarmi i risultati. I risultati possono essere copiati direttamente in un file di testo per essere interpretati dagli strumenti di Graphviz, ottenendo un diagramma del database.
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 query simile può essere creata facilmente per SQL Server, non so di MySQL, PostgreSQL e altri.
Dot è multipiattaforma e può essere utile.
DBVisualizer è anche un'alternativa gratuita e piacevole.