Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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. Dieser Artikel umfasst Folgendes:
- Was sind Tabellenbeziehungen?
- Arten von Tabellenbeziehungen
- Eins-zu-viele-Beziehungen
- M:n-Beziehungen
- 1:1-Beziehungen
- So definieren Sie Beziehungen zwischen Tabellen
- So definieren Sie eine 1:n- oder 1:1-Beziehung
- So definieren Sie eine viele-zu-viele-Beziehung
- Referenzielle Integrität
- Kaskadierende Updates und Löschungen
- Join-Typen
Was sind Tabellenbeziehungen?
In einer relationalen Datenbank können Sie durch Beziehungen redundante Daten verhindern. Wenn Sie z. B. eine Datenbank entwerfen, die Informationen zu Büchern nachverfolgt, verfügen Sie möglicherweise über eine Tabelle mit dem Namen "Titel", die Informationen zu jedem Buch speichert, z. B. den Titel des Buchs, das Datum der Veröffentlichung und den Herausgeber. Es gibt auch Informationen, die Sie möglicherweise über den Herausgeber speichern möchten, z. B. die Telefonnummer, Adresse und Postleitzahl des Herausgebers. Wenn Sie alle diese Informationen in der Tabelle "Titel" speichern, würde die Telefonnummer des Herausgebers für jeden Titel dupliziert, den der Herausgeber druckt.
Eine bessere Lösung besteht darin, die Informationen des Herausgebers nur einmal in einer separaten Tabelle zu speichern, die als "Herausgeber" bezeichnet wird. Anschließend fügen Sie einen Zeiger in die Tabelle "Titel" ein, die auf einen Eintrag in der Tabelle "Herausgeber" verweist.
Um sicherzustellen, dass Ihre Daten synchronisiert bleiben, können Sie die referenzielle Integrität zwischen Tabellen erzwingen. Referenzielle Integritätsbeziehungen sorgen dafür, dass Informationen in einer Tabelle mit Informationen in einer anderen übereinstimmen. Beispielsweise muss jeder Titel in der Tabelle "Titel" einem bestimmten Herausgeber in der Tabelle "Herausgeber" zugeordnet sein. Der Datenbank kann kein Titel für einen Herausgeber hinzugefügt werden, der in der Datenbank nicht vorhanden ist.
Mit logischen Beziehungen in einer Datenbank können Sie Daten effizient abfragen und Berichte erstellen.
Arten von Tabellenbeziehungen
Eine Beziehung funktioniert durch Abgleichen von Daten in Schlüsselspalten, in der Regel Spalten (oder Felder), die denselben Namen in beiden Tabellen aufweisen. In den meisten Fällen verbindet die Beziehung den Primärschlüssel oder die eindeutige Bezeichnerspalte 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 beispielsweise die Umsätze der einzelnen Buchtitel nachverfolgen möchten, erstellen Sie eine Beziehung zwischen der Primärschlüsselspalte (nennen wir sie title_ID) in der Tabelle "Titel" und einer Spalte in der Tabelle "Vertrieb", die title_ID benannt ist. Die title_ID Spalte in der Tabelle "Vertrieb" ist der Fremdschlüssel.
Es gibt drei Arten von Beziehungen zwischen Tabellen. Die Art der beziehung, die erstellt wird, hängt davon ab, wie die zugehörigen Spalten definiert werden.
Eins-zu-viele-Beziehungen
Eine Eins-zu-viele-Beziehung ist die häufigste Art von Beziehung. In dieser Art von Beziehung kann eine Zeile in Tabelle A viele übereinstimmende Zeilen in Tabelle B aufweisen. Eine Zeile in Tabelle B kann jedoch nur eine übereinstimmende Zeile in Tabelle A aufweisen. Beispielsweise weisen die Tabellen "Herausgeber" und "Titel" eine 1:n-Beziehung auf. Das heißt, jeder Herausgeber produziert viele Titel. Jeder Titel stammt jedoch nur aus einem Herausgeber.
Eine Eins-zu-vielen-Beziehung wird erstellt, wenn nur eine der verknüpften Spalten ein Primärschlüssel ist oder eine eindeutige Einschränkung hat.
Im Beziehungsfenster in Access wird die Primärschlüsselseite einer 1:n-Beziehung durch eine Zahl 1 gekennzeichnet. Die Fremdschlüsselseite einer Beziehung wird durch ein Unendlichkeitssymbol gekennzeichnet.
M:n-Beziehungen
In einer n:n-Beziehung kann eine Zeile in Tabelle A viele übereinstimmende Zeilen in Tabelle B aufweisen und umgekehrt. Sie erstellen eine solche Beziehung, indem Sie eine dritte Tabelle definieren, die als Verknüpfungstabelle bezeichnet wird. Der Primärschlüssel der Verbindungstabelle besteht aus den Fremdschlüsseln aus Tabelle A und Tabelle B. Beispielsweise weisen die Tabelle „Autoren“ und die Tabelle „Titel“ eine Viele-zu-Viele-Beziehung auf, die durch eine Eins-zu-Viele-Beziehung von jeder dieser Tabellen zur Tabelle „TitleAuthors“ definiert wird. Der Primärschlüssel der Tabelle "TitleAuthors" ist die Kombination aus der Spalte au_ID (Primärschlüssel der Tabelle "Autoren") und der spalte title_ID (Primärschlüssel "Titel" der Tabelle).
1:1-Beziehungen
In einer 1:1-Beziehung kann eine Zeile in Tabelle A nicht mehr als eine übereinstimmende Zeile in Tabelle B enthalten 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 sich auf diese Weise beziehen, in einer Tabelle enthalten wären. Sie können eine 1:1-Beziehung verwenden, um die folgenden Aktionen auszuführen:
- Dividieren Sie eine Tabelle mit vielen Spalten.
- Einen Teil einer Tabelle aus Sicherheitsgründen isolieren.
- Speichern Sie Daten, die kurzlebig sind und leicht gelöscht werden können, indem Sie die Tabelle löschen.
- Speichern Sie 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 ist auch durch ein Schlüsselsymbol gekennzeichnet.
So definieren Sie Beziehungen zwischen Tabellen
Wenn Sie eine Beziehung zwischen Tabellen erstellen, müssen die zugehörigen Felder nicht dieselben Namen haben. Verwandte Felder müssen jedoch denselben Datentyp aufweisen, es sei denn, das Primärschlüsselfeld ist ein AutoWert-Feld. Sie können ein AutoNummer-Feld nur mit einem Zahlenfeld abgleichen, wenn die Eigenschaft "Feldgröße" beider übereinstimmenden Felder identisch ist. Sie können beispielsweise ein AutoWert-Feld und ein Zahlenfeld zuordnen, wenn die Feldgrößeneigenschaft beider Felder "Long Integer" ist. Auch wenn beide übereinstimmenden Felder Zahlenfelder sind, müssen sie dieselbe Einstellung für "FieldSizeproperty" aufweisen.
So definieren Sie eine 1:n- oder 1:1-Beziehung
Gehen Sie wie folgt vor, um eine Eins-zu-viele-Beziehung oder eine Eins-zu-eins-Beziehung zu erstellen:
Schließen Sie alle Tabellen. Sie können keine Beziehungen zwischen geöffneten Tabellen erstellen oder ändern.
Führen Sie in Access 2002 oder Access 2003 die folgenden Schritte aus:
- Drücken Sie F11, um zum Datenbankfenster zu wechseln.
- Klicken Sie im Menü "Extras" auf "Beziehungen".
Klicken Sie in Access 2007, Access 2010 oder Access 2013 auf der Registerkarte "Datenbanktools" auf "Beziehungeneinblenden/ausblenden".
Wenn Sie noch keine Beziehungen in Ihrer Datenbank definiert haben, wird das Dialogfeld "Tabelle anzeigen " automatisch angezeigt. Wenn Sie die Tabellen hinzufügen möchten, die Sie verknüpfen möchten, aber das Dialogfeld "Tabelle anzeigen" nicht angezeigt wird, klicken Sie im Menü "Beziehungen" auf "Tabelle anzeigen".
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.
Ziehen Sie das Feld, das Sie aus einer Tabelle mit dem verknüpften Feld in der anderen Tabelle verknüpfen möchten. Wenn Sie mehrere Felder ziehen möchten, drücken Sie STRG, klicken Sie auf jedes Feld, und ziehen Sie sie dann.
In den meisten Fällen ziehen Sie das Primärschlüsselfeld (dieses Feld wird fett formatiert) aus einer Tabelle in ein ähnliches Feld (dieses Feld hat häufig denselben Namen), der in der anderen Tabelle als Fremdschlüssel bezeichnet wird.
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 bei Bedarf die Beziehungsoptionen fest. Wenn Sie informationen zu einem bestimmten Element im Dialogfeld "Beziehungen bearbeiten " haben müssen, klicken Sie auf die Fragezeichenschaltfläche und dann auf das Element. (Diese Optionen werden weiter unten in diesem Artikel ausführlich erläutert.)
Klicken Sie auf "Erstellen ", um die Beziehung zu erstellen.
Wiederholen Sie die Schritte 4 bis 7 für jedes Tabellenpaar, das Sie verknüpfen möchten.
Wenn Sie das Dialogfeld "Beziehungen bearbeiten " schließen, fragt Access, ob Sie das Layout speichern möchten. Unabhängig davon, ob Sie das Layout speichern oder nicht speichern, werden die beziehungen, die Sie erstellen, 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.
So definieren Sie eine viele-zu-viele-Beziehung
Führen Sie die folgenden Schritte aus, um eine Viele-zu-Viele-Beziehung zu erstellen:
Erstellen Sie die beiden Tabellen, die eine m:n-Beziehung aufweisen.
Erstellen Sie eine dritte Tabelle. Dies ist die Verbindungstabelle. Fügen Sie in der Verknüpfungstabelle neue Felder mit den gleichen Definitionen wie die Primärschlüsselfelder aus jeder Tabelle hinzu, die Sie in Schritt 1 erstellt haben. In der Verknüpfungstabelle funktionieren die Primärschlüsselfelder als Fremdschlüssel. Sie können der Verknüpfungstabelle weitere Felder hinzufügen, genau wie bei jeder anderen Tabelle.
Legen Sie in der Verknüpfungstabelle den Primärschlüssel so fest, dass er die Primärschlüsselfelder aus den anderen beiden Tabellen enthält. Beispielsweise besteht der Primärschlüssel in einer Verknüpfungstabelle "TitleAuthors" aus den Feldern "OrderID " und "ProductID ".
Hinweis
Führen Sie die folgenden Schritte aus, um einen Primärschlüssel zu erstellen:
Öffnen Sie eine Tabelle in der Entwurfsansicht.
Wählen Sie das Feld oder die Felder aus, die Sie als Primärschlüssel definieren möchten. Um ein Feld auszuwählen, klicken Sie auf die Zeilenmarkierer für das gewünschte Feld. Um mehrere Felder auszuwählen, halten Sie die STRG-TASTE gedrückt, und klicken Sie dann für jedes Feld auf den Zeilenmarkierer.
Klicken Sie in Access 2002 oder in Access 2003 auf der Symbolleiste auf "Primärschlüssel ".
Klicken Sie in Access 2007 auf "Primärschlüssel" in der Gruppe "Extras" auf der Registerkarte "Entwurf".
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.
Definieren Sie eine 1:n-Beziehung zwischen jeder Primärtabelle und der Verbindungstabelle.
Referenzielle Integrität
Referenzielle Integrität ist ein System von Regeln, das Access verwendet, um sicherzustellen, dass Beziehungen zwischen Datensätzen in verknüpften Tabellen gültig sind und dass Sie verwandte Daten nicht versehentlich löschen oder ändern. Sie können die referenzielle Integrität festlegen, wenn alle folgenden Bedingungen erfüllt sind:
- Das übereinstimmende Feld aus der Primärtabelle ist ein Primärschlüssel oder hat einen eindeutigen Index.
- Die zugehörigen Felder weisen denselben Datentyp auf. Es gibt zwei Ausnahmen. Ein AutoWert-Feld kann mit einem Zahlenfeld verknüpft sein, das eine
FieldSizeEigenschaftseinstellung von Long Integer aufweist, und ein AutoWert-Feld mit einerFieldSizeEigenschaftseinstellung der Replikations-ID kann mit einem Zahlenfeld verknüpft werden, das über eineFieldSizeEigenschaftseinstellung der Replikations-ID verfügt. - Beide Tabellen gehören zur gleichen Access-Datenbank. Wenn die Tabellen verknüpft sind, müssen sie Tabellen im Access-Format sein, und Sie müssen die Datenbank öffnen, in der sie gespeichert werden, um die referenzielle Integrität festzulegen. Referenzielle Integrität kann für verknüpfte Tabellen aus Datenbanken in anderen Formaten nicht erzwungen werden.
Die folgenden Regeln gelten bei der Verwendung von referenzieller Integrität:
- Sie können keinen Wert in das Fremdschlüsselfeld der verknüpften Tabelle eingeben, die nicht im Primärschlüssel der Primärtabelle vorhanden ist. Sie können jedoch einen Nullwert im Fremdschlüssel eingeben. Dies gibt an, 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 im Feld "CustomerID " einen Null-Wert eingeben.
- Sie können einen Datensatz nicht aus einer Primärtabelle löschen, wenn übereinstimmende Datensätze in einer verknüpften Tabelle vorhanden sind. Sie können z. B. keinen Mitarbeiterdatensatz aus der Tabelle "Mitarbeiter" löschen, wenn dem Mitarbeiter in der Tabelle "Bestellungen" Bestellungen zugewiesen sind.
- Sie können keinen Primärschlüsselwert in der Primärtabelle ändern, wenn dieser Datensatz verwandte Datensätze enthält. Beispielsweise können Sie die ID eines Mitarbeiters in der Tabelle "Mitarbeiter" nicht ändern, wenn diesem Mitarbeiter in der Tabelle "Bestellungen" Bestellungen zugewiesen sind.
Kaskadierende Updates und Löschungen
Bei Beziehungen, in denen die referenzielle Integrität erzwungen wird, können Sie festlegen, ob Access verknüpfte Datensätze automatisch bei Änderungen aktualisieren oder beim Löschen entfernen soll. Wenn Sie diese Optionen festlegen, werden Lösch- und Aktualisierungsvorgänge aktiviert, die in der Regel durch referenzielle Integritätsregeln verhindert werden. Wenn Sie Datensätze löschen oder Primärschlüsselwerte in einer Primärtabelle ändern, nimmt Access die erforderlichen Änderungen an verwandten Tabellen vor, um die referenzielle Integrität beizubehalten.
Wenn Sie das Kontrollkästchen "kaskadierende Aktualisierungsfelder" aktivieren, während Sie eine Beziehung definieren, aktualisiert Microsoft Access jedes Mal, wenn Sie den Primärschlüssel eines Datensatzes in der Primärtabelle ändern, den Primärschlüssel automatisch auf den neuen Wert in allen verwandten Datensätzen. Wenn Sie beispielsweise die ID eines Kunden in der Tabelle "Kunden" ändern, wird das Feld "Kunden-NR " in der Tabelle "Bestellungen" automatisch für alle Bestellungen dieses Kunden aktualisiert, sodass die Beziehung nicht unterbrochen wird. Access kaskadiert Updates, ohne eine Meldung anzuzeigen.
Hinweis
Wenn es sich bei dem Primärschlüssel in der Primärtabelle um ein AutoWert-Feld handelt, hat das Aktivieren von Verknüpfte Felder bei Aktualisierung automatisch anpassen keine Auswirkung, da Sie den Wert in einem AutoWert-Feld nicht ändern können.
Wenn Sie das Kontrollkästchen "Löschweitergabe an verwandte Datensätze" aktivieren, wenn Sie eine Beziehung definieren, löscht Access jedes Mal, wenn Sie Datensätze in der primären Tabelle löschen, automatisch verwandte 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 mit den Datensätzen "Orders" zusammenhängen). Wenn Sie Datensätze aus einem Formular oder Datenblatt löschen, wenn das Kontrollkästchen "Verknüpfte Datensätze überlappend löschen " aktiviert ist, warnt Access Sie, dass verwandte Datensätze möglicherweise auch gelöscht werden. Wenn Sie Datensätze jedoch mithilfe einer Löschabfrage löschen, löscht Access die Datensätze automatisch in verknüpften Tabellen, ohne eine Warnung anzuzeigen.
Join-Typen
Es gibt drei Verknüpfungstypen. Sie können sie im folgenden Screenshot sehen:
Option 1 definiert eine innere Verknüpfung. Eine innere Verknüpfung ist eine Verknüpfung, bei der Datensätze aus zwei Tabellen nur dann in den Ergebnissen einer Abfrage kombiniert werden, wenn Werte in den verknüpften Feldern eine bestimmte Bedingung erfüllen. In einer Abfrage ist die Standardverknnung eine innere Verknüpfung, die Datensätze nur auswählt, wenn Werte in den verknüpften Feldern übereinstimmen.
Option 2 definiert eine linke äußere Verknüpfung. Eine linke äußere Verknüpfung ist eine Verknüpfung, bei der 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 eine Verknüpfung, bei der 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 im verknüpften Feld auf der linken Seite keine übereinstimmenden Werte vorhanden sind.