Beziehungen
werden gemeinsam mit Entitäten in einem sogenannten ER-Diagramm dargestellt (ER-Diagramm: Entity-Relationship-Diagramm; statt Beziehung sagt man oft auch Relation). Beispiel:
Das Diagramm ist so zu verstehen: ein Projekt (1) kann von mehreren Projektleitern (n) angeboten werden, aber ein Projektleiter kann immer nur ein Projekt anbieten, das natürlich noch von anderen Projektleitern angeboten werden kann.
Frage: Wo ist die Information über die Relation "Projekt anbieten" in der Datenbank versteckt.
Antwort: ______________________________________________________________
Gerne packt man noch die Eigenschaften der Entitäten oder Beziehungen mit in das ER-Diagramm, dafür benutzt man dann Kreise oder Ellipsen, hier eine Übersicht:
- Rechteck: für Entitäten/Objekte
- Raute: für Beziehungen
- Kreis oder Ellipse: für die Eigenschaften/Attribute
Beispiel:
Beeindruckendere Beispiele finden sich in unserem Datenbank-Reader auf den Seiten 22-26, auf S. 21 beginnt dort in Kapitel 2.4 das Thema Entity-Relationship-Modell.
<<<
Komplexität von Beziehungen
Man schreibt an die Kanten im ER-Diagramm Zahlen, die für die Komplexität der Beziehung stehen.
In erster Näherung unterscheidet man:
- 1:n-Beziehung: Beispiel siehe oben, ein Lehrer kann (muss aber nicht!) ein Projekt anbieten, und ein Projekt kann von einem oder mehreren Projektleitern angeboten werden
- 1:1-Beziehung: ein schönes Beispiel ist eine Telefonliste, jedem Lehrer ist genau eine Telefonnummer zugeordnet und umgekehrt. In manchen Klassen soll ähnliches für Handylisten gelten . . .
- n:m-Beziehung: in unserer Projektwahl kann jeder Schüler zwei Projekte wählen, und jedes Projekt kann von mehreren Schülern gewählt werden. Was wie ein Entwurfsfehler aussieht (Warum?), ist gerade beabsichtigt!
Diese Beziehungen gelten immer zwischen Datensätzen, also zwischen Entitäten in
unterschiedlichen Tabellen, und die interessante Frage lautet dann logischerweise:
Wie werden solche Beziehungstypen umgesetzt bei der Modellierung unserer Miniwelt?
- 1:n-Beziehung: Wir müssen auf der n-Seite der Beziehung (Projektleiter!) eine Eigenschaft hinzufügen, aus der ersichtlich wird, welches Projekt angeboten wird. Das heisst also: auf der n-Seite der Beziehung wird in der Tabelle eine zusätzliche Spalte hinzugefügt, die diese Tabelle mit der Tabelle der 1er-Seite eindeutig verknüpft. Frage: Wie wurde dieses Problem in der ProWo-Datenbank gelöst? Kommentar?
Eine
- 1:1-Beziehung ist redundant, also überflüssig! Das heisst: hier braucht man keine zwei Tabellen, sondern eine tut's auch. In unserem Beispiel der Telefonliste: hier würde man die Tabelle der Lehrer und die Tabelle mit der Telefonnummer zusammenfassen zu einer Tabelle, in der die Eigenschaft "Lehrer" sowie die Eigenschaft "Telefonnummer" vorkommt. Eine Tabelle wird also einfach um eine Spalte ergänzt, die andere Tabelle fällt weg!
- n:m-Beziehung: hier führt man zusätzlich eine dritte sogenannte Auflösungstabelle ein, die die Beziehung zwischen den beiden Entities ausdrückt! Im Beispiel: ein Schüler kann mehrere Projekte wählen, also führen wir eine neue Tabelle "Wahl" ein, die aus den beiden anderen Tabellen die Primärschlüssel übernimmt: die Schülernummer sowie die Projektnummer und diese mit einer eigenen Wahlnummer verknüpft, und da jeder Schüler zwei Projekte wählen kann, dürfen in dieser dritten Tabelle maximal zwei Einträge pro Schüler stehen (klar?). Die Idee bei der Umsetzung einer n:m-Beziehung besteht also in der Auflösung in zwei 1:n-Beziehungen, die über die Auflösungstabelle miteinander verknüpft werden. Frage: Wo finden wir die Auflösungstabelle in der Prowo-Datenbank? Wo ist die Schülertabelle? Kommentar?
<<<
Beispiel-Datenbank
"prowo.mdb" in deinem Verzeichnis!
<<<
Aufgaben
- Wir üben ER-Diagramme (Jubel!): Ein Schüler kann zwei Projekte wählen, und ein Projekt kann . . . (vervollständige)
- Weiter gehts mit dem Datenbank-Reader, S. 33/Nr. 6 und S. 34/9
- Der Autor dieser Zeilen bittet um eine kritische Untersuchung der ProWo-Datenbank im Hinblick auf die Fragen im Abschnitt Komplexität von Beziehungen
<<<
W. Spiegel, E-Mail: