Kennen Sie das? Sie kommen in eine neue Projektgruppe, versuchen sich in das Projekt einzuarbeiten und analysieren zuerst das Datenbank-Schema.
Heute hatte ich einmal wieder diese glorreiche Aufgabe und musste feststellen, dass Mysql Workbench zwar ein Diagramm erstellen kann (Strg+R, Reverse Engineer), man aber nicht im Geringsten die Abhängigkeiten der Tabellen sehen kann. In meinem Fall waren es 90 Tabellen mit vielen Fremdbeziehungen:
An der Anzahl der Tabellen kann man zwar nichts ändern, aber aus diesem Layout heraus hat man keine Chance, die Abhängigkeitsstruktur der Tabellen zu erfassen.
Mein Lieblingstool für eine schöne Darstellung derartiger Abhängigkeiten ist yEd. Unter anderem unterstützt yEd das Graph-Format tgf. Hier ein kleines Beispiel einer tgf-Datei:
1 First node 2 Second node # 1 2 Edge between the two
Im ersten Abschnitt (bis ‘#’) sind die Konten mit einem eindeutigen Namen und mit Leerzeichen getrennt in einer Beschreibung aufgeführt. Im zweiten Abschnitt sind Kanten im Format “<ID-Knoten1> <ID-Knoten2> <Beschreibung>” enthalten.
Dieses Format ist für mich deshalb so gut geeignet, weil die Informationen in tgf ausreichen, um Abhängigkeiten darzustellen und dennoch das denkbar einfachste Format dafür verwendet wird.
In MySQL erzeuge ich mir das tgf zeilenweise mit folgendem Select:
SELECT concat(table_name, ' ', table_name) FROM information_schema.tables WHERE table_schema='<dbtable>' UNION SELECT '#' from dual UNION SELECT concat(TABLE_NAME, ' ', REFERENCED_TABLE_NAME, ' ', COLUMN_NAME, ' -> ', REFERENCED_COLUMN_NAME) FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_SCHEMA = '<dbtable>';
Das Ergebnis sieht zunächst sehr ernüchternd aus:
Zuerst sollten die Umrandungen am Knotentext angepasst werden. Das erreicht man mit “Werkzeuge/Knoten wie Beschriftung”:
Danach kann man jeden erdenklichen Layouter verwenden. Ich persönlich verwende gerne “Layout/Hierarchisch”:
Aber auch “Layout/Radial” zeigt eine gewisse Struktur in den Abhängigkeiten:
Ich persönlich sehe jetzt der nächsten DB-Analyse entspannt entgegen – und hoffe, Sie tun das auch!
Stefan Fenn
Chief Software Architect