Datenmodellierung

Zusammenfassung
Was ist Datenmodellierung?
Denkweise Fachanwender gegenüber IT-Spezialist
Entstehung eines Datenmodells an einem Beispiel
Exkurs: Kleine Katastrophen bei der Datenmodellierung


vgl. hierzu Darstellungsformen für Daten, Bildschirmformualare und Prozesse
vgl. auch Benutzerkontakt (dort vor allem das Interview)

Zusammenfassung

Erklärt werden die Grundlagen der Datenmodellierung inkl. der wichtigsten Terminologie, wobei auf die unterschiedliche Sichtweise von Fachanwendern und IT-Spezialisten eingegangen wird. Zur Veranschaulichung wird ein einfaches Beispiel einer privaten Ausleihe von Büchern verwendet und in Form eines Dialoges zwischen zwei Personen dargestellt. Das Beispiel wird konsequent verfolgt, sodass es auch im Rahmen eines echten Anforderungsdokuments nutzbar wäre. Im Beispiel werden typische Kommunikationsformen, Gedankengänge, Fragetechniken, Problemstellungen und Lösungswege beschrieben, wie sie sich auch im echten Leben darstellen.

Was ist Datenmodellierung?

Datenmodellierung, insbesondere die physikalische Modellierung und Optimierung für eine relationale Datenbank, ist eine Wissenschaft für sich. Auf diesen Seiten wird nur eine relativ pragmatische Sicht der logischen Datenmodellierung vorgestellt, wie sie für eine Anforderungsanalyse notwendig ist und auch von einem Fachanwender bzw. Nicht-IT-Spezialisten verstanden werden kann. Auf hierarchische Datenbanksysteme wird nicht eingegangen. Routinierte Datenmodellierer und DB-Administratoren mögen mir die teilweise oberflächliche Betrachtungsweise und den freizügigen Gebrauch der Fachterminologie sowie die Abweichungen von der üblichen Symbolik vergeben, es gibt hierzu bereits genügend Material im Web und in der Fachliteratur.

Wenn man ein IT-System oder einen Geschäftsvorfall betrachtet, so lassen sich verschiedene Sichtweisen unterscheiden. Eine davon ist die Datensicht. Daten werden eingegeben, verarbeitet, ausgegeben. In irgendeiner Weise werden die Daten auch abgespeichert und können danach gesucht werden. Diese Speicherung, d.h. die physikalische Repräsentation der Daten, unterliegt meist einer wohldefinierten Struktur, die vor Beginn der Entwicklung eines Systems fixiert sein muss, damit eine Suche auch ohne weiteres möglich ist. Meist deshalb, da bei mangelhaften Zeitvorgaben, gewachsenen Systemen oder Datenmodellierung durch Nicht-Experten eher von einer Ansammlung von Tabellen gesprochen werden muss, nicht von einem Datenmodell. Auf dieser Struktur setzen Geschäftsprozesse oder Verarbeitungsprozeduren auf.

Unter Daten versteht man einzelne Attribute wie den Namen eines Kunden, seine Telefonnummer oder ähnlich einfache Dinge. Unter einem Datenobjekt versteht man die Zusammenfassung mehrerer solcher Attribute. Ein Kunde, bestehend aus Name und Kontaktinformation, kann solch ein Objekt sein; oder eine Bestellung bestehend aus Artikelnamen, Artikelnummern, Stückzahl, Preis, Bestelldatum und Bestellnummer mit einer Kundenzuordnung kann ein anderes Datenobjekt sein. Die Bestellung hat eine Zuordnung zu einem Kunden, oder anders formuliert hat sie eine Beziehung bzw. Relation zum Kunden.

Ein Datenmodell besteht aus Datenobjekten und Relationen zwischen den Datenobjekten. Innerhalb des Modells werden die Datenobjekte bis auf einfache Attribute herunter gebrochen. Für diese Attribute können bestimmte Randbedingungen definiert werden, z.B. dass sie unique (eindeutig) sein müssen (eine Kundennummer wird niemals für zwei verschiedene Kunden vergeben werden, sondern immer nur einmalig existieren) oder dass das Attribut befüllt sein muss (z.B. wird man immer einen Kundennamen verlangen und es ist auch zu erwarten, dass jeder Kunde einen Namen hat, aber eine Telefonnummer muss er nicht unbedingt haben oder angeben). Die Relationen zwischen den Objekten werden quantifiziert. Z.B. kann ein Kunde mehrere Bestellungen gleichzeitig aufgeben, jede Bestellung wird sich aber genau einem Kunden zuordnen lassen. - Innerhalb der IT spricht man von einem Entity Relationship Model, kurz ERM oder ER-Model.

Das physikalische Ergebnis eines solchen ERM spiegelt sich in einer relationalen Datenbank wider. Eine relationale Datenbank soll zumindest dem theoretischen Ansatz nach ohne Redundanzen sein, d.h. jede Information wird nur ein einziges Mal in der Datenbank vorhanden sein. Um dies zu erreichen, gibt es eine formalisierte Technik, mit der ein Datenmodell normalisiert wird, wie man im IT-Jargon sagt. Es gibt verschiedene Normalformen, die alle Aussagen über Redundanzen enthalten. Die 3. Normalform (kurz 3nf) ist hier das passende Schlagwort, und hier endet die Welt für den normalen Business Analysten und für Fachanwender; höhere Normalformen sind nur von wissenschaftlicher Bedeutung. Der nächste Schritt ist dann die Denormalisierung, um das Datenmodell pragmatisch zu vereinfachen. Redundanzen werden u.U. eingeführt, um Performance-Schwierigkeiten zu begegnen: damit hat allerdings weder der Fachanwender, noch der Business Analyst zu tun, das macht der Datenbankentwickler.

Als Fachanwender müssen Sie zwar kein Datenmodell selbst bauen können, Sie sollten aber sehr wohl ein ERM lesen können, um sich kompetent an der Spezifikation eines IT-Systems zu beteiligen. Die Datensicht auf das von Ihnen gewünschte System müssen Sie natürlich verstehen, wie sonst wollen Sie verifizieren, dass die dokumentierten und in einem Datenmodell dargestellten Anforderungen auch das wiedergeben, was Sie sich vorstellen?

Ein Business Analyst baut entweder ein logisches Datenmodell mit einem geeigneten Werkzeug selbst, das dann vom Datenbankspezialisten als Vorlage für ein physikalisches Datenbankmodell genutzt wird. Oder er beschreibt das Modell lediglich und modelliert das physikalische Modell gemeinsam mit dem Datenbankspezialisten. Ich bevorzuge und empfehle prinzipiell die zweite Variante, einerseits geht das schneller und billiger, andererseits gibt es keine Verständnis- und Verständigungsprobleme. Zudem können kritische Stellen im Modell, die zu Performance-Problemen führen können, vom Datenbankspezialisten erkannt und an den Business Analysten sofort kommuniziert werden, der dann evtl. sofort seine Prozesse dahingehend überprüft und ggf. auch modifiziert.

google zu Datenmodell oder Datenmodellierung,
google zu Entity Relationship Model
google zur 3. Normalform oder 3nf

Denkweise Fachanwender gegenüber IT-Spezialist

Fachanwender denken am ehesten in Datenobjekten. Sie sprechen vom Kunden, vom Auftrag, von einem Provisionsmodell, von einer Aktie, einem Wertpapierdepot etc. Was sich hinter dem Objekt im Detail verbirgt, ist dem Fachanwender klar, auch wenn er dies nicht bis aufs letzte Attribut ausführt. Eine Denkweise in Relationen besteht nur vage, eher wird in Vorgängen gedacht. Ein Kunde erteilt einen Auftrag, er erhält eine Provision, ein Anleger ordert eine Aktie.

Diese Denkweise ist für ein IT-System ungenügend. Ein IT-Spezialist denkt eher in Tabellen, die über konkrete Attribute zu anderen Tabellen in Beziehung stehen. Kunden werden in einer Kundentabelle abgebildet, ein (für den Fachanwender nicht sichtbares) Attribut ist ein interner Primärschlüssel, den man sich im weiteren Sinne wie eine eindeutige und für alle Zeiten gleiche Kundennummer vorstellen kann. Ein Auftrag wird über diesen Kundenprimärschlüssel der Kundentabelle zugeordnet und hat seinerseits einen Auftragsprimärschlüssel. In einer dritten Tabelle werden Artikel aufgelistet, über eine vierte werden Artikel mit Aufträgen verbunden. Ein IT-Spezialist betrachtet Zusammenfassungen verschiedener Tabellen als Datenobjekt.

Spricht ein Fachanwender von einem Auftrag, so stellt er sich darunter ein Blatt Papier vor, auf dem die Anschrift des Kunden, seine Kundennummer, die bestellten Artikel mit Artikelname, Bestellnummer und Preis sowie das Datum der Bestellung steht. Im Datenmodell steht aber beim Auftrag kein Kundenname sondern nur ein Verweis auf die Kundentabelle, aus der der Name bei Bedarf gelesen wird. Das Datenobjekt ist nur eine Sicht über mehrere Tabellen.

Entstehung eines Datenmodells an einem Beispiel

Schritt 1: Was erzählt der Auftraggeber freiwillig?

Im ersten Schritt verlässt sich der Analytiker auf die Aussagen seines Kunden. Der Kunde kommuniziert dabei im Sinne der IT fast immer zwei Informationen:
  1. eine unvollständige, meist auch falsche hohe Sicht der Datenobjekte.
  2. eine Reihe von Details zu den Datenobjekten. Die Details geben im Normalfall das Datenobjekt nicht vollständig wieder, d.h., dass Attribute fehlen. Häufig sind diese Details oder Attribute falschen Datenobjekten zugeordnet, fast immer sind Informationen redundant, und manchmal ist die Sichtweise auch einfach nur inkorrekt.
Stellen wir uns jemanden vor, sagen wir Lothar der Leser, der eine kleine Bibliothek hat und seine Bücher an Bekannte und Bekannte von Bekannten verleiht. Leider verliert er gelegentlich den Überblick und die Bücher verschwinden auf nimmer wiedersehen. Lothar will ein kleines Programm, das ihm die Verwaltung übernimmt. Unvorsichtigerweise sagt sein Freund Paul der Programmierer zu, ihm dabei zu helfen.

Bislang organisiert er seine Ausleihe dadurch, dass er sich Karteikarten anlegt, die folgende Informationen enthalten: Buchtitel und Name des Entleihers. Alles andere hat Lothar im Kopf, die Kontaktinformationen seiner Bekannten im Notizbuch. Bei Bekannten von Bekannten notiert er noch eine Telefonnummer. Gelegentlich schaut er die Kartei durch und ruft seine Bekannten an, sofern er noch ihre Telefonnummer lesen kann, wenn er seine Bücher wieder haben will. Vielleicht schickt Lothar auch eine EMail, wenn er eine Adresse hat, so klar ist das aber nicht. Bekommt er ein Buch zurück, so wird die Karteikarte weggeworfen. Während eines ersten Gesprächs zwischen Paul und Lothar  zeigt sich, dass Lothar einige tausend Bücher hat, die er am liebsten noch nach Schlagworten katalogisieren will. Seinen näheren und ferneren Bekanntenkreis will er ebenfalls gleich in das neue System einbauen, also eine kleine Adressverwaltung zusätzlich.

In erster Näherung lassen sich zwei Datenobjekte identifizieren: Bekannte und Bücher. Der einzige sichtbare Zusammenhang zwischen beiden ist, dass eine Entleihung stattfindet. Ohne sich um irgendwelche Standard-Darstellungsformen zu kümmern, lässt sich folgendes Bild zeichnen:

Datenmodell1

Es ist ungefähr das, was Lothar erzählt hat. Die Schlagworte sind Paul verdächtig, ebenso die Bekannten der Bekannten. Aber bislang hat Paul noch keinen Grund, sich darüber den Kopf zu zerbrechen. Die Schlagworte können ganz einfach in einem String aufgelistet werden, der ein Attribut der Bücher ist; dass jemand ein Bekannter eines Bekannten ist, kann in einem Bemerkungsfeld oder vielleicht in Klammern hinter den Vornamen geschrieben werden.

Schritt 2: Was muss erfragt werden? Wie erarbeiten wir eine hohe Sicht auf die Datenobjekte?

Die zu stellende Frage schlechthin ist, nach welchen Kriterien die gespeicherten Daten gesucht werden sollen. Im weiteren Sinne ist die Suche auch eine Form der Filterung oder Sortierung.

Die Schlagworte und die Bekannten der Bekannten sind, wie gesagt, verdächtig, es lohnt sich also nachzufragen. Wozu, so fragt Paul Lothar, will er die Schlagworte überhaupt benutzen? Die vage Antwort lautet dahingehen, dass er die Bücher katalogisieren will. Er benutzt hier offenbar einen Begriff, der für ihn eine sehr klare Bedeutung hat, die aber dem Informatiker verschlossen bleiben kann. "Willst Du die Bücher also nach Schlagworten suchen? Oder sollen sie nur angezeigt werden?" fragt Paul nach. Die Frage ist nicht zu unterschätzen, denn wenn etwas nicht gesucht werden soll, ist die Abspeicherungsform ziemlich egal. Die Arbeit für Paul wird um so leichter, je weniger Suchkriterien gegeben sind.

"Natürlich will ich danach suchen!" Jetzt wird die Angelegenheit klarer. Natürlich will er danach suchen. Für ihn, für Lothar den Bücherwurm-Fachanwender, ist dies die natürlichste Angelegenheit der Welt, so natürlich, dass er gar nicht daran denkt, dass jemand anders nicht auf dieselbe Idee kommen könnte. Nun: Paul arbeitet gerade an einem Datenmodell, deshalb macht er sich eine Notiz Anwendungsfall suchen von Büchern nach Schlagworten nicht vergessen. Er will natürlich suchen. "Wonach willst Du noch suchen?" ist eine konsequente Folgefrage. "Autor und Titel reichen mir."

Der gesunde Menschenverstand und ein Blick auf ein paar Buchrücken belehrt uns darüber, dass es Bücher mit mehr als nur einem Autor gibt. "Jedes Buch hat einen Autor?" fragt Paul nach. Die Frage ist boshaft in ihrer Formulierung, genau so, dass eine falsche bzw. unvollständige Antwort suggeriert wird. "Ja." lautet die Antwort. - "Ausnahmslos und immer? Wenn wir jetzt im Mittelalter wären und ich Dir sage, dass Du mit Deinem Kopf dafür haftest, dass jedes Buch nur einen Autor hat, und dass Dein Kopf mit dem Schwert abgeschlagen wird, wenn ich auch nur ein Buch ohne Autor oder mit mehr als einem Autor finde...?" Das wirkt. Lothar grübelt nach. "Ja, immer, es gibt nur ein paar Ausnahmen." - "Also nicht immer?" - "Doch, immer, es gibt nur ein paar Ausnahmen." Die Diskussion muss nicht vertieft werden. Eine einzige Ausnahme bedeutet, dass es nicht immer nur ein Autor ist, oder anders herum gesehen, dass jedes Buch mehrere Autoren haben kann. - Für Fachanwender ist es wichtig, dass dies verstanden wird. In der Datenmodellierung gibt es keine Ausnahmen. Sofern Sie einen Satz sagen, der das Wort Ausnahme enthält, ist er im Sinne eines Datenmodells unbrauchbar. Für Informatiker ist es nicht nur wichtig, sondern von entscheidender Bedeutung, dass stets daran gedacht wird, dass Fachanwender nur wenige Gedanken aus Ausnahmen verschwenden.

Weiteres Nachfragen ergibt, dass es zwar wünschenswert wäre, nach einzelnen Titelstichworten zu suchen, dass Lothar aber für seinen Fall nur den Titelanfang braucht. Es mag zwar mal vorkommen, dass ein Buch keinen Autor hat, aber dann schreibt Lothar einfach kein Autor als Autor. Da es sich um eine Ausleihe handelt, wäre auch interessant zu sehen, wer alles Bücher ausgeliehen hat, oder welche Bücher jemand hat. Welche Bücher jemand hat, nicht welches Buch er hat; ein Bekannter kann also offenbar mehr als ein Buch ausleihen. - Bei solchen Spitzfindigkeiten lohnt es sich stets, genau hinzuhören.

Wir fassen also zusammen: Bücher sollen gesucht werden nach
und
Paul grübelt kurz. "Und die Bekannten? Wie werden die gesucht?" - "Gar nicht, die kenne ich." Paul denkt nun Dinge, die... Lassen wir das. Paul fragt nur: "Du suchst sie nicht. Dann werden sie auch nicht angezeigt, außer zusammen mit dem Buch. Beim Ändern blätterst Du alle durch, oder? Und..." Lothar hat es kapiert. "Gesucht wird nur nach dem Namen." Paul vergewissert sich. "Name? Welcher Name?" - "Na, der Familienname natürlich." Natürlich. - "Kein Vorname, kein Spitzname?" - "Nein, ich habe ja nur ein paar Dutzend Bekannte." Lügner, denkt Paul sich, und denkt an seine  im Laufe der Jahre gesammelten einige hundert Kontakte. Aber Paul wird für seine Hilfe nicht bezahlt und will die Angelegenheit nicht weiter verkomplizieren; er glaubt Lothar einfach, war er sagt.

"Was ist mit dem Bekannten eines Bekannten?" Lothar grübelt nach. "Ach, das ist nicht interessant. Aber wenn ich es mir so recht überlege, dann will ich meine Bekannten ebenfalls verschlagworten, irgendwie sowas in der Richtung Geschäftskontakt, Freund, Bekannter eines Bekannte etc." Eine Beispielsammlung ist stets verdächtig, und wenn sie auf etc. endet, gleich noch mehr. Paul fragt nach: "Dieses Schlagwort, hmmmm, nennen wir es mal Bekanntheitsgrad, hmmm, reicht da eines? Oder kann jemand ein Freund und ein Geschäftskontakt gleichzeitig sein?" - "Eines reicht." erklärt Lothar entschieden. "Ich hafte mit meinem Kopf. Ich will aber eine Liste angezeigt bekommen können, als z.B. alle Geschäftskontakte."

Wir fassen also zusammen: Bekannte sollen gesucht werden nach
und
Die Zeichnung könnte dann so aussehen:

Datenmodell2

Paul macht einen Rundgang in der Hausbibliothek. "Wie findest Du hier überhaupt ein Buch?" will er wissen. Lothar zuckt die Schultern. "Ich weiß, wo es steht." Dies soll also nicht Pauls Sorge sein. Von der Hochschulbibliothek oder Stadtbücherein wissen wir, dass jedes Buch einen Aufkleber mit einer Signatur hat und dass es irgendeine Sortierung im Regal gibt, sei es nach Signatur, nach Sachgebiet und dort nach Titel oder Autor. Sachgebiet? Wir fragen nochmals nach. Nein, Sachgebiet interessiert Lothar nicht, das deckt er noch mit dem Schlagwort ab.

Das Bild oben zeigt nun die Datenobjekte, die wir brauchen, um Lothars Daten so zu speichern, dass wir auch alle seine Suchanfragen beantworten können. Verbal sehen wir bereits einige Quantifizierungen der Beziehungen zwischen den Objekten, für die es in IT-Modellen sowohl numerische (0:n, 1:n, 0:1, 0:n, evtl. auch m:n) als auch symbolische Darstellungsweisen gibt, mit denen ich Sie nicht weiter quälen will. Verbal dargestellt bedeutet dieses Bild und alle Informationen, die wir erfragt haben sowie alle Annahmen, die wir unterstellen, folgendes:
Wir haben nun eine hohe Sicht auf die zu verarbeitenden Datenobjekte erarbeitet.

Im Sinne der IT fehlt hier aber noch etwas wichtiges:

In einer Datenbank werden für die Zuordnung von Autoren und Schlagworten zu Büchern Verknüpfungstabellen eingeführt, für eine (wenig formale) Darstellung reicht es, wenn dieses Faktum irgendwie dargestellt wird.

Datenmodell3

Exkurs: Abermals die unterschiedliche Denkweise zwischen Fachanwender und IT-Spezialist

Wir bewegen uns noch immer auf einer rein fachlichen Ebene. Ein Informatiker hat kein Interesse daran, was hinter den Daten steckt. Ihn interessiert nicht, dass Autoren Bücher schreiben, oder Leute Bücher entleihen. Es ist ihm ganz egal, was die Leute oder Dinge im echten Leben tun, die er in seiner Datenbank abbildet. Er will nur eines wissen: Wie viele? Keiner, einer oder mehrere? Nur die Beziehungen und ihre Quantifizierungen interessieren ihn.

Die Entwicklung der Bilder zeigt aber recht gut, dass die Sichtweise des IT-Spezialisten bereits auf hohem Niveau deutlich differenzierter ist, als die des Fachanwenders. Ein Bekannter, also eine natürliche Person, stellt wie auch ein Buch ein Ding dar, das man  in der Fachanwenderwelt vordergründig nicht weiter zerlegen muss. Für ein IT-System würde dies aber vor allem bedeuten, dass Informationen nur gespeichert, nicht aber gesucht werden können.
Die Konsequenz: Stellen Sie sich zwei Stapel Karteikarten vor: Einer enthält nur Karteikarten mit Daten über ihre Bekannten, der andere besteht nur aus Büchern. Alle Schlagworte und Autoren stehen irgendwo auf den Bücherkarten, mal oben, mal in der Mitte (rechts), mal auf der Rückseite unten links. Wenn ein Bekannter ein Buch ausleiht notieren sie seinen Namen auf der Bücherkarte, irgendwo, wo noch etwas freier Platz ist, und stecken sie zurück in den Stapel. Nun mischen Sie jeden Stapel kräftig durch. Jetzt versuchen Sie alle Karteikarten über die Bücher von Hesse, H. zu finden. Oder alle, die Martina ausgeliehen hat. Viel Spaß beim Suchen!
Dieses Beispiel verdeutlicht recht gut die Kommunikationsprobleme zwischen nicht IT-versierten Fachanwendern und IT-Spezialisten. Aus der Struktur erfordernden Sicht eines Programmierers bzw. eines Business Analysten ist fast jede Information, die ihm genannt wird, etwa so sinnlos, wie der Versuch, eine Bücherkartei samt Ausleihe auf die beschriebene Weise zu organisieren. Ein technischer Mitarbeiter weigert sich normalerweise schlichtweg, auf solch einem Niveau eine Diskussion zu führen, deshalb schickt er einen Analytiker vor.

Als Fachanwender können Sie Ihrem Analytiker sehr helfen, wenn Sie sich stets folgende Fragen stellen:
  1. Was will ich nur speichern und anzeigen, nicht aber suchen?
  2. Was will ich suchen?
  3. Welche Auflistungen von Informationen will ich haben?
  4. Wie stehen meine Datenobjekte miteinander in Beziehung? Wie sind diese Beziehungen zu quantifizieren?
  5. Wie viele "Teile" (Ausprägungen in der IT-Terminologie) einer Eigenschaft gibt es? 0, 1 oder mehrere?

Schritt 3: Die Attribute der Datenobjekte aus Sicht des Fachanwenders

Programmierer Paul fragt nun bei Lothar nach, welche Attribute die Datenobjekte haben sollen. Einige davon kennen wir bereits. Paul geht mit Lothar jedes Datenobjekt durch:

Bekanntheitsgrad:
Bekannter:
Schlagwort:
Autor:
Buch
Neben diesen reinen Auflistungen erfragt Paul nun auch die Datenformate. Wie viele Zeichen kann ein Familienname lang sein? Ist die Jahreszahl der Auflage vierstellig?

Schritt 4: Übersetzung der fachlichen Sicht in ein IT-taugliches Datenmodell

Paul geht nun nach Hause und macht alleine weiter. Im Geschäftsleben wird nun ein technisch versierter Business Analyst mit einem geeigneten Werkzeug ein logisches Modell bauen, oder aber er wird sich mit dem Datenbanker zusammentun, um ein physikalisches Datenmodell zu entwerfen. Aus dem recht allgemeinen Datenobjekt und den noch vage formulierten Beziehungen werden nun konkrete Tabellen. Ein erster Entwurf könnte etwa wie im Bild aussehen, wobei hier nur die Schlüssel der Tabellen dargestellt werden, über die die einzelnen Tabellen miteinander verknüpft werden. Die grünen Tabellen dienen nur der Verknüpfung von Autoren bzw. Schlagworten mit Büchern. In ihnen findet sich jeweils ein eindeutiges Wertepaar (Tupel), das genau ein bestimmtes Buch mit genau einem bestimmte Autor bzw. einem bestimmten Schlagwort verbindet. Soll ein Buch mit mehreren Autoren oder Schlagworten verbunden werden, so werden die entsprechenden Tupel hinzu gefügt.

Datenmodell4

Mit ## markierte Attribute sind die Primärschlüssel der jeweiligen Tabelle, mit # markierte Attribute sind Schlüssel, mit denen auf einen Eintrag in einer anderen Tabelle verwiesen wird.

Eine erste Dokumentation für die einzelnen Tabellen, die schon ein gutes Stück Richtung Technik geht, könnte so aussehen:

Bekanntheitsgrad

Name
Format
Erklärung
##Bekanntheitsgrad
--
Primärschlüssel
Bekanntheitsgrad
string, 30 Zeichen
Ein kurzer Text, der den Bekanntheitsgrad erklärt.
Beispiele: Freund, Geschäftskontakt, privat, Familie, Bekannter eines Bekannten, Internetbekanntschaft


Bekannter

Name
Format
Erklärung
##Bekannter
--
Primärschlüssel
#Bekanntheitsgrad
--
Enthält hier den Primärschlüsssel des ausgewählten Bekanntheitsgrades.
Familienname
string, 30 Zeichen
z.B. Scharbert
Vornamen
string, 30 Zeichen
z.B. Karl
Anschrift
string, 100 Zeichen
z.B. "Connollystr. 8, 80809 München, Deutschland"
Telefonnummer
string, 20 Zeichen
z.B. 089 / 1234567
Handynummer
string, 20 Zeichen
z.B. 0171 / 1234567
Geburtsdatum
date
z.B. 28.03.1964
email geschäftlich
string, 30 Zeichen
z.B. (hier schreibe ich nichts, damit keine Bots Adressen sammeln können)
email privat
string, 30 Zeichen
dito
Bemerkungen
string, 250 Zeichen
irgendwelche Notizen zur Person


Schlagwort

Name
Format
Erklärung
##Schlagwort
--
Primärschlüssel
Schlagwort
string, 30 Zeichen
Ein kurzer Text.
Beispiele: Datenbanken, Programmiersprachen, Analysemethodik, Botanik (allg.), Unterhaltungsliteratur


Autor

Name
Format
Erklärung
##Autor
--
Primärschlüssel
Familienname
string, 30 Zeichen

Vorname
string, 30 Zeichen
z.B. A.


Buch

Name
Format
Erklärung
##Buch
--
Primärschlüssel
Titel
string, 100 Zeichen

Auflagejahr
numerisch ganzzahlig, 4 Stellen

Bemerkungen
string, 250 Zeichen
für beliebige Notizen
#Ausleiher
--
hier wird der Primärschlüssel des Bekannten eingetragen, der das Buch ausgeliehen hat. Ist das Buch gerade nicht ausgeliehen, so steht hier null drin.
Ausleihdatum
date
Datum, an dem das Buch ausgeliehen wurde.
Rückgabedatum
date
Datum, für das die Rückgabe vereinbart wurde.


Verknüpfungstabelle Buch-Autor

Name
Format
Erklärung
#Buch
--
hier wird der Primärschlüssel des Buches eingetragen, zu dem der Autor gehört, der ebenfalls über den Primärschlüsssel in der Tabelle Autor identifiziert wird.
#Autor
--
hier wird der Primärschlüssel des Autors bzw. einer der Autoren des Buches eingetragen, das durch #Buch referenziert wird.


Verknüpfungstabelle Schlagwort-Autor

Name
Format
Erklärung
#Buch
--
hier wird der Primärschlüssel des Buches eingetragen, dem ein Schlagwort zugeordnet wird, das seinerseits über den Primärschlüssel in der Tabelle Schlagwort identifiziert wird.
#Schlagwort
--
hier wird der Primärschlüssels des Schlagworts bzw. eines der Schlagworte für das Buch eingetragen, das durch #Buch referenziert wird.



Der Fachanwender kann solch eine Liste ohne weiteres Attribut für Attribut durchsehen und aushaken. Aber es obliegt ihm und der geschickten Fragetechnik des Analytikers, die Vollständigkeit der Auflistungen zu gewährleisten. Als Faustregel für Kosten nach Fertigstellung eines kompletten IT-Systems kann man sagen:

Schritt 5: Weitergehende Überlegungen zum Datenmodell

Bekannte, gleich welcher Art, und Autoren sind beides natürliche Personen. In einem großen Datenmodell wird es sehr viele verschiedene natürliche Personen geben, z.B. interne Mitarbeiter, Außendienstmitarbeiter, Kunden, Ansprechpartner bei Zulieferern etc. Eine naheliegende Modifizierung des Datenmodells wäre es, Bekannte und Autoren in einer Tabelle zusammenzufassen.

In großen Datenmodellen gibt es sehr viele Tabellen, die mit den Tabellen Schlagwort und Bekanntheitsgrad zu vergleichen sind. Sie enthalten neben ihrem Primärschlüssel und irgendwelchen Systeminformationen nur einen Text, und dieser Text wird nur dazu benutzt, um ein kontrolliertes Vokabular bzw. eine definierte Wertemenge festzulegen, die i.d.R. in Comboboxen auftauchen. Im Rahmen einer Denormalisierung werden diese vielen Tabellen in einer einzigen zusammengefasst, wobei zur Unterscheidung, um was es sich gerade handelt (Bekanntheitsgrad, Schlagwort oder sonst etwas) noch ein weiteres Attribut eingeführt wird.

Von all diesen Entscheidungen bekommt der Fachanwender nichts mit.

Exkurs: Kleine Katastrophen bei der Datenmodellierung

Ein gutes Datenmodell ist die Grundlage für ein vernünftiges System inkl. dessen Weiterentwicklung. Typische Katastrophen basieren meist auf dem Unverständnis der für relationale Datenbanken spezifischen mengenorientierten Operationen. Einmischungen der Fachabteilung oder anderer Leute, die keine Ahnung von Datenbanken haben und dennoch Modellierungs-Entscheidungen erzwingen, die nichts mehr mit einem sauberen Datenmodell zu tun haben, rächen sich früher oder später. Den Witz bzw. die Bitternis hinter den Beispielen verstehen Sie nur, wenn Sie die Prinzipien der Datenmodellierung kennen.
Beispiele aus der Praxis

Ein unüberschaubares Datenmodell mit ca. 250 Tabellen wurde einmal hinterfragt. Das Modell entsprach vollkommen der 3nf, eine Denormalisierung aller Tabellen wie Schlagwort oder Bekanntheitsgrad im Beispiel oben, war nicht durchgeführt worden. Diese Tabellen machten etwa zwei Drittel des Modells aus und enthielten oft nur ein halbes Dutzend Werte.

Bestimmte Produkte, die in einer relationalen Datenbank hinterlegt waren, waren extrem unterschiedlich. Sie wurden in eine einzige Tabelle gepresst, wobei für jede Eigenschaft jedes Produkts eine eigene Spalte vorgesehen war. Mit jedem neuen Produkt wurden neue Spalten hinzu gefügt. Die Tabelle war lediglich eine sehr dünn besetzte Matrix, manche der Spalten wurden nur von einem einzigen Produkt benötigt.

Für eine Anwendung wurden zweisprachige Texte verlangt (deutsch und englisch). Man führte in den entsprechenden Tabellen zwei Attribute ein, die jeweils den deutschen und englischen Text enthielten. Gleichzeitig wurde darüber diskutiert, dass das Datenmodell internationalisiert werden sollte.

In einem System, das Händlerhierarchien abbilden sollte, wurden vom Kunden drei Hierarchiestufen verlangt. Da keine Anforderung existierte, dass evtl. einmal eine vierte Stufe eingeführt werden sollte, wurden die drei Stufen als drei Attribute in einer Tabelle definiert. Die auswertende businsss logic wurde hart codiert.

Anstatt die Vergabe von Primärschlüsseln den Automatismen des Datenbanksystems zu überlassen, wurden die Schlüssel manuell erzeugt und eingegeben.

Produkte wurden Produktgruppen zugeordnet. Anstatt, dass diese Produktgruppen (analog zu den Bekanntheitsgraden im Beispiel oben) innerhalb der Datenbank verwaltet und nur über einen Schlüssel automatisch mit dem Produkt verknüpft wurden, wurden Abkürzungen in Form von zwei oder drei Buchstaben langen Codes manuell erfasst. Es gab keine Syntaxprüfung der Codes. Als die Daten in ein anderes System migriert werden mussten, waren insgesamt zwei Wochen manueller Auswertungen und Bereinigungen notwendig, um diese und vergleichbare Fehler an anderer Stelle zu eliminieren. Alle diese Fehler waren über Jahre hinweg ein dauerhaftes Produktions-Ärgernis gewesen, das nur durch sehr viel Aufwand bei manuellen Kontrollen in den Griff zu bekommen war.

home - top - Kontakt - letzter Update 11.12.2003 - © Karl Scharbert