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:

 

WOGRA Best Practice - Abhängigkeitsanalyse mit yEd

 

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:

 

WOGRA Best Practice - Abhängigkeitsanalyse mit yEd

 

Zuerst sollten die Umrandungen am Knotentext angepasst werden. Das erreicht man mit “Werkzeuge/Knoten wie Beschriftung”:

 

WOGRA Best Practice - Abhängigkeitsanalyse mit yEd

 

Danach kann man jeden erdenklichen Layouter verwenden. Ich persönlich verwende gerne “Layout/Hierarchisch”:

 

WOGRA Best Practice - Abhängigkeitsanalyse mit yEd

 

Aber auch “Layout/Radial” zeigt eine gewisse Struktur in den Abhängigkeiten:

 

WOGRA Best Practice - Abhängigkeitsanalyse mit yEd

 

Ich persönlich sehe jetzt der nächsten DB-Analyse entspannt entgegen – und hoffe, Sie tun das auch!

 

Stefan Fenn
Chief Software Architect