Anwendung der referentiellen Integrität auf eine Datenbank: Korrekte Tabellenverknüpfung zu Beginn ist entscheidend Kosteneffizienz

Die referenzielle Integrität von Daten wird bei der Entwicklung von Datenbanken oft nicht richtig verstanden. Wenn die Integrität nicht richtig angewandt wird, kann dies zu einer großen Ineffizienz bei der Datenabfrage führen. Schließlich müssen die Tabellendaten korrigiert werden. Doppelte Datensätze müssen manuell mit Hilfe von Abfragen aufgespürt und entfernt werden. “Verwaiste” Datensätze (aufgrund gelöschter Datensätze) müssen repariert werden.

All dieser Aufwand erfordert Zeit und Energie und kostet Geld, um ihn zu beheben. Es ist viel kostengünstiger, den Entwurf und die Implementierung der Datenbank von vornherein richtig zu planen.

Dieser Artikel gibt einen Überblick über Tabellenbeziehungen, konzentriert sich auf die korrekte Verknüpfung von Tabellen und zeigt die Konsequenzen auf, wenn dies nicht der Fall ist.

In richtiger Reihenfolge umsetzen

Ein Datenbankentwurf zur korrekten Planung und Implementierung von Tabellenbeziehungen mit referentieller Integrität wurde von diesem Autor bereits beschrieben. Der Entwurf beginnt mit der Identifizierung der Entitäten aus den Geschäftsdaten; die Tabellen werden nach Konventionen wie der Normalisierung entworfen und dann miteinander verknüpft. Erst dann werden die Tabellen mit Daten befüllt.

Tabelle Beziehungstypen

Theoretisch gibt es drei Arten von Beziehungen:

  • Eins-zu-viele
  • Viele-zu-viele
  • Eins-zu-eins

In der Praxis zerfällt die Many-to-many-Beziehung in eine Reihe von One-to-many-Beziehungen. Die Eins-zu-Eins-Beziehung ist nicht sinnvoll und wird in der Regel in einer anderen Tabelle untergebracht. Daher bleibt nur die Eins-zu-Viel-Beziehung übrig, die wir betrachten müssen.

Glücklicherweise ist diese Tabellenanordnung leicht zu begreifen. Abbildung 1 zeigt ein einfaches One-to-many-Beispiel, mit dem jeder etwas anfangen kann. In der Access-Datenbank wird eine Tabelle mit dem Namen tblSong verwendet, um eindeutige Songs (d. h. einen) zu erfassen, während Songs, die ein oder mehrere Male gespielt werden (d. h. viele), in der verknüpften Tabelle mit dem Namen tblSongPlayed erfasst werden.

Aktivieren der referenziellen Integrität

Die Verknüpfung in Abbildung 1 wird durch Ziehen des Primärschlüssels SongID auf den entsprechenden “Fremdschlüssel” in tblSongPlayed erreicht. Daraufhin wird ein Fenster angezeigt, in dem das Kontrollkästchen “Referentielle Integrität erzwingen” aktiviert werden kann.

Wenn diese Option nicht aktiviert ist, wird die Verbindung zwar hergestellt, aber nur eine dünne Linie angezeigt. Ist sie aktiviert, wird eine dicke Linie angezeigt (siehe Abbildung 1). Wenn bereits Daten in den Tabellen vorhanden sind, prüft Access, ob in beiden Tabellen übereinstimmende IDs vorhanden sind. Andernfalls wird eine Dialogmeldung ausgegeben, die darauf hinweist, dass die Verbindung nicht mit referenzieller Integrität hergestellt werden kann.

Wie man Daten “bereinigt

Wenn Daten in Tabellen vorhanden sind und keine vernünftige Verbindung hergestellt werden kann, müssen die Daten korrigiert werden. Dabei sind häufig zwei Arten von Problemen zu berücksichtigen:

  • Doppelte Datensätze wurden zugelassen
  • “Verwaiste” Datensätze existieren aufgrund gelöschter Datensätze

Eine Abfrage muss ausgeführt werden, um doppelte Datensätze zu suchen und zu lokalisieren. Wenn Duplikate gefunden werden, müssen sie manuell oder mit einer Löschabfrage entfernt werden. Es muss sorgfältig abgewogen und entschieden werden, welche Datensätze entfernt werden sollen. Der Schwierigkeitsgrad für diese Aufgaben hängt ab von

  • Komplexität der Abfrage (Anzahl der beteiligten Tabellen)
  • Anzahl der Datensätze in den beteiligten Tabellen

In ähnlicher Weise muss geprüft werden, ob verwaiste Datensätze vorhanden sind. Dazu ist eine andere Abfrage erforderlich. Es sollte inzwischen klar sein, dass es ratsam ist, jede neue Datenbank mit leeren Tabellen zu beginnen, dann Tabellen mit referenzieller Integrität zu verbinden und schließlich die Tabellen zu füllen.

Zusammenfassung und Schlussfolgerung

In einer Access-Datenbank zeigt die dicke Linie zwischen zwei Tabellen an, dass die referenzielle Integrität gegeben ist. Dies wird durch Anklicken des entsprechenden Kontrollkästchens in dem Fenster erreicht, das sich öffnet, wenn die Verknüpfung hergestellt wird.

Mit Hilfe einer Abfrage kann man die Korrektheit solcher Tabellenverbindungen feststellen, indem man prüft, ob die Linie eine dünne oder dicke Linie ist. Im Falle einer unsicheren Verbindung sollten die Daten in den Tabellen “bereinigt” und die Tabellen mit der richtigen referentiellen Integrität verbunden werden. Letzteres verhindert, dass die Daten in der Datenbank beschädigt werden, so dass keine kostspieligen Bereinigungsarbeiten anfallen. Daher ist es sinnvoll, eine Ausgangsdatenbank zu implementieren, die eine ordnungsgemäße Datenintegrität aufweist, bevor die Tabellen befüllt werden.

Schreibe einen Kommentar