Open Source Programme zum Reverse Engineering von Datenbanken/Erstellen von ER Diagrammen

Sowohl in der Arbeit und natürlich auch bei privaten Projekten, begegnet man häufig der Aufgabe eine bereits bestehende Datenbank per Reverse Engineering1 2 zu dokumentieren und zu analysieren. Die Gründe hierfür sind vielfältig:

  • Der Hersteller hat evtl. keine ordentliche Dokumentation mitgeliefert
  • Kollegen aus den Fachbereichen brauchen eine leicht verständliche Übersicht über die Struktur bestimmter Teile der Datenbank, um selbständig Reports bzw. Auswertungen erstellen zu können
  • Die Datenbank wird vom Hersteller nicht mehr weiterentwickelt, man möchte aber fehlende Eigenschaften, zusätzliche Tabellen, Trigger, Prozeduren, Funktionen usw. nachrüsten
  • Man möchte schlicht verstehen wie jemand anderer ein bestimmtes Problem gelöst hat

Es gibt sicher noch viel mehr Motive für ein Reverse Engineering. Im Folgenden stelle ich ein paar Open Source Programme vor, die mir selbst – sowohl privat wie auch beruflich – schon bei einigen Problemen hilfreich zu Seite gestanden haben.

Dia

Ähnlich Microsofts Visio ist Dia eine Software um Diagramme aller Art zu zeichnen. Das Programm ist Freeware und sowohl für Linux, wie auch für Windows erhältlich. Obwohl Visio einfacher zu handhaben ist, stellt Dia in meinen Augen eine für die meisten Probleme brauchbare Alternative dar. Mit dem Programm lassen sich UML-Diagramme (häufig auch genutzt um ER Diagramme zu erstellen), ER-Diagramme, Flußdiagramme uvm. gut zeichnen.
Ursprünglich von mir nur zum Zeichnen von übersichtlichen Diagrammen genutzt, kam dennoch schnell ein weiteres Problem auf. Was fängt man mit den hübschen Diagrammen an, wenn man danach die Datenbank bzw. die SQL Befehle von Hand erstellen muss und anders herum … warum muss man alles, was eigentlich sowieso schon im Datenbank Schema gespeichert ist (Tabellen, Spalten, Keys usw.) nochmal mühsam abzeichnen? Obwohl nicht unbedingt konvortabel helfen hier vielleicht einige der Tools weiter die sich auf der Linkseite von Dia3 finden. U.a. erwähnenswert sind:

  • OraSchemaDoc generiert aus Oracle Schemas eine Javadoc ähnliche HTML Übersicht, ebenso kann ein Schema in ein Dia UML Diagramm exportiert werden.
  • tedia2SQL generiert z.B. aus Dia Diagrammen SQL Scripte verschiedener Datenbankprogrammformate (Oracle, MS-SQL, Postgres, MySQL und einige mehr)

Ein Blick auf die verschiedenen Scripte der Linkseite von Dia zeigt, dass viele Tools Dia nur als Visualisierungstool verwenden. Gerade beim analysieren von bereits bestehenden Datenbanken liegen ja schon fast alle relevanten Informationen, also die Tabellennamen, Spaltennamen, Typ der Spalte und häufig auch die Relationen vor. Was also liegt näher, als sich ein paar Scripte zu besorgen, welche die Datenbank durchlaufen und daraus automatisch eine Übersicht erstellen?

SchemaSpy

Ähnlich dem bereits erwähnten OraSchemaDoc generiert SchemaSpy aus den Meta-Daten eines Schemas eine im Browser lesbare Dokumentation inklusive einer graphischen Übersicht der Relationen zwischen den Tabellen . Es handelt sich um ein Java Programm, das zur Visualisierung der Beziehungen das Tool Graphviz verwendet. Eine Verbindung zu den gängigen Datenbankprogrammen ist per JDBC Verbindung möglich. Eine graphische Bedienoberfläche (GUI) für das Kommandozeilen Programm ist unter http://www.joachim-uhl.de/projekte/schemaspygui/ erhältlich.
Ein Test-Output kann auf der Beispielseite4 von SchemaSpy eingesehen werden.

SchemaSpy dürfte derzeit eines der besten Open Source Tools im Bereich Dokumentation von Datenbanken sein.5

DBDesigner bzw. der Nachfolger MySQL Workbench6

Scripte können nur im Idealfall alle notwendigen Relationen aus dem System ziehen. Häufig ist es jedoch so, dass man den Output noch modifizieren möchte. Einige Relationen werden einfach nicht erkannt, z.B. da die Constraints fehlen oder die Spalten in den Tabellen unterschiedlich benannt wurden, andere Verknüpfungen fehlen, Bereiche innerhalb der Datenbank können nicht nach Wahl des Benutzers graphisch dargestellt werden und manchmal wäre es schön Anmerkungen zu hinterlegen.

In all diesen Fällen leistet das ursprünglich auf MySQL optimierte Programm DBDesigner gute Dienste. Anders als man vermuten könnte, ist über ODBC die Verbindung zu beliebigen anderen Datenbanksystemen möglich. Über den Menüpunkt Reverse Engineering können dann die gewünschten Tabellen bzw. Views importiert werden.
Danach ist es einfach Relationen, Anmerkungen und Datenbankbereiche je nach Wahl darzustellen. Owbohl das Programm ein manchmal zu Abstürzen neigt, hat es mir in diesem Bereich bis jetzt gute Dienste geleistet. Vor allem die graphische Aufbereitung ist recht ansprechend.

Der Nachfolger MySQL Workbench ist jetzt direkt auf der MySQL Webseite zu haben und hat derzeit den gleichen Funktionsumfang wie DBDesigner.

Eine mögliche OpenSource Alternative ist der System Architect 4.0.0. Das Programm wird zwar seit Ende 2005 nicht mehr weiterentwickelt, stellt aber ein mächtiges Tool zur Erstellung von UML und ER-Diagrammen dar und dient auch gleichzeitig als SQl Editor für die gängisten Datenbanksysteme. Reverse Engineering ist natürlich ebenfalls möglich.

Durchaus eine Alternative kann auch der Mogwai ER Designer sein. Das Programm bietet ebenfalls eine Funktion zum Reverse Engineering an, hat jedoch meiner Meinung nach eine umständliche Bedienung und die generierten graphischen Übersichten sind lange nicht so ansprechend, wie etwa die des DBDesigners.

  1. http://de.wikipedia.org/wiki/Reverse_Engineering []
  2. http://www.gnu.org/software/ferret/project/docs/dre_historical.pdf []
  3. http://live.gnome.org/Dia/Links []
  4. http://schemaspy.sourceforge.net/sample/ []
  5. http://www.oreillynet.com/onjava/blog/2006/04/the_2nd_most_useful_javaoracle.html []
  6. http://dev.mysql.com/downloads/gui-tools/5.0.html []

10 comments to Open Source Programme zum Reverse Engineering von Datenbanken/Erstellen von ER Diagrammen

  • Carsten Motzek

    Der Artikel ist ein guter Einstieg zum Thema “Programme für das Reverse Engineering”.

    Kannst du mir vielleicht sagen, wo ich Informationen finde, wie MySQL Workbench und PostgreSQL zur zusammenarbeit bringe.

    Vielen Dank

  • Hallo Carsten,

    zuerst dachte ich, Deine Frage wäre ganz einfach zu beantworten. Aber Pustekuchen … die derzeit zum Herunterladen angebotene Version 1.1.10 alpha von MySQL Workbench scheint einen Bug zu beinhalten.

    Normalerweise kannst Du über den Menüpunkt “Database/Reverse Engineering” bzw. “Database/Database Synchronisation” ein Fenster öffnen, in dem sich die Source Connection einstellen lässt. Für PostgreSQL ist kein direkter Eintrag vorhanden, aber ich vermute stark, dass im Fensterbereich “DBMS / Driver” bei “Database System:” einfach “Generic Jdbc” im Drop Down Menü ausgewählt werden müsste. Danach bei Connection Parameters einen Treiber über “Locate Driver on Harddisk” auswählen. Den passenden JDBC Treiber kann man unter http://jdbc.postgresql.org/ herunterladen.

    Leider kommt bei der Version 1.1.10 alpha nach Klick auf “Locate Driver on Harddisk” immer die Meldung “The application needs to be restarted”. Der Treiber kann also gar nicht geladen werden und damit ist es Essig mit MySQL Workbench und PostgreSQL.

    Der Bug ist für MySQl Workbench schon seit Ende Juni 2006 bekannt: http://bugs.mysql.com/bug.php?id=20720

    Im Moment kann ich Dir also nur raten den Vorläufer von MySQL Workbench (DBDesigner http://fabforce.net/dbdesigner4/) zu verwenden. Damit laesst sich das Reverse Engineering Tool über eine ODBC Verbindung mit PostgreSQl verbinden.

  • Hallo,

    da muss es doch noch irgendwelche funktionierenden Tools geben.
    Es gibt sonst auch noch den DBDesigner4 ( http://fabforce.net/dbdesigner4/), welcher anscheind keine unterstützung für mySQL 5 hat, stimmt das so?

    gruss
    thE_iNviNciblE

  • Joachim Uhl

    Im Prinzip stimmt das so. Der Nachfolger von DBDesinger4 ist MySQl Workbench, wie auch oben im Artikel beschrieben. An Freeware Tools gibt es dann gar nicht mehr so viele. Ich kenne noch TOAD für MySQL (http://www.quest.com/toad-for-mysql/). Da ich es aber noch nie verwendet habe, kann ich Dir nicht sagen wie es sich so in der Handhabung verhält. Toad für Oracle ist kostenpflichtig und wird von mir gerne verwendet. Von Toad gibt es auch einen Freeware Visual Database Designer (http://www.casestudio.com/enu/database_design_freeware.aspx), der aber max. 25 Entitäten verwalten kann …. für mehr braucht man wieder die kommerzielle Lizenz. Ausserdem hat die Freeware Variante keinen Wizard für’s Reverse Engineering.
    Es gibt auch noch einen Fork von DBDesigner4 (https://sourceforge.net/projects/dbdesigner-fork/) vielleicht lohnt der noch einen Blick.
    Ansonsten steht die Community soweit ich weiss, mit relativ leeren Händen da.Für weitere Tips wäre ich dankbar.

    Gruss

    Joachim

  • Hallo,

    danke für die Information

    DBDesigner4 als auch die Fork 1.4 arbeiten doch mit mySQL 5 zusammen, auch über ODBC (3306), muss wohl an dem einen speziellen Server liegen…

    ansonsten gibts hier noch eine nette liste, aber davon sind die meisten nicht so genial und ihnen fehlt diese Reversing Funktion…

    http://de.wikipedia.org/wiki/Liste_von_Datenmodellierungswerkzeugen

    Gruss
    Jan

  • Kommentarlos

    Hallo,

    auch ich möchte mich nur schnell bei Dir und Deiner Arbeit bedanken. Ich habe genau das von Dir beschriebene Problem (Existierendes Projekt mit großer DB und keine Vernünftige Doku) und habe genau nach so einer Information wie hier gesucht.
    Ich hoffe, diese Seite bleibt aktuell.

    Danke

    Kommentarlos

  • Martin

    Hallo,

    ich bin auf der Suche nach einem Tool mit dem ich ein ME/R Modell erstellen kann.
    Ich habe DIA benutzt nur leider fehlt das Symbol um die Faktentabelle 3D darstellen zu können.
    Mein ER Modell soll sich nach CHEN richten.

    Da ich bereits ein logisches Modell besitze, gibt es ein Tool mit dem ich aus dem logischen Modell ein semantisches generieren lassen kann ?

    Viele Grüße
    Martin

  • Alex

    Hallo,
    ich suche gerade nach einer Alternative zu PowerDesigner (PD) für unsere Oracle-DB. Die Migration zum MySql Workbench (WB) hat geklappt. PD beherrscht allerdings noch die Darstellung bestimmter definierbarer Ausschnitte aus einem DB-Model. In WB kann ich zu einer DB mehrere Diagramme erstellen, allerdings werden nur die Tabellen übernommen, nicht die Relationen. Weiß da jemand Rat?
    Besten Dank
    Alex

  • Andrew A. Sailer

    Vielen Dank für den Post, die Informationen hatte ich noch nicht.

  • Hallo

    Es gibt eine neue Version von Mogwai ERDesignerNG, welche sowohl 2D als auch 3D Modellierung und Visualisierung von Datenbankstrukturen von Oracle, MySQL, MSSQL, H2 und Postgres unterstützt.

    Das Programm kann hier heruntergeladen werden:

    https://sourceforge.net/projects/mogwai/

    Grüsse
    Mirko Sertic
    Project Admin

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>