Access 2016 Grundkurs

Mögliche Fehlerquellen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Damit die Referentielle Integrität funktioniert, wird geprüft, ob es sich bei den verknüpften Feldern um solche mit dem passenden Datentyp handelt und ob im Fremdschlüssel eventuell schon ungültige Daten enthalten sind.

Transkript

Bisher gibt es die referentielle Integrität nur zwischen diesen beiden Tabellen. Die sind sozusagen abgesichert, das muss ich jetzt für die übrigen auch machen, da diese Feldnamen sehr technisch sind, kann ich immer gucken, ich muss von der ID zur passenden Referenz, deswegen lege ich die auch so technisch an, dann gucke ich hier nochmal: ID, da Referenz, referentielle Integrität und Erstellen. Das geht also relativ zügig, wenn man sich jetzt an seinem Datenmodell orientieren kann und hier die Namen enthalten bei mir ja auch immer den Namen des Primärschlüssels. Da brauche ich also nicht mehr lange darüber nach zudenken, hier haben wir es schon als erstes nicht kreuzungsfrei, das ist zwar zu lösen, aber wird dann nicht übersichtlicher, das können wir uns gleich nochmal angucken. Also auch hier zum Fremdschlüssel. Dort den letzten Fremdschlüssel. Und wenn ich es drauf anlege, könnte ich jetzt hingehen und dieses deutlich nach da ziehen. Dann haben wir es leidlich kreuzungsfrei, aber sie sehen, dann handelt man sich andere Probleme ein, je nachdem welcher Fremdschlüssel oben steht. Müssen sie dann gucken, dass sie möglichst die kürzere Tabelle hier haben, sonst laufen die Verbindungslinien nämlich durch die Tabellen. Finde ich ehrlich gesagt auch nicht übersichtlicher und es braucht tatsächlich auch mehr Platz. Ich versuche die also immer so zu legen, dass sie an so einem Kreuzungspunkt nicht senkrecht sind, sonst kann man nämlich, wenn ich das wirklich senkrecht mache, was eigentlich eleganter aussieht, wenn ich das so sagen darf, kann man nicht mehr wirklich gut sehen, was zusammen gehört, also wenn schon Kreuzung, dann wenigstens so, dass man sieht, was wozu gehört. Das wäre jetzt also sozusagen die Übersetzung meines ursprünglichen Datenmodells, in dem tatsächlich auch mal die Pfeile drin waren, dann würde ich jetzt vergleichen, ist dieser Entwurf identisch mit diesem Entwurf? Ich speicher nochmal das Layout, mehr wird ja nicht gespeichert und dann wäre ich soweit zufrieden. Jetzt könnte es ihnen allerdings passieren, dass das nicht klappt. Ich habe das mal vorbereitet, wenn ich an dieser Stelle zwei neue Tabellen aufnehme, die habe ich extra zu Testzwecken gemacht, ich zeige sie ihnen einmal kurz: Eine Master-Tabelle, die hat eine ganz normale ID mit einem AutoWert und völlig beliebigem Text. Und eine Details-Tabelle, die ist im Moment noch inhaltsfrei und dort könnte ich eine Zahl übernehmen. Ich habe mir jetzt die Mühe gespart, ein Kombifeld zu machen, denn ich weiß, es gibt die Zahlen Eins, Zwei, Drei. Da steht noch nichts drin, es kann also noch nichts passieren und ich kann tatsächlich, anstatt oben im Entwurf auf Tabelle anzeigen zu gehen, kann ich auch von hier Tabellen reinziehen. Ich werde also diese beiden Tabellen jetzt hier tatsächlich mal daneben so ein bisschen anfügen, die fliegen nachher wieder raus, nur dass sie sehen, was ihnen passieren kann und versuche jetzt, wie eben schon gezeigt den Primärschlüssel hier auf den Fremdschlüssel zu legen. Natürlich mit referentieller Integrität, sie haben gesehen, hier steht noch nichts drin und bei dem Erstellen kommt die erste Fehlermeldung. Die ist ein bisschen irreführend, dieselbe Anzahl an Feldern ist nicht genau das, was man hier lesen sollte, tatsächlich ist es nämlich der falsche Datentyp. Wenn ich also nach dem OK nicht weiterkomme, ich muss jetzt hier abbrechen, ich speicher die trotzdem schon mal, dann gucke ich mir jetzt mal einfach an, was in dem Master steht, im Entwurf. Dort steht nämlich: Dies ist ein AutoWert mit der Feldgröße Long. Das Integer lässt man immer weg, es ist zwar offiziell ein Long Integer, aber man sagt immer nur Long. Der wird versucht, bei den Details in der Entwurfsansicht mit einer Referenz zu verbinden, die Single ist. Nun könnte man sagen: Single ist größer, das kann ja auch nichts werden, denn da könnte ich größere Zahlen eintragen, also stelle ich das mal auf Byte, das heißt diese Daten in den Details können maximal die Zahlen 0 bis 255 sein und die sind garantiert Element von einer Long-Zahl, also wieder die Details, nein die sind schon da. Nur ein bisschen weiter nach rechts fahren, also wieder neu verbinden von der Master-ID zur Detail-Master-ID-Referenz mit referentieller Integrität erstellen und: die gleiche Meldung. Die wird so lange kommen, bis wir den Datentyp korrigiert habe. Also in den Details muss es auch hier ein long sein. Und okay. Damit kann ich jetzt die Beziehung herstellen, also auf die Referenz. Und nach dem erstellen ist die drin, das wäre jetzt in Ordnung. Ich nehme die aber nochmal raus, um ihnen die andere Fehlermeldung zu zeigen, also ich habe den Mittelteil angeklickt, Entfernen-Taste gedrückt und ja die soll weg. Wenn sie nämlich schon eine Datenbank haben, wo es bereits Daten gibt und sei es nur, wie wir das auch machen, mal für ein paar Testdaten, dann trage ich jetzt hier mal, das reicht für einen einzigen Datensatz, eine Neun ein. Und, sie erinnern sich: Es gibt nur drei Master-Datensätze. Jetzt versuche ich hier die Zahlen Eins Zwei Drei mit der Referenz auf eine Neun zu verbinden. Und mit dem Erstellen gibt es die sehr umfangreiche Fehlermeldung, die nichts anderes sagt, als: In Tabelle Details steht irgendein Mist drin, den es in Master nicht gibt. Das ist die zweite Variante, die ihnen passieren kann, die erste sagt, die Datentypen passen nicht, diese sagt, in den Daten steht was ungültiges drin und zwar immer auf der Detailseite. Die können Sie nicht verbinden, solange sie referentielle Integrität einfordern und nutzen Sie bitte nicht die Lösung "Na dann verzichte ich eben drauf". Das ist wie gesagt das Ende einer Datenbank, sondern sie müssen hier die Leichen raussuchen. Und dann die referentielle Integrität einzurichten, wenn das nur zu Testzwecken drinsteht, macht es keine Probleme, dann ändern sie die Daten eben, wenn das eine echte Datenbank ist, dann wissen sie, die taugt nichts, die hat Leichen drin gehabt. Jetzt können wir das hier wieder rausschmeißen und auch gleich in den echten Tabellen, also das war ja nur die Anzeige in den Beziehungen, jetzt gehe ich da tatsächlich hin und lösche hier mit der Entfernen-Taste erstens die Details und zweitens die Master. Damit ist es jetzt sozusagen wieder die echte Datenbank und referentielle Integrität kann sowieso nur zwischen Tabellen dieser Datenbank hergestellt werden. Es geht nicht zwischen verknüpften Tabellen, die aus einer anderen Datenbank kommen, denn dort könnten Sie ja heimlich Daten ändern, während diese Datenbank das nicht mitkriegt. Also es kann nur mit Tabellen innerhalb einer einzigen Datenbank sein. Jetzt ist die Datenbank sicher. Und ich muss jetzt für eines der Elemente hier diese Kombobox ausschalten, damit ich überhaupt wieder ungültige Daten eintragen dürfte. Also ich mach das mal für die Fahrer zwischendurch, dann können wir hier schon schließen. In den Lieferungen, im Entwurf werde ich jetzt für die FahrerIDref beim Nachschlagen einfach nur dieses Listeneinträge wieder auf Nein stellen, damit darf ichlaut dieser Eigenschaft alles eingeben. Und dann können wir ja an der Stelle mal den Fahrer auf 99 setzen, das war eine 4, das kann ich mir merken, die 99 gibt es nicht in der Liste, aber das will ich gar nicht wissen. Ich geh jetzt mit Tab weiter, die Liste hat mich raus gelassen, da wäre sonst schon die Meldung gekommen, aber sobald ich jetzt dieses Feld verlasse, nämlich in die nächste Zeile gerate, da kommt jetzt die Meldung: das ist die referentielle Integrität, die mich zwingt, gültige Werte zu nehmen, die wird beim Verlassen des Datensatzes geprüft, denn wie auch hier, es können ja mehrere Fremdschlüssel existieren und da habe ich keine Chance, ich kann diesen Datensatz nicht speichern, das heißt im übrigen auch, ich kann ihn nicht verlassen. Wenn ich jetzt sogar versuche Access zu beenden, muss vorher das Fenster geschlossen werden, dafür muss vorher der Datensatz gespeichert werden, das geht nicht, früher konnten sie tatsächlich Access nicht beenden. Inzwischen kommt eine Fehlermeldung, die dann sagt: Sie können Access beenden, aber dabei verlieren sie leider die Änderungen an diesem Datensatz, weil sie nicht gültig sind. Der offizielle Weg, um heraus zu kommen ist die Escape-Taste, eventuell zweimal, wenn sie mehrere Sachen geändert haben, also die referentielle Integrität ist völlig sicher, sie können jetzt an dieser Stelle keine ungültigen Daten mehr eingeben. Und wenn ich hier nur Listeneinträge auf Ja stelle, dann vor allem deswegen, damit die Meldung hübscher wird. Wenn ich jetzt also das gleiche nochmal mache und hier die 99 eingebe, dann wird sofort beim Verlassen des Feldes eine hübschere Meldung kommen. Aber das alleine, ich geh jetzt wieder mit Escape raus, das alleine würde nicht verhindern, dass ich möglicherweise den Fahrer lösche oder per VBA was reinschreibe. Damit ist diese Datenbank völlig sicher. Es können nur noch brauchbare Daten drin stehen und mein erster Handgriff in einer anderen Datenbank ist immer sofort Datenbanktools, Beziehungen aufzurufen und mir das hier anzugucken. Da sehe ich erstens alle Felder, sehe, wo die Primärschlüssel sind, sehe die Beziehungen, ob es überhaupt welche gibt. Sie werden erschreckt sein, wie viele Datenbanken überhaupt keine Beziehungen haben Und das erklärt mir sozusagen den Geist der Datenbank: Wer hängt mit wem zusammen und wie. Und deswegen ist das das Kernstück einer Datenbank, die Tabellen sind die Methoden zum Speichern, aber die referentielle Integrität sorgt dafür, dass die Daten auch in sich schlüssig sind.

Access 2016 Grundkurs

Erwerben Sie die notwendigen Kenntnisse, um mit Access 2016 leistungsfähige Datenbanken zu erstellen.

6 Std. 18 min (75 Videos)
Derzeit sind keine Feedbacks vorhanden...

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!