window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-TCJTE9L38H');

Referentielle Integrität

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

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

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar