Access 2010: Referentielle Integrität

Aus Augenbit

Referentielle Integrität

Durch Beziehungen werden zwischen Tabellen lose Verbindungen geschaffen. Ändern sich innerhalb einer Tabelle die Daten, über welche eine Beziehung zu einer anderen Tabelle besteht (z.B. durch Löschung eines Datensatzes), so werden diese Veränderungen nicht an die andere Tabelle weitergegeben. Hieraus können Probleme entstehen, da vielleicht aus einer Tabelle heraus auf einen Datensatz in einer anderen Tabelle verwiesen wird, der gar nicht mehr existiert. Derartige Fehler können relativ leicht entstehen. Nehmen wir an ein Lehrer geht in den Ruhestand und wird in der Schuldatenbank aus der Tabelle mit Lehrernamen gelöscht. Die mit der Lehrertabelle verknüpfte Überstundentabelle enthält aber immer noch Verweise auf den nun nicht mehr in der Lehrertabelle existierenden Lehrer. Es ist eine Inkonsistenz innerhalb der Daten enstanden. Ein oder mehrere Datensätze in der Überstundentabelle können nicht mehr zugeordnet werden.

Um derartige Probleme zu vermeiden, kann bei der Erstellung von Beziehungen zwischen einzelnen Tabellen zusätzlich die sogenannte referentielle Integrität definiert werden. Sie verhindert das Löschen von Datensätzen, die noch mit anderen Datensätzen in Verbindung stehen. Beim Versuch den Lehrer im oben genannten Beispiel aus der Lehrertabelle zu löschen würde bei aktiver referentieller Integrität Access den Löschbefehl verweigern.

Zusätzlich zur referentiellen Integrität lässt sich die Option Lösch- und Aktualisierungsweitergabe wählen. Diese bewirkt, dass Änderungen an einer Tabelle an mit Ihr in Beziehung stehende Tabellen weitergereicht werden. Wird beispielsweise ein Datensatz gelöscht, wie zum Beispiel der Lehrer im bekannten Beispiel, so werden automatisch auch alle Datensätze in den untergeordneten Tabellen mitgelöscht, die auf diesen Lehrer verwiesen. Würde ein Lehrer aus irgendeinem Grund eine neue Personalnummer erhalten (welche in unserem Beispiel als Primäschlüssel diente), so würde diese Veränderung an alle untergeordneten Tabellen weitergegeben werden.