Datenmodellierung mit XML Schemata

Bisher habe ich in meinen Softwareprojekten zur Datenmodellierung immer Werkzeuge wie UML-Editoren oder die MySQL Workbench genutzt. Das sind tolle Hilfen, da man seine Ideen grafisch modellieren und hinterher in eine ausführbare Präsentation umwandeln kann. Entweder man erzeugt mit einem UML-Editor Programmcode oder mit einem Datenbanktool das SQL-Skript für das Datenbankschema.

Aktuell finde ich jedoch die Idee zur Modellierung der Daten XML Schemata zu nutzen, wesentlich interessanter. Mit einem leistungsfähigem Designer könnte man seine Modelle und Beziehungen darstellen und diese dann als XSD-Datei speichern. In der Softwarebranche wird dieses Verfahren in ähnlicher Weise schon seit Jahren genutzt. Konkret nutzt man einige OMG-Standards, um den Ansatz der Model Driven Architecture zu vereinheitlichen und damit plattformunabhängiger zu machen.

Die Object Management Group (OMG) hat eigene XML-Formate (XMI) entworfen, die von vielen UML-Tools geschrieben werden können. Leider hat man damit auch direkt einige Möglichkeiten die reine XML-Schemata bringen würden, verworfen oder zumindest schwer umsetzbar gemacht. Beispielsweise könnten mit XSD-Dateien viele Validierungsregeln deklarativ ausgedrückt werden. Für Zeichenketten-Felder können eingeschränkte Datentypen definiert werden, die auf einer RegEx basieren, außerdem kann man die Multiplizät einzelner Beziehungen genauer definieren.

MySQL Workbench

Modellierung einer N:M Relation mit MySQL Workbench

Dazu ein kleines Beispiel: In einer klassischen Datenbank gibt es keine Möglichkeit eine N:M Relations-Tabelle so anzulegen, dass immer mindestens genau ein Eintrag in der Relations-Tabelle enthalten ist. In XML-Schemata ist nicht nur das möglich, man kann sogar noch genauer festlegen, dass beispielsweise eine Relation mindestens ein und maximal drei Einträge beinhaltet. Bis dato musste diese Funktionalität in jeder Anwendung oberhalb der Datenbank neu programmiert werden. Auch XMI hält in diesem Punkt keine Lösung bereit, wenn ich mich nicht irre (andere Meinungen?).

Mein Wunsch für die zukünftige Datenmodellierung ist es möglichst viele Validierungsregeln bereits in das Model zu verlagern. Dies kann durch restriktive Datentypen oder genauere Multiplizitäten geschehen. Da die Datenmodelle praktischerweise als deklarative Daten vorliegen, kann basierend darauf sehr leicht automatisch Code erzeugt werden. Besonders vorteilhaft ist dies für verteilte Anwendungen, in einer Webanwendung beispielsweise könnte man automatisch Validierungscode für den Klient und den Server erzeugen.

xmlschema

Modellierung einer eingeschränkten (1-3) N:M-Relation mittels XSD

Zur produktiven Nutzung fehlen mir nur noch die entsprechenden Werkzeuge. Man braucht schon einen Designer, der auf einer höheren Abstraktionsebene als ein normaler XML Schema Designer arbeitet. Essentiell ist dann natürlich außerdem die Codegenerierung. Aber mit den DSL-Tools sollte man sowas ja alles schnell bauen können :-)

Ursprünglich gab es in Visual Studio 2005 mal einen bereits recht brauchbaren XML Schema Designer, doch den hat Microsoft aus der 2008′er Version rausgekommen. Einen Ersatz wird es wohl allerfrühestens mit VS 2010 geben.