Datenbanksysteme: Beziehungen
Kardinalität von Beziehungen
1:1 - Beziehungen
Falls jedes Objekt (Datensatz, Zeile der Tabelle) der Klasse 1 (Tabelle) mit höchstens einem Objekt der Klasse 2 in Beziehung steht und umgekehrt, spricht man von einer 1:1 - Beziehung. Dabei kann es durchaus sein, dass es Objekte in Klasse 1 oder Klasse 2 gibt, denen kein „Partner“ aus der anderen Klasse zugeordnet ist.
Ein Beispiel ist die Beziehung verheiratet zwischen den Klassen Männer und Frauen, zumindest nach europäischem Recht.
1:n - Beziehung
Falls jedes Objekt der Klasse 1 mit beliebig vielen Objekten der Klasse 2 in Beziehung stehen kann, aber jedes Objekt der Klasse 2 mit höchstens einem Objekt der Klasse 1, sprich man von einer 1:n - Beziehung.
Ein Beispiel ist die Beziehung beschäftigt sein zwischen den Klassen Arbeitnehmer und Unternehmen, wobei man davon ausgeht, dass ein Arbeitnehmer nur bei einem Unternehmen beschäftigt ist, ein Unternehmen aber mehr als einen Beschäftigten haben kann.
n:m - Beziehung
Falls jedes Objekt der Klasse 1 mit beliebig vielen Objekten der Klasse 2 in Beziehung stehen kann und umgekehrt, spricht man von einer n:m - Beziehung. Ein Beispiel ist die Beziehung unterrichten zwischen den Klassen Schüler und Lehrer; jeder Lehrer unterrichtet mehrere Schüler und jeder Schüler hat mehrere Lehrer.
Darstellen von Beziehungen in einem Datenbankschema
Regel 1
Jede Beziehung kann als eigenständige Tabelle definiert werden, wobei die Primärschlüssel der zugehörigen Klassen als Fremdschlüssel auftreten müssen.
Beispiel
Beziehung unterrichtet (siehe „Kardinalität von Beziehungen, n:m - Beziehung). Die Klassen sehen wie folgt aus:
- SCHUELER { Schueler-Id, Name, Vorname, Geburtsdatum, Konfession, ... }
- LEHRER { Lehrer-Id, Name, Vorname, Geburtsdatum, Fach1, Fach2, ... }
- UNTERRICHTET { Lehrer-Id, Schueler-Id, Fach, ... }
Regel 2
Jede n:m - Beziehung muss durch eine eigenständige Tabelle definiert werden. Der Primärschlüssel kann dabei auf zwei verschiedene Arten festgelegt werden:
- Kombination der Fremdschlüssel (Verweis auf Primärschlüssel der Klassen)
- Eigener künstlicher Primärschlüssel
Beispiel
Bücher werden beliebig oft ausgeliehen und die Ausleihe gespeichert.
- BUCH { Buch-Nr, Verfasser, Titel, Verlag, ... }
- NUTZER { Nutzer-Id, Name, Vorname, Geburtsdatum, PLZ, Wohnort, ... }
- AUSLEIHE { Ausleih-Nr, Buch-Nr, Nutzer-Id, ausgeliehen am, zurückgegeben am, ... }
Regel 3
Jede 1:n - Beziehung sowie jede 1:1 - Beziehung kann ohne eigenständige Beziehungstabelle unmittelbar in die zugeordneten Klassen integriert werden.
Beispiel
Der aktuelle Ausleihstatus wird bei der Bibliothek registriert, d.h. ein Buch kann auch nur einmal ausgeliehen werden.
- BUCH { Buch-Nr, Verfasser, Titel, Verlag, ... , Nutzer-Id, Ausleihe_am, Ausleihe_bis }
- NUTZER { Nutzer-Id, Name, Vorname, Geburtsdatum, PLZ, Wohnort, ... }
Der Schlüssel Nutzer-Id in der Klasse BUCH ist ein Fremdschlüssel auf den Primärschlüssel der Klasse NUTZER. Dabei ist zu beachten, dass nur die 1-er-Klasse in die andere Klasse integriert werden kann, d.h. hier wird die Buch-Nr nicht in die Klasse NUTZER eingetragen.