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.

È stato utile?

Soluzione

Dot fa parte del pacchetto graphviz , che è uno strumento dannatamente bello / utile. Ovviamente, avrai bisogno di qualcosa per generare i file dot per graphviz. Ho usato SchemaSpy una o due volte in passato e funziona abbastanza bene, a condizione che tu abbia definito le relazioni nel database.

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top