Definieren von Beziehungen zwischen Tabellen in einer Access-Datenbank

Ursprüngliche KB-Nummer: 304466

Hinweis

Anfänger: Erfordert Kenntnisse der Benutzeroberfläche auf Einzelbenutzercomputern. Dieser Artikel gilt nur für eine Microsoft Access-Datenbank (.mdb oder .accdb).

Zusammenfassung

In diesem Artikel wird beschrieben, wie Beziehungen in einer Microsoft Access-Datenbank definiert werden. Der Artikel enthält die folgenden Themen:

  • Was sind Tabellenbeziehungen?
  • Arten von Tabellenbeziehungen
    • 1:n-Beziehungen
    • n:n-Beziehungen
    • 1:1-Beziehungen
  • Definieren von Beziehungen zwischen Tabellen
    • Definieren einer 1:n- oder 1:1-Beziehung
    • Wie man eine n:n-Beziehung definiert
  • Referenzielle Integrität
  • Kaskadierende Updates und Deletes
  • Join-Typen

Was sind Tabellenbeziehungen?

In einer relationalen Datenbank können Sie mithilfe von Beziehungen redundante Daten verhindern. Wenn Sie beispielsweise eine Datenbank entwerfen, die Informationen zu Büchern nachverfolgt, verfügen Sie möglicherweise über eine Tabelle mit dem Namen „Titel“, in der Informationen zu jedem Buch gespeichert werden, z. B. der Titel des Buches, das Datum der Veröffentlichung und der Herausgeber. Es gibt auch Informationen, die Sie über den Herausgeber speichern möchten, z. B. Telefonnummer, Adresse und Postleitzahl des Herausgebers. Wenn Sie alle diese Informationen in der Tabelle „Titel“ speichern, wird die Telefonnummer des Herausgebers für jeden Titel dupliziert, den der Herausgeber druckt.

Eine bessere Lösung ist es, die Informationen über den Verlag nur einmal zu speichern, und zwar in einer separaten Tabelle, die wir „Verlage“ nennen werden. Sie würden dann einen Zeiger in die Tabelle „Titel“ setzen, der auf einen Eintrag in der Tabelle „Verlage“ verweist.

Um sicherzustellen, dass Ihre Daten synchronisiert bleiben, können Sie die referenzielle Integrität zwischen Tabellen erzwingen. Mit referenziellen Integritätsbeziehungen wird sichergestellt, dass die Informationen in einer Tabelle mit Informationen in einer anderen Tabelle übereinstimmen. Beispielsweise muss jeder Titel in der Tabelle „Titel“ einem bestimmten Herausgeber in der Tabelle „Herausgeber“ zugeordnet sein. Ein Titel für einen Herausgeber, der nicht in der Datenbank vorhanden ist, kann der Datenbank nicht hinzugefügt werden.

Logische Beziehungen in einer Datenbank ermöglichen es Ihnen, Daten effizient abzufragen und Berichte zu erstellen.

Arten von Tabellenbeziehungen

Bei einer Beziehung gehören Daten in Schlüsselspalten, in der Regel Spalten (oder Felder), die in beiden Tabellen denselben Namen haben, zusammen. In den meisten Fällen verbindet die Beziehung den Primärschlüssel oder die Spalte mit dem eindeutigen Bezeichner für jede Zeile von einer Tabelle mit einem Feld in einer anderen Tabelle. Die Spalte in der anderen Tabelle wird als „Fremdschlüssel“ bezeichnet. Wenn Sie etwa die Verkäufe der einzelnen Buchtitel überwachen möchten, erstellen Sie eine Beziehung zwischen der Primärschlüsselspalte (nennen wir sie Titel_ID) in der Tabelle „Titel“ und einer Spalte in der Tabelle „Verkäufe“, die Titel_ID heißt. Die Spalte title_ID in der Tabelle „Verkäufe“ ist der Fremdschlüssel.

Es gibt drei Arten von Beziehungen zwischen Tabellen. Welche Art von Beziehung erstellt wird, hängt davon ab, wie die zugehörigen Spalten definiert werden.

1:n-Beziehungen

Eine 1:n-Beziehung ist die häufigste Art von Beziehung. In dieser Art von Beziehung kann eine Zeile in Tabelle A viele zugehörige Zeilen in Tabelle B enthalten. Eine Zeile in Tabelle B kann jedoch nur eine zugehörige Zeile in Tabelle A haben. Beispielsweise weisen die Tabellen „Herausgeber“ und „Titel“ eine 1:n-Beziehung auf. Das heißt, jeder Herausgeber produziert viele Titel. Aber jeder Titel stammt von nur einem Herausgeber.

Eine 1:n-Beziehung wird erstellt, wenn nur eine der verknüpften Spalten ein Primärschlüssel ist oder eine eindeutige Einschränkung enthält.

Im Fenster „Beziehungen“ in Access wird die Primärschlüsselseite einer 1:n-Beziehung durch die Zahl 1 bezeichnet. Die Fremdschlüsselseite einer Beziehung wird durch ein Unendlichkeitssymbol bezeichnet.

Screenshot eines Beispiels für 1:n-Beziehungen im Fenster „Beziehungen“ in Access.

n:n-Beziehungen

In einer n:n-Beziehung kann eine Zeile in Tabelle A viele dazu passende Zeilen in Tabelle B enthalten und umgekehrt. Eine solche Beziehung erstellen Sie, indem Sie eine dritte Tabelle definieren, die als Verknüpfungstabelle bezeichnet wird. Der Primärschlüssel der Verknüpfungstabelle besteht aus den Fremdschlüsseln aus Tabelle A und Tabelle B. Beispielsweise weisen die Tabelle „Autoren“ und die Tabelle „Titel“ eine n:n-Beziehung auf, die durch eine 1:n-Beziehung von jeder dieser Tabellen zur Tabelle „TitelAutoren“ definiert wird. Der Primärschlüssel der Tabelle „TitelAutoren“ ist eine Kombination aus der Spalte au_ID (Primärschlüssel der Tabelle „Autoren“) und der Spalte title_ID (Primärschlüssel der Tabelle „Titel“).

Screenshot eines Beispiels für m:n-Beziehungen im Fenster „Beziehungen“ in Access.

1:1-Beziehungen

In einer 1:1-Beziehung kann eine Zeile in Tabelle A nicht mehr als eine zugehörige Zeile in Tabelle B haben und umgekehrt. Eine 1:1-Beziehung wird erstellt, wenn beide verknüpften Spalten Primärschlüssel sind oder eindeutige Einschränkungen aufweisen.

Diese Art von Beziehung ist nicht üblich, da die meisten Informationen, die auf diese Weise zusammenhängen, in einer einzigen Tabelle enthalten wären. Mithilfe einer 1:1-Beziehung können Sie die folgenden Aktionen ausführen:

  • Teilen einer Tabelle mit vielen Spalten.
  • Isolieren eines Teils einer Tabelle aus Sicherheitsgründen.
  • Speichern von kurzlebigen Daten, die durch Löschen der Tabelle leicht gelöscht werden könnten.
  • Speichern von Informationen, die nur für eine Teilmenge der Haupttabelle gelten.

In Access wird die Primärschlüsselseite einer 1:1-Beziehung durch ein Schlüsselsymbol gekennzeichnet. Die Fremdschlüsselseite wird auch durch ein Schlüsselsymbol gekennzeichnet.

Definieren von Beziehungen zwischen Tabellen

Wenn Sie eine Beziehung zwischen Tabellen erstellen, müssen die verknüpften Felder nicht dieselben Namen haben. Verknüpfte Felder müssen jedoch denselben Datentyp aufweisen, es sei denn, das Primärschlüsselfeld ist ein AutoNumber-Feld. Sie können ein AutoNumber-Feld nur dann mit einem Number-Feld abgleichen, wenn die FieldSize-Eigenschaft der beiden zusammengehörenden Felder identisch ist. Sie können z. B. ein AutoNumber-Feld und ein Zahlenfeld abgleichen, wenn die FieldSize-Eigenschaft beider Felder vom Typ „Long Integer“ ist. Auch wenn beide zusammengehörenden Felder Zahlenfelder sind, müssen sie dieselbe FieldSize-Eigenschaftseinstellung aufweisen.

Definieren einer 1:n- oder 1:1-Beziehung

Gehen Sie folgendermaßen vor, um eine 1:n- oder 1:1-Beziehung zu erstellen:

  1. Schließen Sie alle Tabellen. Sie können keine Beziehungen zwischen geöffneten Tabellen erstellen oder ändern.

  2. Gehen Sie in Access 2002 oder 2003 folgendermaßen vor:

    1. Drücken Sie F11, um zum Datenbankfenster zu wechseln.
    2. Klicken Sie im Menü Extras auf Beziehungen.

    Klicken Sie in Access 2007, Access 2010 oder Access 2013 auf der Registerkarte Datenbanktools in der Gruppe Anzeigen/Ausblenden auf Beziehungen.

  3. Wenn Sie noch keine Beziehungen in Ihrer Datenbank definiert haben, erscheint automatisch das Dialogfeld Tabelle anzeigen. Wenn Sie die Tabellen hinzufügen möchten, die Sie verknüpfen möchten, das Dialogfeld Tabelle anzeigen jedoch nicht angezeigt wird, klicken Sie im Menü Beziehungen auf Tabelle anzeigen.

  4. Doppelklicken Sie auf die Namen der Tabellen, die Sie verknüpfen möchten, und schließen Sie dann das Dialogfeld Tabelle anzeigen. Um eine Beziehung zwischen einer Tabelle und sich selbst zu erstellen, fügen Sie diese Tabelle zweimal hinzu.

  5. Ziehen Sie das Feld, das Sie von einer Tabelle in Beziehung setzen möchten, auf das entsprechende Feld in der anderen Tabelle. Um mehrere Felder zu ziehen, halten Sie STRG gedrückt, klicken Sie auf jedes Feld, und ziehen Sie sie dann.

    In den meisten Fällen ziehen Sie das Primärschlüsselfeld (dieses Feld wird in Fettdruck angezeigt) aus einer Tabelle in ein ähnliches Feld (dieses Feld hat häufig denselben Namen), das in der anderen Tabelle als Fremdschlüssel bezeichnet wird.

  6. Das Dialogfeld Beziehungen bearbeiten wird angezeigt. Stellen Sie sicher, dass die Feldnamen, die in den beiden Spalten angezeigt werden, korrekt sind. Sie können die Namen bei Bedarf ändern.

    Legen Sie die Beziehungsoptionen fest, falls dies erforderlich ist. Wenn Sie Informationen zu einem bestimmten Element im Dialogfeld Beziehungen bearbeiten haben müssen, klicken Sie auf die Fragezeichenschaltfläche, und klicken Sie dann auf das Element. (Diese Optionen werden weiter unten in diesem Artikel ausführlich erläutert.)

  7. Klicken Sie auf Erstellen, um die Beziehung zu erstellen.

  8. Wiederholen Sie die Schritte 4 bis 7 für jedes Tabellenpaar, das Sie in Beziehung setzen möchten.

    Wenn Sie das Dialogfeld Beziehungen bearbeiten schließen, werden Sie von Access gefragt, ob Sie das Layout speichern möchten. Unabhängig davon, ob Sie das Layout speichern oder nicht speichern, werden die von Ihnen erstellten Beziehungen in der Datenbank gespeichert.

    Hinweis

    Sie können Beziehungen nicht nur in Tabellen, sondern auch in Abfragen erstellen. Die referenzielle Integrität wird jedoch nicht mit Abfragen erzwungen.

Wie man eine n:n-Beziehung definiert

Um eine n:n-Beziehung zu erstellen, gehen Sie wie folgt vor:

  1. Erstellen Sie die beiden Tabellen, die eine n:n-Beziehung haben sollen.

  2. Erstellen Sie eine dritte Tabelle. Dies ist die Verknüpfungstabelle. Fügen Sie in der Verknüpfungstabelle neue Felder hinzu, die die gleichen Definitionen wie die Primärschlüsselfelder aus jeder Tabelle haben, die Sie in Schritt 1 erstellt haben. In der Verknüpfungstabelle fungieren die Primärschlüsselfelder als Fremdschlüssel. Sie können der Verknüpfungstabelle genauso wie in jeder anderen Tabelle weitere Felder hinzufügen.

  3. Legen Sie in der Verknüpfungstabelle den Primärschlüssel so fest, dass die Primärschlüsselfelder aus den beiden anderen Tabellen enthalten sind. In einer „TitelAutoren“-Verknüpfungstabelle würde der Primärschlüssel beispielsweise aus den Feldern BestellungsID und ProduktID bestehen.

    Hinweis

    Gehen Sie wie folgt vor, um einen Primärschlüssel zu erstellen:

    1. Öffnen Sie eine Tabelle in der Entwurfsansicht.

    2. Wählen Sie das Feld oder die Felder aus, das bzw. die Sie als Primärschlüssel definieren möchten. Um ein Feld auszuwählen, klicken Sie auf die Zeilenauswahl für das gewünschte Feld. Um mehrere Felder auszuwählen, halten Sie die Strg-Taste gedrückt, und klicken Sie dann auf die Zeilenauswahl für jedes Feld.

    3. Klicken Sie in Access 2002 oder Access 2003 auf der Symbolleiste auf Primärschlüssel.

      Klicken Sie in Access 2007 auf der Registerkarte Entwurf in der Gruppe Extras auf Primärschlüssel.

      Hinweis

      Wenn die Reihenfolge der Felder in einem Primärschlüssel mit mehreren Feldern von der Reihenfolge dieser Felder in der Tabelle abweichen soll, klicken Sie auf der Symbolleiste auf Indizes, um das Dialogfeld Indizes anzuzeigen, und ordnen Sie dann die Feldnamen für den Index mit dem Namen PrimaryKey neu an.

  4. Definieren Sie eine 1:n-Beziehung zwischen jeder Primärtabelle und der Verknüpfungstabelle.

Referenzielle Integrität

Die referenzielle Integrität ist ein System von Regeln, mit dessen Hilfe Access sicherstellt, dass Beziehungen zwischen Datensätzen in verknüpften Tabellen gültig sind und dass Sie verknüpfte Daten nicht versehentlich löschen oder ändern. Sie können die referenzielle Integrität festlegen, wenn alle folgenden Bedingungen erfüllt sind:

  • Das zu verknüpfende Feld aus der Primärtabelle ist ein Primärschlüssel oder verfügt über einen eindeutigen Index.
  • Die zusammengehörigen Felder haben denselben Datentyp. Es gibt zwei Ausnahmen zu dieser Regel: Ein AutoNumber-Feld kann mit einem Number-Feld verknüpft werden, das als FieldSize-Eigenschaftseinstellung „Long Integer“ aufweist; und ein AutoNumber-Feld, das als FieldSize-Eigenschaftseinstellung eine Replikations-ID aufweist, kann mit einem Number-Feld verknüpft werden, das als FieldSize-Eigenschaftseinstellung eine Replikations-ID aufweist.
  • Beide Tabellen gehören zur gleichen Access-Datenbank. Wenn es sich bei den Tabellen um verknüpfte Tabellen handelt, müssen es Tabellen im Access-Format sein, und Sie müssen die Datenbank öffnen, in der sie gespeichert sind, um die referenzielle Integrität festzulegen. Die referenzielle Integrität kann nicht für verknüpfte Tabellen aus Datenbanken in anderen Formaten erzwungen werden.

Die folgenden Regeln gelten, wenn Sie die referenzielle Integrität verwenden:

  • Sie können keinen Wert in das Fremdschlüsselfeld der verknüpften Tabelle eingeben, der nicht im Primärschlüssel der Primärtabelle vorhanden ist. Sie können jedoch einen Nullwert in den Fremdschlüssel eingeben. Dadurch wird festgelegt, dass die Datensätze nicht miteinander verknüpft sind. Sie können z. B. keine Bestellung haben, die einem Kunden zugewiesen ist, der nicht vorhanden ist. Sie können jedoch eine Bestellung haben, die niemandem zugewiesen ist, indem Sie einen Nullwert in das Feld KundenID eingeben.
  • Sie können einen Datensatz nicht aus einer primären Tabelle löschen, wenn zugehörige Datensätze in einer verknüpften Tabelle vorhanden sind. Sie können z. B. einen Mitarbeiterdatensatz nicht aus der Tabelle „Mitarbeiter“ löschen, wenn dem Mitarbeiter in der Tabelle „Bestellungen“ Bestellungen zugewiesen sind.
  • Sie können einen Primärschlüsselwert in der Primärtabelle nicht ändern, wenn dieser Datensatz verknüpfte Datensätze enthält. Sie können z. B. die ID eines Mitarbeiters in der Tabelle „Mitarbeiter“ nicht ändern, wenn diesem Mitarbeiter in der Tabelle „Bestellungen“ Bestellungen zugewiesen sind.

Kaskadierende Updates und Deletes

Für Beziehungen, in denen die referenzielle Integrität erzwungen wird, können Sie angeben, ob Access die miteinander verknüpften Datensätze automatisch kaskadierend aktualisieren oder kaskadierend löschen soll. Wenn Sie diese Optionen festlegen, werden Lösch- und Aktualisierungsvorgänge ermöglicht, die normalerweise durch Regeln für die referenzielle Integrität verhindert würden. Wenn Sie Datensätze löschen oder Primärschlüsselwerte in einer Primärtabelle ändern, nimmt Access die erforderlichen Änderungen an verknüpften Tabellen vor, um die referenzielle Integrität zu erhalten.

Wenn Sie beim Definieren einer Beziehung auf das Kontrollkästchen Aktualisierungsweitergabe an verwandte Felder klicken, aktualisiert Microsoft Access den Primärschlüssel automatisch in allen verknüpften Datensätzen auf den neuen Wert, wenn Sie den Primärschlüssel eines Datensatzes in der Primärtabelle ändern. Wenn Sie beispielsweise die ID eines Kunden in der Tabelle „Kunden“ ändern, wird das Feld KundenID in der Tabelle „Bestellungen“ automatisch für jede Bestellung dieses Kunden aktualisiert, sodass die Beziehung nicht unterbrochen wird. Greifen Sie auf Kaskadenaktualisierungen zu, ohne eine Nachricht anzuzeigen.

Hinweis

Wenn der Primärschlüssel in der Primärtabelle ein AutoWert-Feld ist, hat die Option Aktualisierungsweitergabe an verwandte Felder keine Auswirkungen, da Sie den Wert in einem AutoWert-Feld nicht ändern können.

Wenn Sie beim Definieren einer Beziehung das Kontrollkästchen Löschweitergabe an verwandte Datensätze aktivieren, löscht Access jedes Mal, wenn Sie Datensätze in der primären Tabelle löschen, automatisch die verknüpften Datensätze in der verknüpften Tabelle. Wenn Sie beispielsweise einen Kundendatensatz aus der Tabelle „Kunden“ löschen, werden alle Bestellungen des Kunden automatisch aus der Tabelle „Bestellungen“ gelöscht. (Dies schließt Datensätze in der Tabelle „Bestelldetails“ ein, die sich auf die Datensätze „Bestellungen“ beziehen). Wenn Sie Datensätze aus einem Formular oder Datenblatt löschen, während das Kontrollkästchen Löschweitergabe an verwandte Datensätze aktiviert ist, warnt Access Sie, dass möglicherweise auch verknüpfte Datensätze gelöscht werden. Wenn Sie Datensätze jedoch mithilfe einer Löschabfrage löschen, löscht Access die Datensätze in verknüpften Tabellen automatisch, ohne eine Warnung anzuzeigen.

Join-Typen

Es gibt drei primäre Join Typen: Sie können sie im folgenden Screenshot sehen:

Screenshot der Verknüpfungseigenschaften, der drei Verknüpfungstypen zeigt.

Option 1 definiert eine inneren Join. Ein innerer Join ist ein Join, bei dem Datensätze aus zwei Tabellen nur dann in den Ergebnissen einer Abfrage kombiniert werden, wenn die Werte in den verknüpften Feldern eine bestimmte Bedingung erfüllen. In einer Abfrage ist der Standard-Join ein innerer Join, der Datensätze nur auswählt, wenn die Werte in den verknüpften Feldern übereinstimmen.

Option 2 definiert eine linke äußere Verknüpfung. Eine linke äußere Verknüpfung ist ein Join, bei dem alle Datensätze von der linken Seite des LEFT JOIN-Vorgangs in der SQL-Anweisung der Abfrage zu den Ergebnissen der Abfrage hinzugefügt werden, auch wenn keine übereinstimmenden Werte im verknüpften Feld aus der Tabelle auf der rechten Seite vorhanden sind.

Option 3 definiert eine rechte äußere Verknüpfung. Eine rechte äußere Verknüpfung ist ein Join, bei dem alle Datensätze von der rechten Seite des RIGHT JOIN-Vorgangs in der SQL-Anweisung der Abfrage zu den Ergebnissen der Abfrage hinzugefügt werden, auch wenn keine übereinstimmenden Werte im verknüpften Feld aus der Tabelle auf der linken Seite vorhanden sind.