Das Kefk Network Wiki befindet sich im Testbetrieb.


Integritätsbedingung

Aus Kefk.

Wechseln zu: Navigation, Suche

Der Begriff Integritätsbedingung bezeichnet in der Informatik Bedingungen, die an den Zustand eines Prozesses gestellt werden.

Inhaltsverzeichnis

Definition

Integritätsbedingungen beschreiben Annahmen im Bezug auf Wertebereiche, Abhängigkeiten oder Verlässlichkeit von Daten. Basierend auf diesen Annahmen kann ein Programmierer Verarbeitungprozesse beschreiben und gegebenenfalls den Zustand eines Prozesses verändern. Es ist im Allgemeinen das Ziel, die Einhaltung von Integritätsbedingungen nicht dem einzelnen Programmierer zu überlassen. Die Annahme falscher Integritätsbedingungen, ungenau spezifizierte, sich ändernde oder auch widersprechende Bedingungen sind häufige Ursachen für Programmierfehler. Relationale Datenbanksysteme bieten die Möglichkeit, bei der Definition eines relationalen Schemas Integritätsbedingungen zu formulieren, deren Einhaltung von dem System garantiert wird. Ein typisches Beispiel für Integritätsbedingungen sind Schlüssel- und Fremdschlüsselbeziehungen.

Es lässt sich spezifizieren, auf welche Art die Einhaltung gewährleistet werden soll, bzw. wie auf Änderungen reagiert werden soll. Eine Änderung, die eine Integritätsbedingung verletzt, kann entweder ganz unterbunden werden oder aber weitere Änderungen zur Wiederherstellung der Integrität nach sich ziehen (siehe hierzu: Datenbanktrigger).

Beispiel

Das nachfolgende SQL Beispiel modelliert, auf stark vereinfachte Weise, einen Zusammenhang zwischen Professoren, Studenten, Vorlesungen und Prüfungen. Das Augenmerk soll hier auf die Fremdschlüsselbeziehungen gelegt werden:

create table Professor (
  ID      integer primary key
);
create table Student (
  MatrNr      varchar(16) primary key
);
create table Vorlesung (
  ID      integer primary key,
  Name    varchar(32),
  Prof    integer references Professor.ID
          on delete set null
);
create table Prüfung (
  Datum        date,
  Vorlesung    integer not null 
               references Vorlesung.ID 
               on delete no action,
  Stud         varchar(16) not null
               references Student.MatrNr 
               on delete cascade
);

Folgende Integritätsbedingungen werden in diesem Beispiel definiert:

  • Eine Vorlesung referenziert einen Professor. Falls der Professor emeritiert (und der entsp. Datensatz gelöscht wird), bleibt die Vorlesung erhalten. Der Zusatz on delete set null löscht die Referenz auf den Professor, falls der referenzierte Datensatz gelöscht wird (Integritätsbedingung: der referenzierte Professor hält die Vorlesung).
  • Jede Prüfung referenziert eine Vorlesung. Solange noch eine Prüfung für eine Vorlesung existiert, darf diese nicht aus der Datenbank gelöscht werden. Der Zusatz on delete no action verhindert, dass ein referenzierter Datensatz aus der Tabelle "vorlesung" gelöscht wird. (Integritätsbedingung: Zu jeder Prüfung gibt es auch eine Vorlesung).
  • Jede Prüfung referenziert einen Studenten, der die Prüfung abgibt. Falls der Student exmatrikuliert (und der entsp. Datensatz gelöscht wird), findet auch die Prüfung nicht statt. Der Zusatz on delete cascade führt dazu, dass eine Prüfung gelöscht wird, falls der referenzierte Student gelöscht wird. (Integritätsbedingung: Ohne Student gibt es auch keine Prüfung)

Die Einhaltung dieser Bedingung gewährleistet die Datenbank.

Hinweise

Benutzerrechte

Naturgemäß schränkt die Spezifikation von Integritätsbedingungen die Zahl der erlaubten Operationen ein. Da sich in einer relationalen Datenbank diese Einschränkungen auch auf andere Tabellen auswirken können, als auf die konkrete Tabelle innerhalb derer die Bedingung spezifiziert wurden, gibt es in manchen Datenbanken eine spezielle Berechtigung, die es erlaubt eine erstellte Tabelle zu referenzieren. Im obigen Beispiel verhindert der Zusatz on delete no action das Löschen von Einträgen der Tabelle vorlesung. Entsprechend muss der Besitzer der Tabelle prüfung die Berechtigung besitzen, die Tabelle vorlesung zu referenzieren.

Optimierung

Da die Einhaltung von Integritätsbedingungen innerhalb der Datenbank aufwändige Prüfungen zur Folge haben kann, wird zur Verbesserung der Laufzeiten häufig auf deren explizite Spezifikation verzichtet. In diesem Fall muss die Einhaltung der Bedingungen durch die Anwendung selbst gewährleistet werden. Erfolgt dies nicht, sind Datenschiefstände innerhalb der Datenbank die Folge. Die dazugehörende Software muss, je nach Anwendungsszenario, mit den verbliebenen inkonsistenten Daten innerhalb der Datenbank umgehen können. Das heißt ein Datenschiefstand muss als ein solcher erkannt und berücksichtigt werden. Für eine fehlerfreie Software kann somit, in den meisten Fällen, auf eine Prüfung der Integritätsbedingungen nicht verzichtet werden.

Literatur

  • Alfons Kemper, André Eickler: Datenbanksysteme. Eine Einführung. Oldenbourg, München 2004, ISBN 3-486-27392-2
  • Victor M. Markowitz: Safe Referential Structures in Relational Databases, VLDB, September 1991, Barcelona, Seiten 123-132, ISBN 1-55860-150-3

Siehe auch

Weblinks

Persönliche Werkzeuge
Andere Sprachen