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 sprechen vor allem die folgenden beiden Gründe:

[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, welche Rechnung zu welchem Kunden gehört. 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. Wir wollen nun gemeinsam zunächst ein ER - Modell für unsere veränderte Datenbank Reiseagentur entwerfen und dann mit Hilfe von Access umsetzen.
    1. Zunächst wollen wir unsere Tabelle Reisen in Kunden umbenennen um deutlich zu machen, dass in ihr lediglich Angaben zu den Kunden, nicht jedoch zu den Reisen enthalten sind.
    2. Als nächstes benennen wir im Entwurf der Tabelle das Datenfeld LfdNr der Deutlichkeit halber in KundenID um.
    3. Jetzt erstellen wir einen neue Tabelle Rechnungen. Sie soll folgende Datenfelder enthalten:

      Feldname Felddatentyp Beschreibung
      RechnungID Autowert Primärschlüssel
      Datum Datum/Uhrzeit -
      KundenNR Zahl Fremdschlüssel
      Betrag Währung -
      Bezahlt Ja/Nein -
    4. Jetzt füllen wir unsere neue Tabelle mit einigen Daten:

      RechnungID Datum KundenNR Betrag Bezahlt
      1 15.03.01 5 236,25 € ja
      2 18.04.01 2 1543,25 € ja
      3 14.06.01 4 1059,50 € ja
      4 23.07.01 6 2156,30 € ja
      5 21.11.01 2 236,25 € nein
    5. Nun folgt der schwierigste Teil. Wir müssen eine 1 : n - Beziehung zwischen der Tabelle Kunden und der Tabelle Rechnungen herstellen. Dabei zeigt der Fremdschlüssel KundenNR der Tabelle Rechnungen auf den Primärschlüssel KundenID der Tabelle Kunden.

      Außerdem sollten wir unbedingt auch eine referenzielle Integrität für diese Beziehung 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 Rechnungen ein Kunde 345 angegeben ist, der in der Tabelle Kunden nicht existiert. Das DBMS hat dabei folgende zwei Aufgaben zu erfüllen:

      • Wird in der Tabelle Rechnungen ein neuer Datensatz eingefügt, dann muss sichergestellt werden, dass für den Wert in KundenNR ein Datensatz in der Tabelle Kunden vorhanden ist.
      • Wird in der Tabelle Kunden ein Datensatz gelöscht, dann muss das DBMS prüfen, ob es in der Tabelle Rechnungen Einträge gibt, die auf diesen Datensatz verweisen.
    [nach oben]
  2. Auch unsere Datenbank Adressen wollen wir nun ein wenig abändern. Durch das ständige Hinzufügen weiterer Kommunikationsmöglichkeiten (Fax, E-Mail, Handy1, Handy2, ...) würde auch diese Tabelle weiter nach rechts wachsen. Also wollen wir die Kontaktarten in eine neue Tabelle Kontakte auslagern.
    1. Entwerfen Sie zunächst ein ER-Modell für unsere neue Datenbank Adressen! Überlegen Sie welcher Beziehungstyp vorliegt!
    2. Benennen Sie die Tabelle Adressen in Person um!
    3. Erstellen Sie eine neue Tabelle Kontakte mit folgender Struktur:

      Datenfeld Datentyp Beschreibung
      LfdNr Zahl Fremdschlüssel
      Kontaktart Text
      -
      Kontaktwert Text
      -
    4. Jetzt füllen wir unsere neue Tabelle mit einigen Daten:

      LfdNr Kontaktart Kontaktwert
      1 Telefon 0398512
      1 Fax 0398185
      1 Handy 01754893
      1 E-Mail toni@taste.de

      Ergänzen Sie selbständig noch einige weitere (Fantasie)Daten!

    5. Stellen Sie nun die Beziehung zwischen den beiden Tabellen her und überprüfen Sie, ob Ihre Aktion erfolgreich war!
    [nach oben]

zuletzt geändert am:
Eine Seite von Mirko Hans