Referentielle Integrität (RI) ist ein Begriff aus der Informatik. Man versteht darunter Bedingungen, die zur Sicherung der Datenintegrität bei Nutzung relationaler Datenbanken beitragen können. Nach der RI-Regel dürfen Datensätze (über ihre Fremdschlüssel) nur auf existierende Datensätze verweisen.
Danach besteht die RI grundsätzlich aus zwei Teilen:[1]
„Die referentielle Integrität (auch Beziehungsintegrität) besagt, dass Attributwerte eines Fremdschlüssels auch als Attributwert des Primärschlüssels vorhanden sein müssen.“[2]
„Über die referentielle Integrität werden in einem DBMS die Beziehungen zwischen Datenobjekten kontrolliert.“
Ursprung/Hintergrund: Nach der Relationentheorie werden zu speichernde Daten i. d. R. auf mehrere Tabellen aufgeteilt. Die Datensätze dieser Tabellen weisen untereinander meist logische Zusammenhänge (Beziehungen) auf. Siehe Beispiel „Bücherei“: Buch X ist entliehen von Büchereibenutzer Y. Daraus entstand die Anforderung, die Konsistenz dieser „Referenzen“ bei Bedarf durch ein besonderes und sicheres Konzept (die „RI“) schützen zu können.
Nach der wörtlichen Bedeutung bezeichnet „RI“ einen gegebenen oder beabsichtigten Qualitätszustand von Daten: Integer (makellos, heil, „ganz“[3]) im Hinblick auf die darin enthaltenen gegenseitigen Referenzen. Gleichzeitig versteht man unter „RI“ jedoch auch die Integritätsregel bzw. die funktionale Unterstützung, durch die ein DBMS diese Qualität sichert.
Die RI-Regel ist eine Erweiterung bei der Spezifikation von Beziehungstypen – die meist eine Kardinalität von 1:n aufweisen. Die darin beteiligten Entitätstypen (= Tabellen) bezeichnet man – rollenspezifisch für genau einen Beziehungstyp, nicht generell für die Tabelle geltend – als Mastertabelle und Detailtabelle. Wirksam sind diese Festlegungen für die in konkreten Beziehungen stehenden Datensätze. Master- und Detailtabelle kann auch dieselbe Tabelle sein (rekursive Beziehungen).
Andere Bezeichnungen für Mastertabelle sind Primär-, Parent-, Eltern-[4] oder referenzierte Tabelle. Die Detailtabelle wird auch verknüpfte*, Child/Kind-, abhängige, verwandte*, referenzierende, verweisende Tabelle[5] oder „Tabelle mit dem Fremdschlüssel“ genannt.
(*) = begrifflich eher ungeeignet, weil das Abhängigkeitsverhältnis unklar bleibt.
Ein klassischer Fall für RI-Spezifikationen inkl. Löschweitergabe sind sog. Beziehungstabellen, die häufig nur die Fremdschlüssel der an einer n:m-Beziehung beteiligten Datensätze enthalten. Verweise auf nicht existente Primärdatensätze darf es hier nicht geben; wird einer der beiden Primärdatensätze gelöscht, so kann/muss auch der Datensatz in der Beziehungstabelle gelöscht werden.
Abgekürzt wird der (etwas sperrige) Begriff „referentielle Integrität“ (im Englischen “referential Integrity”) häufig mit RI oder R.I., auch wird verbreitet die neue deutsche Rechtschreibung (referenziell mit „z“) verwendet.
Abgrenzung:
Während die RI grundsätzlich vor inkonsistenten Datenaktionen schützt, bieten viele Datenbanksysteme Zusatzfunktionen an, die bei Updates von Master-Datensätzen nützlich sein können:
Diese Funktionen können in der RI-Spezifikation optional gesetzt und (je nach DBMS) durch zusätzliche Bedingungen (siehe Beispiel) erweitert/präzisiert werden. Sie wirken nur bei Updates von Masterdatensätzen, Detaildaten können jederzeit gelöscht oder anderen (vorhandenen) Mastersätzen zugeordnet werden.
Weitere Besonderheiten im Zusammenhang mit der RI sind:
Die RI wird im Verlauf der Datenmodellierung als relevant erkannt, festgelegt und in der jeweiligen Syntax spezifiziert. Dies geschieht je Beziehungstyp (häufig vereinfachend nur „Beziehung“ genannt), an dem jeweils mehrere Entitätstypen (= Tabellen) beteiligt sind. Die Spezifikationen sind Teil des einmalig erstellten Datenbankschemas.
Aufgrund dieser Angaben überprüft das DBMS bei der Ausführung von ändernden Datenoperationen im laufenden Betrieb die Einhaltung der RI-Regeln. Solche Operationen werden von IT-Anwendungen (ggf. nach einer Eingabe bzw. Erfassung von Benutzern) ausgelöst und führen bei Einhaltung der Regeln zu Veränderungen im Datenbestand, ansonsten zu Fehlermeldungen bei unverändertem Bestand.
Die nebenstehende Grafik zeigt am Beispiel eines einfachen ER-Diagramms, welche Überlegungen im Zusammenhang mit der Festlegung von RI-Regeln angestellt werden können:
Der Umfang an Unterstützung zur RI, den Datenbanksysteme leisten können, kann unterschiedlich sein. Neben der Grundfunktion, die RI überhaupt zu schützen, kann das zum Beispiel die folgenden Zusatzaspekte betreffen:
Zur Darstellung der referentiellen Integrität in Datenmodellgrafiken werden kaum einheitliche Regeln angewendet. In manchen Modell-Werkzeugen wird der Beziehungspfeil bei RI fett dargestellt. Zusatzfunktionen wie Löschweitergabe sind meist nur textuell in den spezifizierten Beziehungstypen bzw. im Quellcode des Datenbankschemas sichtbar.
Technisch wird die referentielle Integrität über einen so genannten Fremdschlüssel realisiert. Die beteiligten Relationen (= Tabellen) benötigen gleichartige Attribute, die in der abhängigen Tabelle als Fremdschlüssel und in der anderen Relation als Primärschlüssel verwendet werden. Beide Attribute müssen vom selben oder einem kompatiblen Datentyp sein. Die Datensätze verweisen („referenzieren“) mit dem Fremdschlüssel auf Datensätze mit identischem Wert in ihrem Primärschlüssel. Das DBMS stellt sicher, dass nur Verweise auf existierende Datensätze möglich sind und überprüft dies beim Anlegen oder Löschen von Datensätzen oder beim Ändern von Schlüsselfeldern.
Bei Systemen, die nach dem Transaktionsprinzip arbeiten, werden bei Verletzung von RI-Regeln alle innerhalb der Transaktion getätigten Updates zurückgesetzt (Rollback).
Primärschlüssel und Fremdschlüssel können auch aus mehreren Attributen/Tabellenspalten bestehen.
Die Festlegung sinnvoller RI-Regeln, insbesondere der Lösch-Weitergabe, sind eine wichtige Aufgabenstellung beim Datendesign, um ungewollte Löschmengen oder nicht durchführbare Löschweitergaben zu verhindern.
Die Vorteile der referentiellen Integrität haben aber auch ihren Preis, denn jede Prüfung, die von einem RDBMS vorgenommen wird, kostet Rechnerressourcen, insbesondere Zeit.
So könnte es z. B. bei einem eventuell regelmäßigen Importieren größerer Datenmengen zweckmäßig sein, im aufnehmenden System die RI-Regeln temporär außer Kraft zu setzen, besonders wenn im Liefersystem die Konsistenz der Daten gesichert ist.
Einführung in SQL