Inkonsistente Verknüpfungen finden

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Inkonsistenzen in einem Datenbestand können an verschiedenen Stellen entstehen. Die eine Möglichkeit sind Inkonsistenzen, die in Folge von Duplikaten auftreten – also wenn Sie beispielsweise eine Kategorie in zwei verschiedenen Schreibweisen anlegen. Andere Inkonsistenzen treten bei verknüpften Daten zwischen zwei Tabellen auf, deren Beziehung nicht mit referentieller Integrität definiert ist. Hier kann es sein, dass das Fremdschlüsselfeld Werte enthält, die gar nicht im Primärschlüsselfeld der verknüpften Tabelle auftauchen. Dieser Artikel zeigt, wie Sie solche Inkonsistenzen im Datenbestand aufdecken.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 2102_InkonsistenteVer-knuepfungen.accdb.

Was sind inkonsistente Verknüpfungen

Angenommen, Sie hinterlegen in einer Tabelle einer Datenbank ein Feld, dass die Datensätze dieser Datenbank eindeutig identifiziert (in der Regel ein Primärschlüsselfeld). In einer anderen Tabelle definieren Sie ein sogenanntes Fremdschlüsselfeld, über das Sie die Datensätze der ersten mit denen der zweiten Tabelle verknüpfen wollen, indem Sie dort die Werte des eindeutigen Feldes der ersten Datenbank eintragen. Wenn Sie das machen, ohne eine Beziehung mit referentieller Integrität zwischen diesen beiden Tabellen zu erstellen, können Sie im Fremdschlüsselfeld der zweiten Tabelle nicht nur die Werte des Primärschlüsselfeldes der ersten Tabelle hinterlegen, sondern auch alle möglichen anderen Werte.

Oder Sie hinterlegen im Fremdschlüsselfeld sogar Werte, die im Primärschlüsselfeld der ersten Tabelle vorkommen, löschen dann aber Datensätze aus der ersten Tabelle, die bereits vom Fremdschlüsselfeld referenziert sind.

In diesen Fällen erhalten Sie inkonsistente Daten, in diesem Fall im Zusammenhang mit einer Verknüpfung. Das Fremdschlüsselfeld der zweiten Tabelle enthält dann nicht mehr nur Werte, die im Primärschlüsselfeld der erste Tabelle aufgeführt werden. So kann keine vollständige Zuordnung der Datensätze der beiden Tabellen mehr erfolgen.

Ein Beispiel finden Sie in Bild 1. Hier gibt es in der Tabelle tblProdukte zwei Produkte, deren Werte im Feld KategorieID nicht im Feld KategorieID der Tabelle tblKategorien enthalten sind.

Verknüpfung mit Inkonsistenzen

Bild 1: Verknüpfung mit Inkonsistenzen

Verhindern von inkonsistenten Verknüpfungen

Wenn Sie das Datenmodell Ihrer Datenbank nach den ersten drei Normalformen auslegen (siehe Artikel Normalisierung, Teil 1: Die erste Normalform und folgende, www.access-basics.de/498) und für alle Beziehungen referentielle Integrität definieren, sollten keine inkonsistenten Verknüpfungen in Ihrer Datenbank auftauchen. Access meldet dann beim Versuch, inkonsistente Daten anzulegen, einen Fehler.

Referentielle Integrität

Um zu erklären, warum keine inkonsistenten Verknüpfungen entstehen, wenn Sie referentielle Integrität für eine Beziehung definiert haben, schauen wir uns kurz an, was referentielle Integrität ist. Referentielle Integrität stellt sicher, dass das an einer Beziehung beteiligte Fremdschlüsselfeld nur solche Werte annehmen kann, die entweder in dem Primärschlüsselfeld der Tabelle mit dem an der Beziehung beteiligten Primärschlüsselfeld enthalten sind oder den Wert NULL haben. Weitere Informationen über referentielle Integrität erhalten Sie im Artikel Referentielle Integrität (www.access-basics.de/515).

Warum gibt es inkonsistente Verknüpfungen

Stellt sich die Frage: Warum gibt es überhaupt inkonsistente Verknüpfungen, wenn man diese doch so einfach durch das Definieren von Beziehungen mit referentieller Integrität verhindern kann Die Antwort ist einfach: Nicht jede Datenbank wird von Grund auf neu aufgebaut. Als Entwickler erhalten Sie oft Datenbanken, die von anderen Entwicklern definiert wurden. Oder Sie wollen Daten aus anderen Datenquellen wie beispielsweise Excel-Tabellen einlesen, deren Daten bereits eine Art Verknüpfung zwischen zwei Tabellen aufweisen.

Excel bietet aber keinen echten Mechanismus, mit dem die referentielle Integrität durchgesetzt werden kann. Deshalb kommt es dort schnell zu Inkonsistenzen, ohne das der Benutzer es mitbekommt.

Wie finden wir inkonsistente Verknüpfungen

Damit kommen wir schon zur wichtigsten Frage: Wenn unsere Datenbank eine Beziehung enthält, für die wir noch keine referentielle Integrität definiert haben, wie finden wir heraus, ob es inkonsistente Daten gibt und um welche es sich handelt

Um herauszufinden, ob eine Verknüpfung inkonsistente Daten enthält, gibt es eine sehr einfache Methode. Wir versuchen einfach, eine Beziehung mit referentieller Integrität zwischen den beiden Tabellen zu erstellen. In diesem Fall öffnen wir das Beziehungen-Fenster (Ribbon-Eintrag Datenbanktools|Be-zie-hun-gen|Beziehungen), fügen die beiden Tabellen tblProdukte und tblKategorien hinzu und ziehen dann das Feld KategorieID der Tabelle tblProdukte auf das gleichnamige Feld der Tabelle tblKategorien. Daraufhin erscheint der Dialog Beziehungen bearbeiten, in dem wir die Option Mit referentieller Integrität aktivieren (siehe Bild 2).

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

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar