Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Access 2016: Tabellen für Fortgeschrittene

Referentielle Integrität nutzen

Testen Sie unsere 2013 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Nur durch referentielle Integrität können Sie sicherstellen, dass Fremdschlüssel und Primärschlüssel zusammenpassen. Andernfalls gibt es "Datenleichen", zu denen kein Primärschlüssel mehr existiert.

Transkript

Ich habe hier bereits eine Tabelle mit Personen, da stehen auch schon richtige Namen darin und finde hier den Fremdschlüssel. Ich erkenne den bei mir an dem Namen, weil es in der Tabelle "perso" auf die "funktID", die Funktions-ID, eine Referenz ist. Ich möchte jetzt diese Funktionen ausfüllen, sodass ich eintragen kann, dass "Jörg Metzler" eine wie auch immer geartete Funktion ausübt. Ich besitze auch schon eine Liste von Funktionen. Auch das ist kein Problem, wenn der also beispielsweise für Einkaufskalkulation, Buchhaltung und so etwas zuständig ist, dann würde er die Funktions-ID "1" benutzen. Das kann ich natürlich jetzt hier eintragen und, wenn ich die Zeile verlasse, offensichtlich auch speichern. Aber erstens kann ich nicht sicher sein, dass es eine gültige Funktionsnummer ist. Ich kann jetzt einfach die "99" eintragen und Sie sehen, ich kann die Zeile genauso verlassen, ohne, dass ich an der Stelle irgendwie gewarnt werde. Eine Datenbank, die das erlaubt, können Sie direkt wegschmeißen. Solche Datenbanken enthalten Leichen und ich kann Ihnen versprechen, die werden auch darin sein. Wenn ich, deswegen lösche ich das erstmal, wenn ich fremde Datenbanken zur Überarbeitung bekomme, ist das immer mein erster Handgriff: Prüfen, ob solche Leichen darin sind. Wenn dort also versprochen wird, dass hier eine Nummer aus einer anderen Tabelle benutzt wird, dann muss ich sicherstellen, dass das unvermeidlich die richtige Nummer ist. Ich könnte jetzt hier eine Ausklappliste machen, das wird da langfristig auch landen, die diese Nummer auswählt, aber das ist mir nicht sicher genug. Die einzig sichere Erklärung, für den Zusammenhang zwischen Tabellen "Personen" und "Funktionen", läuft über die referentielle Integrität. Das heißt, bei den "Datenbanktools" im "Beziehungen"-Fenster muss ich jetzt diese beiden Tabellen erstmal aufnehmen. Das können Sie per Doppelklick machen. Hauptsache, dieses Fenster wird dann geschlossen. Und dann muss ich im Grunde das, was ich in Excel schon einmal gemalt hatte, als Datenmodell nachbilden. Das muss nicht genau so aussehen, aber es ist durchaus praktisch, wenn es da gewissen Ähnlichkeiten gibt. Das können wir einmal einklappen, das ist ein Anlagefeld, deswegen sieht das immer ein bisschen anders aus. Hier diese Ecke ist furchtbar schwer zu markieren. Wenn es einmal nicht gelingt, die ist oben ein bisschen größer offensichtlich. Ich habe jetzt also zwei Tabellen, die eine Beziehung miteinander haben sollen, und damit diese Beziehung sicher ist und nicht umgangen werden kann, erkläre ich Access jetzt, indem ich den Primärschlüssel gedrückt halte und auf den Fremdschlüssel fallen lasse, dass die beiden etwas miteinander zu tun haben. Da kommt jetzt die referentielle Integrität. Der Dialog erscheint automatisch beim Loslassen und sollte jetzt auch schon richtig anzeigen die eigentliche, nämlich die Master-Tabelle, steht links, da steht der Primärschlüssel und die Massendaten, die Detail-Tabelle, stehen hier. Die werden hier als "Verwandte Tabelle" bezeichnet. Da steht der Fremdschlüssel. Ich sehe das bei mir auch immer, dass hier typischerweise ein kurzer Primärschlüsselname steht, fast immer auf "ID", und hier immer einer, der mit "Ref" endet. Falls ich das jetzt so mit "Erstellen" bestätige, ist das nett aber nutzlos. Das ist unverbindlich, das kann man nicht anders sagen. Und wenn Sie das nachbessern wollen, müssen Sie den mittleren Teil der Verbindungslinie erwischen. Anfang und Ende funktionieren nicht, also Doppelklick hier, dann sind Sie wieder in dem gleichen Dialog. Das, was wichtig ist, ist die referentielle Integrität. Die sorgt dafür, dass die Referenz, nämlich der Verweis auf die andere Nummer, "integer", sauber ist. Das hat nichts mit "integer" als Datentyp zu tun, sondern meint, diese Daten sind "in Ordnung". Das bedeutet nämlich im Gegenzug, wenn das eingeschaltet ist, dass es weder möglich ist, in der Referenz eine Zahl zu benutzen, die dort oben gar nicht im Angebot ist, oder hier eine Zahl zu löschen, die hier unten schon benutzt worden ist. Es gibt also keine "kaputten" Referenzen, wenn man das einmal so formulieren will. Der Beziehungstyp ist hier 1 zu n, also eine Primärschlüssel "Funktions-ID" zu "n"- Fremdschlüssel "persofunktID-Referenzen". Das könnte ich jetzt mit "OK" bestätigen, allerdings habe ich die Tabellen offen und das muss ich erst aufheben. Also nach dem Abbrechen muss ich hier beide erstmal schließen und kann mich jetzt erneut daran versuchen. Deswegen sage ich eigentlich auch immer, dass Sie möglichst wenig Fenster offen haben sollen. Ich sehe es in Kursen häufig, dass gerne alle anderen Tabellen auch offen sind und dann kriegen Sie zuverlässig diese Meldung. Also mit referentieller Integrität, zweiter Versuch und nach dem "OK". Wenn dieses so erschienen ist, keine weitere Fehlermeldung, dann haben Sie korrekte Referenzen darin. Andernfalls kriegen Sie zwei mögliche Fehlermeldungen: Erstens, die passen im Datentypen nicht zusammen, das heißt, sie haben hier zum Beispiel einen "long"-Autowert und hier aber eine Integerzahl. "Integer" ist kleiner als "long", also Sie können hier nie falsche Zahlen eintragen und trotzdem wird es von Access zurückgewiesen. Die müssen völlig identisch sein. Wenn Sie hier einen Text haben, dann muss das auch hier ein Text sein, und zwar in gleicher Länge. Sie haben vielleicht gesehen, ich mache einen Doppelklick darauf, dass es hier noch zwei weitere Checkboxen gab, die hier nicht so ganz richtig sind. Die Aktualisierungsweitergabe bedeutet zum Beispiel, dass ich hier den Inhalt des Primärschlüssels ändere und dann automatisch von Access, die Inhalte der Fremdschlüssel angepasst werden. Das ist hier sowieso nicht sinnvoll, denn das ist ein Autowert, da kann ich hier nichts ändern. Wenn ich allerdings in irgendeiner Form zum Beispiel eine Postleitzahl habe, auf die eine direkte Referenz ist oder für Länder so etwas wie ein Länderkürzel, dann könnte das sinnvoll sein. Das spare ich mir hier, weil es wirklich technisch gar nicht möglich ist, einen Autowert nachträglich zu verändern. Die Löschweitergabe an verwandte Datensätze ist, sowohl praktisch als auch hoch riskant. Wenn ich hier einen Datensatz löschen will bei den Funktionen und der besitzt bereits benutzte Fremdschlüssel, also eine Person hat diese Funktion, es gibt zu diesem Master-Datensatz ein oder mehrere Detail-Datensätze, dann kann ich den nicht löschen, sonst hätte ich ja hier kaputte Datensätze. "Verwaiste Fremdschlüssel" heißt das offiziell. Also müsste ich vorher alle die mit dem passenden Fremdschlüssel heraussuchen, den Datensatz löschen und dürfte erst dann die Funktion löschen. Und dieses "Löschweitergabe an verwandte Datensätze", übernimmt das für mich, wenn ich dann die Funktion lösche, kriege ich einen sehr allgemein gehaltenen Hinweis, dass damit auch die verwandten Datensätze gelöscht werden und wenn Sie Pech haben, auch die davon abhängigen. Jede Person hat beispielsweise an einer Fortbildung teilgenommen, hat Gehälter – alles, was da noch dranhängt "kaskadierend", wird mitgelöscht ohne weiteren Hinweis. Da können Sie, wenn Sie Pech haben, mit einer Löschung in einer ganz harmlosen Tabelle, mal eben Dreiviertel der Datenbank entfernen. Deswegen zu Entwicklerzeiten ungemein praktisch, weil Sie alle Ihre Testdaten schnell aufräumen können, aber im echten Betrieb würde ich das nicht einbauen, denn dann werden normale Benutzer ahnungslos große Datenmengen löschen, ohne zu bemerken, was sie da gerade anrichten. Also mit referentieller Integrität, wenn dieses 1 zu n, auch wenn das ein Unendlichzeichen ist, angezeigt wird, ist alles in Ordnung. Sie haben also erstens, passende Datentypen, und zweitens, keine Leichen, also hier Referenzen, die es auf dieser Seite gar nicht gibt. Hier dürfen mehr stehen, als hier benutzt wurden, aber hier darf es jetzt oder wird es jetzt auch nur noch Referenzen geben mit gültigen Nummern, die hier oben auch vorkommen. Und Datenbanken, deswegen ist dort mein erster Blick immer in die "Datenbanktools" in die "Beziehungen", Datenbanken, die keine Beziehungen und vor allem keine referentielle Integrität haben, haben mit Sicherheit Leichen.

Access 2016: Tabellen für Fortgeschrittene

Meistern Sie die hohe Kunst der Access-Tabellen. Lernen Sie, Tabellen mit speziellen Datentypen, berechneten Felder, Indizes und Verknüpfungen weiterzuentwickeln.

2 Std. 32 min (27 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:13.03.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!