In jeder Geschäftsumgebung müssen Daten häufig bestimmten Rahmenbedingungen oder Regeln genügen. Zum Beispiel muss eine Personalnummer eindeutig sein. DB2 stellt Integritätsbedingungen bereit, die zur Implementierung solcher Regeln definiert werden können.
DB2 stellt die folgenden Arten von Integritätsbedingungen zur Verfügung:
Abbildung 11. Eindeutige Integritätsbedingungen verhindern mehrfach auftretende Daten.
Der Datenbankmanager beachtet die Integritätsbedingung bei Operationen zum Einfügen und Aktualisieren von Daten, um die Datenintegrität zu gewährleisten.
Da ein Primärschlüssel zur Angabe einer Zeile in einer Tabelle verwendet wird, sollte er eindeutig sein und möglichst wenigen Hinzufüge- oder Löschoperationen unterliegen. Eine Tabelle kann nicht mehr als einen Primärschlüssel, jedoch mehrere eindeutige Schlüssel besitzen. Primärschlüssel sind wahlfrei und können definiert werden, wenn eine Tabelle erstellt oder geändert wird. Sie besitzen zudem den weiteren Vorteil, daß sie für eine Reihenfolge der Daten sorgen, wenn Daten exportiert oder reorganisiert werden.
In den folgenden Tabellen sind DEPTNO und EMPNO die Primärschlüssel der
Tabellen DEPARTMENT und EMPLOYEE.
DEPTNO (Primärschlüssel) | DEPTNAME | MGRNO |
---|---|---|
A00 | Spiffy Computer Service Division | 000010 |
B01 | Planning | 000020 |
C01 | Information Center | 000030 |
D11 | Manufacturing Systems | 000060 |
EMPNO (Primärschlüssel) | FIRSTNAME | LASTNAME | WORKDEPT (Fremdschlüssel) | PHONENO |
---|---|---|---|---|
000010 | Christine | Haas | A00 | 3978 |
000030 | Sally | Kwan | C01 | 4738 |
000060 | Irving | Stern | D11 | 6423 |
000120 | Sean | O'Connell | A00 | 2167 |
000140 | Heather | Nicholls | C01 | 1793 |
000170 | Masatoshi | Yoshimura | D11 | 2890 |
Zum Beispiel könnte eine typische Integritätsbedingung über Fremdschlüssel festlegen, daß jeder Mitarbeiter in der Tabelle EMPLOYEE ein Mitglied einer bestehenden, in der Tabelle DEPARTMENT definierten Abteilung sein muß.
Zur Herstellung dieser Beziehung würden Sie die Abteilungsnummer (WORKDEPT) der Tabelle EMPLOYEE als Fremdschlüssel und die Abteilungsnummer (DEPTNO) der Tabelle DEPARTMENT als Primärschlüssel definieren.
Zum Beispiel können Sie einer Tabelle EMPLOYEE definieren, daß die Spalte für die Jobbezeichnung nur die Werte "Sales", "Manager" oder "Clerk" enthalten kann. Unter dieser Integritätsbedingung ist jeder Datensatz mit einem anderen Wert in der Spalte für die Jobbezeichnung ungültig und würde zurückgewiesen, um die Regeln über den Typ der zulässigen Daten in der Tabelle durchzusetzen.
In einer Datenbank können außerdem Auslöser genutzt werden. Auslöser sind komplizierter und potentiell leistungsfähiger als Integritätsbedingungen. Sie definieren eine Reihe von Aktionen, die in Verbindung mit einer bzw. ausgelöst durch eine Klausel INSERT, UPDATE oder DELETE an einer angegebenen Basistabelle ausgeführt wird. Auslöser können zur Unterstützung allgemeiner Formen der Datenintegrität und Geschäftsregeln verwendet werden. Zum Beispiel kann ein Auslöser die Kreditgrenze eines Kunden überprüfen, bevor ein Auftrag akzeptiert wird, oder er kann in einer Bankanwendung eingesetzt werden, um einen Alert auszulösen, wenn eine Geldentnahme aus einem Konto nicht dem gewöhnlichen Geldentnahmemuster eines Kunden entspricht. Weitere Informationen zu Auslösern (Triggers) finden Sie im Handbuch Application Development Guide.