Tabellen [basics]: Referenzielle Integrität nachrüsten

Wenn man Beziehungen zwischen zwei Tabellen erstellt, kann man dies ohne referenzielle Integrität erledigen oder auch mit. Wir empfehlen dringend, immer referenzielle Integrität zu definieren, außer es ist technisch nicht möglich – beispielsweise, weil die Tabellen nicht in der gleichen Datenbank liegen. Manchmal ist das Kind jedoch bereits in den Brunnen gefallen. Der Entwickler hat für die Tabellen nur eine einfache Beziehung ohne referenzielle Integrität definiert und die Benutzer haben dies unwissend ausgenutzt: So sind Inkonsistenzen im Datenbestand entstanden, die früher oder später zu gravierenden Problemen führen können. Also zeigen wir in diesem Artikel zunächst, wie solche Probleme überhaupt auftreten können und wie wir diese wieder beheben. Und wir schauen uns auch an, welche Rolle Eigenschaften wie Eingabe erforderlich und die Löschweitergabe in dieser Situation spielen.

Beispieldatenbank

Die Beispiele dieses Artikels findest Du in der Datenbank TabellenBasics_ReferenzielleIntegritaetNachruesten.accdb.

Beispieltabellen

Wir schauen uns das Problem an zwei einfachen Tabellen unserer Beispieldatenbank zur Verwaltung von Büchern an. In unserer Beispieldatenbank sind diese beiden Tabellen über das Fremdschlüsselfeld KategorieID in der Tabelle tblBuecher miteinander verknüpft.

Wir haben natürlich ordnungsgemäß direkt beim Anlegen und vor dem Einfügen jeglicher Daten eine Beziehung mit referenzieller Integrität definiert (siehe Bild 1).

Formular-Entwurf unseres Beispielformulars

Bild 1: Formular-Entwurf unseres Beispielformulars

Diese werden wir nun erst einmal entfernen, damit wir nachstellen können, welche Probleme bei Verwendung von Beziehungen ohne referenzielle Integrität auftreten können. Dazu klicken wir doppelt auf den Beziehungspfeil und entfernen aus dem Dialog Beziehungen bearbeiten die Option Mit referenzieller Integrität (siehe Bild 2).

Entfernen der referenziellen Integrität

Bild 2: Entfernen der referenziellen Integrität

Danach geschieht erst einmal nichts Besonders – wir können nach wie vor Daten in die beiden Tabellen eingeben und insbesondere über das Fremdschlüsselfeld KategorieID die Kategorien für unsere Bücher auswählen, da wir für dieses ein Nachschlagefeld definiert haben (siehe Bild 3).

Auswahl von Werten aus der Tabelle tblKategorien

Bild 3: Auswahl von Werten aus der Tabelle tblKategorien

Gefahr: Kategorien entfernen

Wir können auch nach wie vor Einträge in der Tabelle tblKategorien bearbeiten, also zum Beispiel neue Kategorien hinzufügen. Und natürlich lassen sich auch leicht Kategorien entfernen. Oh! Kategorien entfernen Aber kann das nicht zu Problemen führen Ja, das ist das erste Problem, das wir uns anschauen.

Wir sehen in der Tabelle tblBuecher eine Reihe von Einträgen, die der Kategorie Fachbuch zugeordnet sind. Also stellen wir uns mal vor, ein Mitarbeiter löscht diesen Eintrag zufällig (siehe Bild 4). Die Warnmeldung aus erscheint auch nur, wenn die entsprechende Einstellung in den Access-Optionen aktiviert ist, aber Warnmeldungen ignoriert man ja gelegentlich auch mal.

Meldung beim Löschen eines Datensatzes der Tabelle tblKategorien

Bild 4: Meldung beim Löschen eines Datensatzes der Tabelle tblKategorien

Bücher ohne Kategorie

Öffnen wir nun erneut die Tabelle tblBuecher, stellen wir fest, dass für einige Bücher nun keine Kategorie mehr in der Spalte Kategorie angezeigt wird (siehe Bild 5). Stattdessen sehen wir ein leeres Feld. Aber was genau hat das zu bedeuten

Die Bücher haben plötzlich keine Kategorie mehr. Oder doch

Bild 5: Die Bücher haben plötzlich keine Kategorie mehr. Oder doch

Jedenfalls erscheint die fehlende Kategorie Fachbuch nun nicht mehr in der Auswahlliste.

Aber ist das Fremdschlüsselfeld KategorieID nun wirklich leer oder sieht es nur so aus Und wie können wir das herausfinden Wenn man etwas versierter ist, kann man dies schnell mit VBA lösen. Dazu schreibt man die folgende Anweisung im VBA-Editor in den Direktbereich und betätigt die Eingabetaste. Am schnellsten gelangt man dort mit Strg + G hin:

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar