Datenbanken >>
Referentielle Integrität
Referentielle Integrität
Die referentielle Integrität - auch Beziehungsintegrität besagt, dass Attributwerte von einem Fremdschlüssel auch als Attributwert des Primärschlüssels vorhanden sein müssen.
|
|
Beispiel anhand zweier Tabellen |
Angenommen man hat eine Tabelle "Angestellte" in der sich der Fremdschlüssel
"Projekt" befindet. Dieser Fremschlüssel referenziert also auf eine Tabelle "Projekte" und gibt an, in welchem Projekt der Angestellte arbeitet.
Wenn in der Tabelle "Angestellter" das Projekt "5" als Fremdschlüssel eingetragen ist, muss in der Tabelle "Projekte" diese "5" auch als Primärschlüssel auftauchen.
Folgen der referentiellen Integrität
- Durch die referentielle Integrität wird Dateninkonsistenz vermieden.
- Es muss erst ein Datensatz in der Tabelle mit dem Primarschlüssel hinzugefügt werden, bevor dieser Attributwert als Fremdschlüssel in einer anderen Tabelle eingetragen werden kann.
- Um einen Datensatz aus einer Tabelle mit einem Primarschlüssel zu löschen, muss erst der Datensatz aus der Tabelle mit dem entsprechenden Fremdschlüssel entfernt werden.
Wie wird referentielle Integrität überwacht?
Damit das Datenbanksystem die Beziehungsintegrität überwachen kann, muss es die Beziehungen, die zwischen
verschiedenen Tabellen bestehen, kennen. Folglich müssen vom Datenbankdesigner diese vorher definiert werden.
Mittels SQL Befehl muss also festgelegt werden, bei welchem Attribut es sich um einen Fremdschlüssel handelt
und auf welche Tabelle er referenziert.
Welche Befehle würden zurückgewiesen werden? (Beispiele)
Wird die referentielle Integrität vom System überwacht, würden beispielsweise solche SQL-Befehle
zurückgewiesen werden:
- Wenn beispielsweise in eine Relation ARTIKEL, die einen Fremdschlüssel LIEFER NUMMER besitzt, der sich auf die Relation LIEFERANTEN bezieht, ein Artikel eingefügt wird mit einer Liefer NR., welche in der Relation LIEFERANTEN nicht existiert.
- Wenn in der Relation LIEFERANTEN ein Datensatz gelöscht wird, obwohl der Primärschlüssel dieses Datensatzes Fremdschlüssel in der Relation ARTIKEL ist.