Werkzeug zur automatischen Generierung und Anordnung eines Entity-Relationship-Diagramms?

10344
user18352

Ich habe viele Werkzeuge gesehen, mit denen eine ERD aus einer vorhandenen Datenbank zurückentwickelt werden kann, aber ich konnte keine finden, mit der das Diagramm automatisch in vernünftiger Weise dargestellt werden kann. Die meisten von ihnen plumpen einfach alle Einheiten übereinander und nennen es einen Tag. Einige versuchen, die Entitäten zu organisieren, tun dies aber nicht besonders gut.

Gibt es ein Werkzeug, das die Struktur einer vorhandenen Datenbank rückgängig machen und diese dann automatisch so anordnen kann, dass sie leicht verständlich ist und die Organisation der Datenbank anzeigt? Wenn ich ein solches Werkzeug erstellen würde, würde ich die Länge der Linien minimieren, die Entitäten verbinden, die Anzahl der Linien, die sich kreuzen, minimieren und Gruppen verwandter Entitäten hervorheben. Ich würde auch versuchen herauszufinden, welche Tabellen Nachschlagetabellen sind, welche Mana-zu-Viele-Zwischentabellen usw. sind, und die Entitäten so auslegen, dass diese Rollen für eine Person, die das Diagramm betrachtet, offensichtlich sind.

Ich habe nicht genau die Finanzierung, um das oben genannte zu erreichen, aber ich habe etwas Geld, um ein solches Werkzeug zu kaufen, wenn es gut ist.

Edit: Ich sollte erwähnen, dass ich versuche, eine Datenbank mit mehr als 100 Tabellen darzustellen, also möchte ich so viel wie möglich davon automatisieren. Die Datenbank ist nicht eine, die ich sehr gut kenne. Ich schaue also aus der Betrachtung des Diagramms und lerne das, was ich weiß, in ein Diagramm (was scheinbar die meisten Diagrammtools sind).

6
Kennt jemand ein Werkzeug, das das Diagramm über einen gewichteten Graphen oder einen ähnlichen Algorithmus anordnet, um Überlappungen zu reduzieren? Chris Nava vor 14 Jahren 0

4 Antworten auf die Frage

2
Pridkett

Solange Sie Fremdschlüssel in Ihrer Datenbank haben, habe ich festgestellt, dass Visio einen guten Job macht. Ich hatte eine Postgresql-Datenbank mit etwa 150 Tabellen aus vier verschiedenen zusammengeführten Projekten, die über verschiedene Fremdschlüssel miteinander verbunden waren, und es war eine großartige Aufgabe, alle Beziehungen zu extrahieren und die Tabellen zu gruppieren. Das Diagramm hatte trotz umfangreicher Fremdschlüssel nur wenige überlappende Linien. Aufgrund der Fremdschlüssel waren die logischen Elemente gut zusammengefasst, es war klar, aus welchen Datenbanken die meisten Tabellen stammen.

Ich habe auch Viso ausprobiert. Mein Problem ist vielleicht, dass die Beziehungen in der Datenbank * tatsächlich * ein durcheinandergebrachtes Durcheinander sind und genau durch das durcheinandergebrachte Durcheinander dargestellt werden, das ich bekomme ... user18352 vor 14 Jahren 1
Ich habe auch visio dazu benutzt (nur bei MS-Access-Dateien) Der Prozess ist einfach genug, aber wenn Ihre Quellendatenbank ein Chaos ist, wie Sie sagen, bin ich nicht sicher, ob eine Software dies automatisch für Sie erledigen wird perfekt. Das Gute an visio ist, dass Sie das ER-Diagramm ändern und die Datenbank mithilfe von VBA reproduzieren können: http://www.eggheadcafe.com/software/aspnet/32121825/forward-engineer-visio-er.aspx DaveParillo vor 14 Jahren 1
2
Sualeh Fatehi

SchemaCrawler generiert mithilfe von GraphViz automatisch Diagramme aus Datenbanken. Die wahre Stärke von SchemaCrawler ist das

  1. Sie können reguläre Ausdrücke verwenden, um die Tabellen und Spalten im Diagramm zu begrenzen. Dies macht es besonders nützlich, wenn Sie eine unbekannte Datenbank untersuchen
  2. Mithilfe der Funktion "schwache Zuordnungen" können Sie Beziehungen zwischen Tabellen erkennen, die nicht als Fremdschlüssel ausgedrückt werden

Laden Sie einfach den SchemaCrawler herunter, platzieren Sie ihn irgendwo in Ihrem Java-Pfad und führen Sie ihn wie folgt aus:

java -classpath $(echo ../../_schemacrawler/lib/*.jar | tr ' ' ':') schemacrawler.Main -server=mysql -database=your_database_in_localhost -user=your_user -password=your_password -infolevel=maximum -command=graph -outputformat=pdf -outputfile=my_database_diagram.pdf $* 

Beachten Sie auch, dass Sie verschiedene Dateiformate wählen können

  • png
  • jpg
  • Punkt
  • svg

und viele andere.

Sie können auch entscheiden, ob Fremdschlüsselnamen, Spaltenordnungsnummern und Schemanamen angezeigt werden sollen, indem Sie die folgenden Eigenschaften in der SchemaCrawler-Konfigurationsdatei schemacrawler.config.properties festlegen.

  • schemacrawler.format.show_ordinal_numbers = true
  • schemacrawler.format.hide_foreignkey_names = true
  • schemacrawler.format.show_unqualified_names = true

Weitere Informationen und Beispiele finden Sie unter http://schemacrawler.sourceforge.net/diagramming.html

0
Paxxi

hängt wahrscheinlich davon ab, welche Datenbank Sie verwenden. Ich habe dies mit Microsoft SQL Server Management Studio ausprobiert, und das Diagramm wird erstellt und angeordnet. Ich kann nicht wirklich sagen, ob es Ihren Anforderungen entspricht, aber die Express Edition ist kostenlos, daher ist es immer möglich, es auszuprobieren.

Das von Management Studio erstellte Datenbankdiagramm ist wahrscheinlich das Beste, das ich je gesehen habe, aber es verarbeitet immer noch nicht mehr als 100 Tische. Es wird ein Durcheinander. user18352 vor 14 Jahren 0
0
Pops

Ich habe Druid dafür in der Vergangenheit benutzt und war sehr zufrieden. Es ist Open Source / Free und Sie können die Objekte im Diagramm verschieben. Die Benutzeroberfläche kann jedoch gewöhnungsbedürftig sein.

Aus der Beschreibung klingt es nicht so, als würde Druid das automatische Layout ausführen. user18352 vor 14 Jahren 0
Wie planen Sie, die Tabelleninformationen in das Programm zu laden? Pops vor 14 Jahren 0
Reverse Engineer aus einer vorhandenen Datenbank. user18352 vor 14 Jahren 1
Ja, ich habe das in Ihrer ursprünglichen Frage gesehen, aber wie? Access-Datei importieren? Dem Programm die Anmeldeinformationen an die Datenbank mitteilen? Es ist nicht klar, was Sie mit "Reverse Engineering" meinen. Pops vor 14 Jahren 0
Tut mir leid. Mit Reverse Engineer meinte ich, dass sich das Programm in der Datenbank anmeldet, um die Tabellenstrukturen und -einschränkungen abzurufen. user18352 vor 14 Jahren 1