Dies ist eine alte Version des Dokuments!
Um überhaupt eine Datenbank anlegen und mit ihr arbeiten zu können, muss man erst wissen, was man will. Sehr hilfreich sind dabei Modelle, die das Problem beschreiben. Vor allem kommt es bei Datenbanken darauf an, Daten nicht redundant1) abzulegen und darauf zu achten, dass diese konsistent2) sind.
Ein solches Modell ist das Entity-Relationship-Modell 3)
Aus dem Namen ist schon zu erkennen, dass die grundlegendsten Modellierungsstrukturen dieses Modells die Entities4) und die Relationships5) zwischen den Entities sind. Zusätzlich "kennt" das Entity-Relationship-Modell noch Attribute und Rollen - dazu aber später mehr6)
Hier gibt's noch Lesestoff: Entity-Relationship-Modell
Gegenstände (bzw. Entities) sind wohlunterscheidbare physisch oder gedanklich existierende Konzepte der zu modellierenden Welt. Man abstrahiert ähnliche Gegenstände zu Gegenstandstypen (Entitytypen oder Entitymengen), die man graphisch als Rechtecke darstellt, wobei der Name des Entitytyps innerhalb des Rechtecks angegeben wird.
Beziehungen werden auf analoge Weise zu Beziehungstypen zwischen den Gegenstandstypen abstrahiert. Die Beziehungstypen werden als Rauten mit entsprechender Beschriftung repräsentiert. Die Rauten werden mit den beteiligten Gegenstandstypen über ungerichtete Kanten verbunden.
Im Folgenden werden wir oft die Unterscheidung zwischen Gegenständen und den Gegenstandstypen, bzw. zwischen Beziehungen und Beziehungstypen, vernachlässigen. Aus dem Kontext dürfte immer leicht ersichtlich sein, was gemeint ist.
Auch der Schulalltag bietet viele Möglichenkeiten das ER-Modell einmal auszuprobieren. Dazu müssen wir uns überlegen, welche Daten wir verarbeiten wollen und in welcher Beziehung diese zueinander stehen.
Einige Entitytypen hierzu könnten sein:
Erst die Beziehung macht die Datenmodellierung interessant, da man hier Daten verarbeitet und die Infrmationen abfragt/ändert/löscht…
In unserem Beispiel sind Beziehungen zwischen den Entitytypen z.B.:
Jetzt haben wir zwar die Entitytypen und Beziehungen genannt - also ich weiß, dass es Schüler gibt und dass sie in eine Klasse gehen - aber ich muss die einzelnen Entities, die selben Typs sind auch unterscheiden können.
Attribute helfen uns hierbei, Entities bzw. Beziehungen zu charakterisieren. Diese stellt man durch Kreise (oder Ovale) dar und verbindet sie mit den entsprechenden Entitytypen bzw. Beziehungen durch eine gerade Linie8).
Die einzelnen Entites gilt es natürlich zu unterscheiden. Wie geschieht das? WIe unterscheidet z.B. eine Schule ihre einzelnen Schüler? 9) wie unterscheidet ein Online-Shop seine Kunden?
Man braucht hierzu Attribute, die (alleine oder in Kombination mit anderen Attributen) als Unterscheidungsmerkmal herangezogen werden können. Dabei gilt:
Eine minimale Menge von Attributen, deren Werte das zugeordnete Entity eindeutig innerhalb aller Entities seines Typs identifiziert, nennt man Schlüssel. Sehr oft gibt es Attribute, die als Schlüssel "künstlich" eingebaut werden, wie z.B. Personalnummer (PNr), Schülernummer (SNr), etc. Schlüsselattribute werden durch Unterstreichung gekennzeichnet.
Es kann auch vorkommen, dass es auch zwei unterschiedliche Schlüsselkandidaten gibt: Dann wählt man einen dieser Kandidaten-Schlüssel als Primärschlüssel aus.
Wenn man sich eine Beispieltabelle zu dem Schüler-Lehrer-Klasse-Modell anlegt stellt man Unterschiede in den Beziehungen fest:
Es gibt hier einen feinen Unterschied unter den Beziehungstypen hinsichtlich ihrer Funktionalität, die nachfolgend aufgezählt werden sollen:
Falls jedem Entity e1 aus E1 höchstens ein Entity e2 aus E2 zugeordnet ist und umgekehrt jedem Entity e2 aus E2 höchstens ein Entity e1 aus E1 zugeordnet ist, spricht man von einer 1:1-Beziehung.
Man beachte dass es auch Entities aus E1 (bzw. E2) geben kann, denen kein "Partner" aus E2 (bzw. E1) zugeordnet ist.
Beispiele:
Falls jedem Entity e1 aus E1 beliebieg viele (also mehrere oder auch gar keine) Entities aus E2 zugeordnet sein können, aber jedes Entity e2 aus E2 mit maximal einem Entity aus E1 in Beziehung stehen kann, spricht man von einer 1:N-Beziehung.
Beispiele:
Wenn keinerlei Einschränkungen gelten müssen, d.h. jedes Entity aus E1 mit beliebig vielen Entities aus E2 in Beziehung stehen kann und umgekehrt jedes Entity aus E2 mit beliebig vielen Entities aus E1 assoziiert werden darf, spricht man von einer N:M-Beziehung.
Beispiele:
Wichtige Anmerkung:
Man beachte, dass die Funktionalitäten Integritätsbedingungen darstellen, die in der zu modellierenden Welt immer gelten müssen. D.h. diese Bedingungnen sollen nicht nur im derzeit existierenden Zustand der Miniwelt (rein zufällig) gelten, sondern sie sollen Gesetzmäßigkeiten darstellen, deren Einhaltung erzwungen wird.
Kurz und knapp: Die Funktionalität muss immer gelten - jetzt und auch auch später!