Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Datenbanken erstellen » Datenintegrität gewährleisten » Entitäts- und referenzielle Integrität erzwingen

 

Referenzielle Integrität erzwingen

Ein Fremdschlüssel (aus einer oder mehreren bestimmten Spalten) verbindet die Daten in einer Tabelle (der Fremd-Tabelle) mit Daten in einer anderen Tabelle (der referenzierten oder Primär-Tabelle). Damit die Fremdschlüsselbeziehung gültig ist, müssen die Einträge im Fremdschlüssel den Primärschlüsselwerten einer Zeile in der referenzierten Tabelle entsprechen. Gelegentlich kann eine andere eindeutige Spaltenkombination anstelle des Primärschlüssels referenziert werden.

Beispiel 1

Die SQL Anywhere-Beispieldatenbank enthält eine Mitarbeitertabelle ("Employees") und eine Abteilungstabelle ("Departments"). Der Primärschlüssel für die Tabelle "Employees" ist die Mitarbeiter-ID, und der Primärschlüssel für die Tabelle "Departments" ist die Abteilungs-ID. In der Mitarbeitertabelle wird die Abteilungs-ID ein Fremdschlüssel für die Abteilungstabelle genannt, denn jede Abteilungs-ID in der Mitarbeitertabelle entspricht genau einer Abteilungs-ID in der Abteilungstabelle.

Die Fremdschlüssel-Beziehung ist eine Viele-zu-Eins-Beziehung. Mehrere Einträge in der Tabelle "Employees" haben dieselbe Abteilungs-ID, aber die Abteilungs-ID ist der Primärschlüssel für die Tabelle "Departments" und er ist somit eindeutig. Wenn ein Fremdschlüssel in der Lage wäre, sich auf eine Spalte in der Tabelle "Departments" zu beziehen, die mehrfach vorhandene Einträge oder NULL enthält, wäre es nicht möglich herauszufinden, welche Zeile in der Tabelle "Departments" die gewünschte Referenz ist. Dies ist ein obligatorischer Fremdschlüssel.

Beispiel 2

Nehmen Sie an, die Datenbank enthielte ebenfalls eine Niederlassungstabelle mit den Standorten der Niederlassungen. Die Tabelle "Employees" kann einen Fremdschlüssel für die Niederlassungstabelle haben, der angibt, in welchem Ort sich die Niederlassung des Mitarbeiters befindet. Der Datenbankentwickler könnte sich entscheiden, bei der Einstellung eines Mitarbeiters keine Niederlassung anzugeben, weil der Mitarbeiter entweder noch keiner Niederlassung zugeordnet wurde oder nicht von einem Büro aus arbeitet. In diesem Fall ist der Fremdschlüssel optional und kann NULL zulassen.