Beziehungen zwischen mehreren Tabellen


Die bisher von uns erstellten Datenbanken bestanden immer aus einer Tabelle, in der sämtliche Daten der Datenbank gespeichert waren. In der Praxis wird dies aber eher die Ausnahme als die Regel darstellen. Wird die einzelne Tabelle zu komplex, empfiehlt es sich, Daten in neue Tabellen auszulagern.

Dafür spricht vor allem der folgende Aspekt: Nehmen wir einmal an, dass ein Leser unserer Bibliothek mehr als nur ein Buch ausleihen möchte. Dann müsste immer dann wenn ein neues Buch ausgeliehen wird, ein vollständiger neuer Datensatz angelegt werden. Dieser enthält dann jedoch auch Informationen zum Leser selbst, die bereits bei der ersten Ausleihe erfasst worden sind. Hier würden Daten redundant erfasst werden. Dies gilt es jedoch nach Möglichkeit zu vermeiden. Einerseits kann es bei Änderungen zu den persönlichen Angaben zu Inkonsistenzen im Datenbestand führen, wenn man eine oder mehrere Änderungen vorzunehmen vergisst. Andererseits würde man durch die Mehrfacherfassung der Daten auch schlicht und einfach Speicherplatz verschwenden, den man teuer erkaufen muss (siehe die beiden nachfolgenden Abbildungen).

Datenbank-Server Datenbank-Server
[nach oben]

Wenn man nun einen Teil der Daten in neue Tabellen auslagern möchte, müssen Beziehungen zwischen den einzelnen Tabellen hergestellt werden. Es muss z.B. erkennbar sein, welches Buch von welchem Leser ausgeliehen wurde. Diese Beziehungen werden über die in den Tabellen vereinbarten Schlüssel realisiert.

Außerdem ist es notwendig, dass man sich schon vor dem Erstellen einer solchen komplexen Datenbank ausführlich Gedanken über die Struktur der zu erstellenden Datenbank macht. Dafür entwickelte der Informatiker Peter Chen im Jahr 1973 das sogenannte Entity - Relationship - Modell. Dieses Werkzeug zur Modellierung von Datenbanken hat sich international durchgesetzt.

  1. Überdenken Sie den Ausleihvorgang für die Bücher in unserer Bibliothek neu. Erfasst werden sollen sowohl die Leser unserer Bibliothek mit Name, Vorname, Anschrift, PLZ, Ort und Geburtsdatum als auch die auszuleihenden Bücher mit Titel, ISBN-Nr und Autoren. Da ein Buch in der Bibliothek auch mehrfach vorhanden sein kann, wird ein Buch durch seine Inventarnummer eindeutig charakterisiert.

    1. Entwerfen Sie zunächst ein ER-Diagramm, das den Ausleihvorgang für unsere Bibliothek modelliert!
    2. Entwickeln Sie aus dem ER-Diagramm ein relationales Modell mit allen zu verwendenden Schlüsseln und Attributen! Für den Ausleihvorgang sollen außerdem das Entleihdatum und das Rückgabedatum erfasst werden.
    3. Wir wollen nun gemeinsam das entwickelte Modell unserer Datenbank mit Hilfe von ACCESS umsetzen. Legen Sie dazu zunächst die benötigten Tabellen samt der erforderlichen Datenfelder an!
    4. Jetzt füllen wir unsere neuen Tabellen mit einigen Daten. Importieren Sie dazu die Daten aus den folgenden Textdateien: Leserdaten, Buecherdaten und Ausleihdaten.
    5. Nun folgt der schwierigste Teil. Wir müssen jeweils eine 1 : n - Beziehung zwischen den entsprechenden Tabellen herstellen. Dabei zeigt der Fremdschlüssel der n-Relation auf den Primärschlüssel der 1-Relation.

      Schließen Sie dazu alle Tabellen und wählen Sie das Symbol Beziehungen aus der Symbolleiste.

      Symbol Beziehungen wählen

      Nun müssen alle Tabellen, die miteinander verknüpft werden sollen, ausgewählt und hinzugefügt werden.

      Tabellen hinzufügen

      Anschließend zieht man mit der Maus den Schlüssel der einen Tabelle auf den Schlüssel der anderen Tabelle, die miteinander verknüpft werden sollen.

      Wir sollten unbedingt auch eine referenzielle Integrität für diese Beziehungen fordern. Darunter versteht man, dass für jeden Wert eines Datenfeldes, das als Fremdschlüssel definiert ist, ein entsprechender Wert in der damit verbundenen Tabelle vorhanden sein muss. Es darf also z.B. nicht vorkommen, dass in der Tabelle Ausleihe ein Leser angegeben ist, der in der Tabelle Leser nicht existiert. Das DBMS hat dabei folgende zwei Aufgaben zu erfüllen:

      • Wird in der Tabelle Ausleihe ein neuer Datensatz eingefügt, dann muss sichergestellt werden, dass für den Wert in LeserNr ein Datensatz in der Tabelle Leser vorhanden ist.
      • Wird in der Tabelle Leser ein Datensatz gelöscht, dann muss das DBMS prüfen, ob es in der Tabelle Ausleihe Einträge gibt, die auf diesen Datensatz verweisen.

      referenzielle Integrität herstellen

      Probieren Sie unbedingt die referenzielle Integrität aus, indem Sie, wie oben beschrieben, in der Tabelle Ausleihe einen neuen Datensatz mit einer nicht existenten LeserNr bzw. ein Buch mit einer nicht existenten InvNr einfügen. Das DBMS wird die Operation verweigern. Versuchen Sie anschließend, den Datensatz für einen Leser zu löschen, der ein Buch ausgeliehen hat. Auch diese Operation wird das DBMS verweigern.

    Vergleichen Sie abschließend ihre Modelle und ihre DB mit der Musterlösung.

    [nach oben]
  2. sinngemäß entnommen aus: Lehr- und Übungsbuch Informatik, Fachbuchverlag Leipzig

    Die Mitarbeiter eines Projektierungsbüros bearbeiten Projekte für gewisse Firmen. An einem Projekt arbeiten in der Regel mehrere Mitarbeiter. Ein Mitarbeiter kann auch gleichzeitig an mehreren Projekten mitwirken. Von den Firmen sind zu erfassen der Firmenname und der Ort des Firmensitzes. Zur eindeutigen Identifizierung bekommt jede Firma eine Nummer. Von den Mitarbeitern sind zu erfassen die Mitarbeiternummer, Name, Vorname, Geburtsdatum und Gehalt. Ein Projekt wird beschrieben durch die Projektnummer, den Projektnamen, die Personalnummer des Projektleiters, und den Fertigstellungstermin.

    1. Entwerfen Sie zunächst ein ER-Modell für die Datenbank Projektierungsbüro! Geben Sie die Kardinalität der Beziehungen zwischen den Entity-Sets an!
    2. Entwickeln Sie ausgehend von Ihrem ER-Modell ein relationales Modell mit allen Attributen und Schlüsseln!
    3. Setzen Sie nun Ihren Entwurf mit Hilfe von ACCESS um!
    4. Stellen Sie die Beziehungen zwischen den Tabellen her! Fordern Sie jeweils referenzielle Integrität für die Beziehungen!
    5. Importieren Sie abschließend die Daten in Ihre Tabellen: Firmendaten, Projektdaten, Mitarbeiterdaten und MitProdaten.

    Vergleichen Sie abschließend ihre Modelle und ihre DB mit der Musterlösung.

    [nach oben]

zuletzt geändert am:
Eine Seite von Mirko Hans