MID GmbH

              Leistungen          Kundenservice          Downloads            Unternehmen

Trennung der Datenmodellierung in konzeptionelles Schema und Datenbank-Schema

 Arnulf Zitzelsberger

 7 Dez 2016

BI/DWH

In dem Blogeintrag „Sind relationale Datenbanken ein alter Hut oder wie sieht Datenmodellierung heute aus?“ wurde die Trennung der Datenmodellierung in die Schichten nach ANSI diskutiert. Wir waren der Meinung, dass der Übergang vom konzeptionellen Schema in das Datenbank-Schema in vielen Fällen automatisch „in einem Guss“ erfolgen kann.

Aber wofür ist diese Trennung der Datenmodellierung eigentlich gut?

Konzeptionelles Schema = Grundlage

Wir gehen davon aus, dass der Modellierer des konzeptionellen Schemas sich mit dem Datenmodell hinreichend auseinandergesetzt und mit einem geeigneten Modellierungswerkzeug bereits festgelegt hat.

Die technischen Tabellen- und Attributnamen sind bereits als Vorschlag vorbelegt, oder können generiert werden. Bei dieser Generierung können Projekt- oder Unternehmensstandards und –konventionen ohne manuellen Eingriff im Datenbankschema zentral verwaltet und gesteuert werden.

Die Datentypen sind fachlich spezifiziert und können ebenfalls automatisch auf das DB-System übertragen werden. Die Schlüsselkandidaten sind gefunden und festgelegt.

Datenbank-Schema = Performance-Optimierung

Was bleibt dann überhaupt noch für das Datenbank-Schema? Wir stehen vor der Aufgabe, widersprüchliche Zielkonflikte zu lösen:

 

Zielkonflikte.png
Widersprüchliche Zielkonflikte eines Datenbank-Schemas

 

Genauer gesagt stellt sich die Frage, was für den Datenbank-Konzeptionisten dann noch an Modellierungsarbeit verbleibt. Eigentlich nicht viel!

Zu erledigen sind Performance-Optimierungen verschiedenster Art. Dabei ist aber darauf zu achten, dass man nicht über das Ziel hinausschießt:

  • Vom Zusammenführen von mehreren Attributen (z.B. aus Straße + Hausnummer ein Attribut erstellen) raten wir ab. Was ist, wenn sich der Straßenname ändert?
  • Werden redundante Felder zur Beschleunigung des Datenzugriffs eingeführt („Lookupattribute“), so muss man berücksichtigen, dass diese redundante Datenhaltung gepflegt werden muss. In vielen Fällen sind die Datenbanken schnell genug und das Risiko redundanter Daten ist nicht gerechtfertigt. Oft sind diese Attribute „Falltüren“, die Inkonsistenzen hervorrufen.
  • Das gleiche gilt für Denormalisierungen. Auch hier empfehlen wir dringend, die Vorteile eines normalisierten Modelles mit den Performanceverlusten abzuwägen.
  • Vertikale Fragmentierungen mit fachlichem Hintergrund (per Attributen, die sich oft/wenig ändern) können, sollten bereits im konzeptionellen Schema oder gar nicht gemacht werden. Fragmentierungen aus „Performancegründen“ sollten wirklich nur im Notfall stattfinden, da sonst ohne Zwang das Modell aufgeweicht wird.
  • Die horizontale Fragmentierung ist allerdings wirklich eine Aufgabe für den DB-Spezialisten und findet im internen Schema statt.
  • Nur die Einführung neuer Tabellen und Attribute verbleibt als grundsätzliche Aufgabe des Datenbank-Schemas, wenn diese keine konzeptionelle Entsprechung haben. Das Gleiche gilt für die die Vergabe von Triggern und Indices. Bei Triggern muss die Einschränkung betont werden, dass ein Trigger keine Mängel des konzeptionellen Schemas beheben darf.

Ergebnis

Es gibt keine wirkliche Trennung in der Datenmodellierung in ein konzeptionelles  Schema und dem Datenbank-Schema mehr.

Die grundsätzliche Idee verbietet im Grunde auch gar nicht, dass eine 1:1-Abbildung vorgenommen wird; die Abweichungen, die erlaubt sind, dienen der Lösung des klassischen Dilemmas  Speicherplatz versus Performance“.

Aber die Datenbanken sind schnell geworden. Und der Speicherplatz ist billig geworden.

Was bleibt, ist die fachlich korrekte, sichere und dauerhafte Pflege der Daten und des Datenmodells. Und hier tut man sich erheblich leichter, wenn ein ordentliches konzeptionelles Schema modelliert ist. Keiner tut sich einen Gefallen, im Datenbank-Schema noch einmal ein zweites Modell zu pflegen. Keiner tut sich einen Gefallen, Redundanzen im Datenbank-Schema einzuführen, die letztendlich niemand überblickt, die nicht wartbar und nicht nachvollziehbar sind.

Fazit: „Schlicht modelliert ist gut modelliert“

Und um die Ausgangsfrage zu beantworten:  Eine Trennung in zu viele Modelle bedeutet Aufwand und ist fehleranfällig.

Deshalb sollte man

  • viel Sorgfalt bei der Erstellung des konzeptionellen Schemas aufwenden
  • und das Datenbankschema direkt ohne viele Schnörkel daraus ableiten
Arnulf Zitzelsberger

geschrieben von Arnulf Zitzelsberger

Arnulf Zitzelsberger ist als Senior Consultant bei der MID GmbH tätig. Er beschäftigt sich seit über 20 Jahren im Datenbankbereich mit Datenmodellierung, Datenbankkonzeption und Datenarchitektur. Sein Schwerpunkt ist die Entwicklung von großen DWH-Projekten. Aktuell bereät er in einem Kundenprojekt der öffentlichen Verwaltung.

<< Zurück

Relevante Posts:

MID Blog

Hier bloggen Mitarbeiter der MID und eingeladene Gastautoren zu Themen rund um die Modellierung. Bleiben Sie auf dem Laufenden und lassen Sie sich per Email über neue Blogbeiträge informieren.

Neue Beiträge per Mail

Autoren

Interessieren Sie sich für ein Thema, dass wir bisher noch nicht behandelt haben? Oder haben Sie Fragen oder Anmerkungen zu einem bestimmten Beitrag?

Schreiben Sie uns gerne einen Kommentar, wir werden das Thema in der Zukunft aufgreifen.

Die neuesten Posts

MID Newsletter abonnieren