Referentielle Integrität

Einführung

Über die referentielle Integrität werden in einem DBMS die Beziehungen zwischen Datensätzen (bzw. Zeilen oder Tupel) kontrolliert. Dies bedeutet konkret: Enthält ein Feld in einer Tabelle einen Schlüsselwert, der der Primärschlüssel einer anderen Tabelle ist (Entitätenintegrität) so wird dieser als Fremdschlüssel gekennzeichnet (FOREIGN KEY). Der Wert eines Fremdschlüssels wiederum kann nur gespeichert werden, wenn er tatsächlich auch als Primärschlüssel vorhanden ist. Werden dem DBMS diese Beziehungen bekanntgemacht, so ist das System in der Lage, sie zu überwachen und damit die Datenintegrität sicherzustellen.

Im folgenden Schaubild "Schlüsselbeziehung" würde ein Datensatz {6, Müller, Klaus, 4} der Tabelle Mitarbeiter die Integritätsbedingungen des Schemas verletzen und vom DBMS zurückgewiesen. Denn es gibt keinen Salon mit dem Primärschlüssel 4. Der Datensatz {3, Kaiserschnitt} verletzt nicht die Integritätsbedingungen, da der Primärschlüssel 3 von einem Fremdschlüssel referenziert werden kann aber nicht muss!

Das Schema für Tabellen und ihre Beziehungen wird in der Data Definition Language (DDL) definiert. Dies beinhaltet auch die Regeln zur referentiellen Integrität.

Beispiel eines Schemas in DDL

Durch folgendes Code-Beispiel wird mit Hilfe von DDL ein Schema erzeugt, für das die beschriebene referentielle Integrität zwischen Mitarbeiter- und Salon-Datensätzen gilt.

CREATE TABLE `salon` (`idsalon` INT NOT NULL AUTO_INCREMENT ,`name` VARCHAR(45) NOT NULL ,PRIMARY KEY (`idsalon`) )

CREATE TABLE `mitarbeiter` (`idmitarbeiter` INT NOT NULL AUTO_INCREMENT ,`nachname` VARCHAR(45) NOT NULL , `vorname` VARCHAR(45) NOT NULL ,`idsalon` INT NOT NULL ,PRIMARY KEY (`idmitarbeiter`) ,CONSTRAINT `fksalon`FOREIGN KEY (`idsalon` ) REFERENCES `friseursalon`.`salon` (`idsalon` ) ON DELETE NO ACTION ON UPDATE NO ACTION)