Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.
Lookup-Beziehungen sind solche Beziehungen, wo eine Tabelle, wie beispielsweise zum Verwalten von Kundendaten, ein Feld enthält, mit dem genau eine Eigenschaft dieses Kunden aus den Datensätzen einer anderen Tabelle ausgewählt werden kann. Ein schönes Beispiel dafür ist die Anrede des Kunden. Solche Beziehungen lassen sich sehr schön mit dem Nachschlage-Assistenten definieren, den wir bereits in einem weiteren Artikel beschrieben haben. Im vorliegenden Artikel zeigen wir, wie Du solche Beziehungen von Hand definieren und sie gegebenenfalls noch an spezielle Anforderungen anpassen kannst.
Beispieldatenbank
Die Beispiele dieses Artikels findes Du in der Datenbank 2206_TabellenBasics_LookupBeziehungen.accdb.
Arten von 1:n-Beziehungen
Wir unterscheiden grob zwischen zwei Arten von 1:n-Beziehungen. Die erste definiert eine Beziehung von Daten aus zwei Tabellen, die auf jeden Fall in verschiedenen Tabellen gehalten werden müssen, weil sie sonst selbst die grundlegendsten Regeln der Normalisierung von Datenbanken verletzten würden. Das betrifft beispielsweise solche Daten wie Kunden und Projekte. Da jedem Kunden mehrere Projekte zugewiesen werden können, werden diese Daten in zwei verschiedene Tabellen geschrieben. Dabei enthält auch die Tabelle, deren Primärschlüsselfeld an der Beziehung beteiligt ist, einige Felder, die wichtig für Geschäftsprozesse sind. Die Tabellen einer solchen Beziehung sehen, in sehr abgespeckter Form, wie in Bild 1 aus.
Bild 1: 1:n-Beziehung mit zwei „vollwertigen“ Tabellen
Bei den von uns so bezeichneten Lookup-Beziehungen hingegen enthält die Tabelle mit dem an der Beziehung beteiligten Primärschlüsselfeld meist nur ein einziges Feld. Dieses Feld enthält Daten, die man auch direkt in ein Feld der Tabelle schreiben könnte, welches mit dem Fremdschlüsselfeld auf die auszuwählenden Daten verweist.
Ein gutes Beispiel ist die Anrede. Die Anrede direkt in ein Feld einer Tabelle zu schreiben ist gerade bei Verwendung von Tabellenkalkulationen wie Excel zur Verwaltung solcher Daten beliebt. Das Problem dabei ist: Neben Herr, Frau und Firma oder anderen Anreden tragen Benutzer auch gern Varianten ein wie Herrn, Herr Dr. und so weiter. Daraus ergibt sich, dass so schnell ein Wildwuchs entsteht und selbst von ein und derselben Anrede mehrere Versionen entstehen können. Um so etwas zu verhindern, kann man eine eigene Tabelle mit Anreden erstellen, die neben dem Feld für die Anreden noch ein Primärschlüsselfeld etwa namens AnredeID enthält.
Damit man diese Anreden nun in einer weiteren Tabelle wie tblKunden nutzen kann, um für die jeweiligen Kunden eine Anrede festzulegen, fügt man dieser ein Fremdschlüsselfeld hinzu. Dafür definiert man auch noch referenzielle Integrität, damit das Feld definitiv nur solche Einträge aufnehmen kann, die auch in der Tabelle mit den Anreden enthalten sind. Andere Beispiele für Daten, die wir in Lookup-Tabellen speichern würden, sind Kategorien, Produktarten, Währung, Mehrwertsteuersatz und viele mehr.
Vorteile von Lookup-Tabellen
Damit haben wir bereits einen Vorteil von Lookup-Tabellen für bestimmte Felder erwähnt: Der Benutzer kann nur noch die in der Lookup-Tabelle gespeicherten Werte wie beispielsweise Herr, Frau oder Firma für eine Anrede auswählen. Damit entstehen nicht mehr verschiedene Versionen ein und der selben Anrede, Kategorie et cetera.
Ein weiterer Vorteil ist, dass eine Auswahl oft viel schneller erfolgen kann als wenn man die Daten von Hand eingeben muss. Gegebenenfalls kann man in einem Formular, in dem dieser Wert noch nicht ausgewählt wurde, sogar das Nachschlagefeld automatisch aufklappen, wenn der Benutzer ein solches Feld aktiviert.
Ein in Anbetracht der heutigen Festplattengrößen weniger wichtiger Faktor ist, dass bei Verwendung von Nachschlagefeldern einige Byte Speicherplatz pro Datensatz eingespart werden können. Logisch: Wenn man eine Anredentabelle hat, welche mit den Werten 1, 2 und 3 die Anreden Herr, Frau und Firma abbildet, dann braucht man in jedem Kundendatensatz nur einen dieser Zahlenwerte zu speichern statt der Zeichenkette.
Außerdem soll die Lookup-Tabelle jeden Wert nur genau einmal enthalten. Auf diese Weise sparen wir nochmal Speicherplatz gegenüber einem entsprechenden Feld in der Kundentabelle.
Nachteile von Lookup-Tabellen
Der Vorteil ist in manchen Fällen auch gleichzeitig der Nachteil: Es wäre nämlich praktisch, wenn man einem Nachschlagefeld auch neue Einträge hinzufügen könnte – zum Beispiel für Kategorien oder Produktarten. Allerdings lässt sich dies in Formularen mit ein wenig VBA leicht realisieren – dazu jedoch in einem späteren Artikel mehr.
Ein weiterer Nachteil von Lookup-Tabellen ist, dass man, wenn man die in den Lookup-Tabellen enthaltenen Daten für irgendeinen Zweck benötigt, immer erst noch auf die Daten aus einer weiteren Tabelle zugreifen muss.
Das ist vor allem bei Berechnungen hinderlich, deshalb würde man beispielsweise bei der Mehrwertsteuer genau prüfen, ob man diese in einer externen Tabelle speichert oder doch direkt im Feld einer Produkttabelle oder einer Tabelle mit Bestellpositionen.
Erstellen einer Lookup-Tabelle aus einem Feld einer Haupttabelle
Stellen wir uns vor, wir hätten eine Tabelle aus einer Excel-Datei von einem Kunden übernommen, deren Daten wir nun in ein Access-Datenmodell überführen sollen. Diese Tabelle enthält die Kundendaten und darunter eine Spalte namens Anrede, welche bereits bereinigte Anreden wie Herr, Frau und Firma enthält. Wir stehen nun vor der Aufgabe, diese Daten in eine Lookup-Tabelle zu überführen und in der Kundentabelle ein Fremdschlüsselfeld anzulegen, mit dem wir auf die Daten dieser Lookup-Tabelle zugreifen wollen.
Die Ausgangstabelle sieht in der Datenblattansicht wie in Bild 2 aus.
Bild 2: Tabelle mit Anreden in einem Textfeld
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