Referentielle Integrität

Der große Vorteil von Datenbanken gegenüber reinen Tabellenkalkulationen wie Excel ist, dass Sie in Datenbanken Beziehungen zwischen den Feldern zweier Tabellen herstellen können. Das an der Beziehung beteiligte Feld einer Tabelle mit einem eindeutigen Index (meist das Primärschlüsselfeld) wird dabei mit dem Fremdschlüsselfeld einer anderen Tabelle verknüpft. Das geht grundsätzlich auch ohne das Definieren von Beziehungen. Beziehungen steuern aber noch ein entscheidendes Feature bei: die referentielle Integrität. Damit können Sie beispielsweise sicherstellen, dass das Fremdschlüsselfeld auch nur Werte aufnimmt, die im Primärschlüsselfeld der verknüpften Tabelle enthalten sind. Wie das geht und was Sie mit der Festlegung referentieller Integrität noch erreichen können, lernen Sie in diesem Artikel.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 2101_ReferentielleIntegritaet.accdb.

Was ist referentielle Integrität

Referentielle Integrität legt Bedingungen fest, mit denen wir die Integrität der Daten in durch Beziehungen verknüpften Tabellen sicherstellen wollen. Referentielle Integrität soll dabei sicherstellen, dass das Fremdschlüsselfeld der einen Tabelle der Beziehung nur solche Werte aufnehmen kann, die im Primärschlüsselfeld der anderen Tabelle der Beziehung auftreten.

Zusätzlich zur referentiellen Integrität können Sie unter Access und auch in anderen Datenbanksystem noch weitere Regeln festlegen:

  • Die Löschweitergabe legt das Vorgehen beim Löschen eines der Datensätze aus der Tabelle mit dem an der Beziehung beteiligten Primärschlüssel fest. Ist die Löschweitergabe aktiviert, werden damit verknüpfte Datensätze mitgelöscht. Ist die Löschweitergabe nicht aktiviert, kann ein Datensatz aus der Tabelle mit dem an der Beziehung beteiligten Primärschlüsselfeld nicht gelöscht werden, wenn es bereits damit verknüpfte Datensätze gibt.
  • Die Aktualisierungsweitergabe sorgt dafür, dass beim Ändern der Primärschlüsselwerte die Werte der an der Beziehung beteiligten Fremdschlüsselfelder entsprechend angepasst werden.

Wir zeigen im folgenden durch praktische Beispiele, wie sich diese Einstellungen in der Praxis auswirken.

Beispiel für referentielle Integrität

Um die Auswirkungen der referentiellen Integrität zu veranschaulichen, schauen wir uns zwei einfache Tabellen an, bei denen jeweils ein Datensatz der einen Tabelle mit einem Datensatz der anderen Tabelle verknüpft wird.

Diese Verknüpfung entsteht formal zum jetzigen Zeitpunkt einfach nur dadurch, dass die eine Tabelle, tblKunden, ein Feld namens AnredeID enthält. Dieses soll Werte aus einer weiteren Tabelle namens tblAnreden aufnehmen, die wiederum ein Feld namens AnredeID enthält.

In der Tabelle tblAnreden soll das Feld AnredeID jeden Datensatz eindeutig identifizieren können.

Deshalb erzeugen wir für dieses Feld einen eindeutigen Index, indem wir diesem Feld die Eigenschaft Primärschlüssel zuweisen (siehe Bild 1).

Tabelle mit dem an der Beziehung beteiligten Primärschlüsselfeld

Bild 1: Tabelle mit dem an der Beziehung beteiligten Primärschlüsselfeld

In der Tabelle tblAnreden tragen wir nun zwei Datensätze ein, welche im Feld Anrede die Werte Herr und Frau enthalten (siehe Bild 2).

Datensätze der Tabelle tblAnreden

Bild 2: Datensätze der Tabelle tblAnreden

In einer weitere Tabelle namens tblKunden wollen wir für jeden Kunden eine Anrede festlegen. Das könnten wir erledigen, indem wir einfach ein Feld namens Anrede hinzufügen, in das wir die Bezeichnung der Anrede wie Herr oder Frau eintragen.

Das Problem dabei ist, dass der Benutzer auch alle möglichen anderen Werte in dieses Feld eintragen kann.

Das führt zu Problemen, wenn man irgendwann einmal alle Kunden ermitteln möchte, deren Anrede Frau lautet oder auch Herr. Um das zu unterbinden, legen wir kein Textfeld namens Anrede an, sondern ein Zahlenfeld namens AnredeID (siehe Bild 3).

Tabelle mit dem an der Beziehung beteiligten Fremdschlüsselfeld

Bild 3: Tabelle mit dem an der Beziehung beteiligten Fremdschlüsselfeld

In dieses wollen wir nun die Zahlen eintragen, die im Feld AnredeID der Tabelle tblAnreden für die jeweiligen Anreden definiert sind, hier also 1 für Herr und 2 für Frau.

Keine Einschränkung ohne referentielle Integrität

Ohne weitere Schritte können wir in das Feld AnredeID der Tabelle tblKunden jedoch nicht nur die Werte 1 und 2 eintragen, die im Feld AnredeID der Tabelle tblAnreden enthalten sind, sondern auch alle anderen Zahlenwerte.

Wenn wir hier den Zahlenwert 3 eintragen und irgendwann einmal nachschauen wollen, welche Anrede wir für diesen Kunden festgelegt haben, finden wir in der Tabelle tblAnreden keinen passenden Datensatz.

Referentielle Integrität per Beziehungen-Fenster

Um so etwas zu verhindern, verwenden wir Beziehungen mit referentieller Integrität. Eine solche Beziehung können wir über die Benutzeroberfläche nur im Beziehungsfenster definieren. Dieses öffnen Sie mit dem Ribbon-Befehl Datenbanktools|Be-zie-hungen|Be-zie-hun-gen.

Zusätzlich zum nun erscheinenden Beziehungen-Fenster finden Sie ab Access 2016 noch einen Dialog namens Tabellen hinzufügen vor (in früheren Versionen hieß dieser Tabelle anzeigen). Aus diesem wählen Sie die Tabellen aus, zwischen denen Sie eine Beziehung aufbauen wollen, und fügen diese mit einem Klick auf die Schaltfläche Ausgewählte Tabellen hinzufügen zum Beziehungen-Fenster hinzu (siehe Bild 4). Sie können die Tabellen auch per Drag and Drop in das Beziehungen-Fenster ziehen.

Tabelle zum Beziehungen-Fenster hinzufügen

Bild 4: Tabelle zum Beziehungen-Fenster hinzufügen

Beziehung zwischen zwei Tabellen herstellen

Ebenfalls per Drag and Drop erstellen Sie die Beziehung zwischen den beiden Tabellen. Dazu ziehen Sie das Feld AnredeID aus der Tabelle tblKunden auf das Feld AnredeID der Tabelle tblAnreden (siehe Bild 5). In diesem Fall können Sie auch andersherum das Feld AnredeID aus der Tabelle tblAnreden auf das Feld AnredeID der Tabelle tblKunden ziehen.

Herstellen einer Beziehung per Drag and Drop

Bild 5: Herstellen einer Beziehung per Drag and Drop

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar