Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 2/2005.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

1:1-Beziehungen

André Minhorst, Duisburg

Direkte Beziehungen zwischen eindeutigen Schlüsseln zweier Tabellen heißen 1:1-Beziehungen, weil jeder Datensatz der einen Tabelle mit maximal einem Datensatz der zweiten Tabelle verknüpft sein kann. Dieser Beziehungstyp ist zwar relativ selten, aber dennoch praxisrelevant. In diesem Beitrag erfahren Sie, wann der Einsatz von 1:1-Beziehungen sinnvoll ist und welche Besonderheiten es dabei zu beachten gilt.

Einsatzmöglichkeiten

Der Einsatz von 1:1-Beziehungen ist beispielsweise in folgenden Fällen sinnvoll:

  • Eine Tabelle hat mehr als 255 Felder und überschreitet damit die maximal mögliche Feldanzahl.
  • Eine Tabelle enthält selten verwendete Felder. Diese lassen sich in eine zweite per 1:1-Beziehung verknüpfte Tabelle ausgliedern; die zweite Tabelle enthält nur Datensätze, wenn mindestens eines der Felder gefüllt ist.
  • Für bestimmte Felder einer Tabelle sollen andere Zugriffsberechtigungen gelten. Diese lassen sich in einer zweiten Tabelle einfach festlegen.
  • Der Zugriff auf die Daten soll objektorientiert erfolgen. Durch 1:1-Beziehungen lässt sich Vererbung gut nachbilden.
  • Beispiele und Alternativen

    Im Beitrag Artikelverwaltung mit Inventurfunktion in dieser Ausgabe von Access im Unternehmen finden Sie gleich zwei Beispiele für 1:1-Beziehungen. In beiden Fällen enthält eine Tabelle die Hauptdaten des zu speichernden Objekts und es gibt eine oder mehrere Tabellen mit weiteren Daten, die in einem Fall vorhanden sein müssen und im anderen Fall vorhanden sein können.

    Im ersten Beispiel handelt es sich um Bestandsänderungen in der Artikeldatenbank. Die Bestandsänderungen treten in Form von Wareneingängen, Warenausgängen (Bestellungen) und Umbuchungen (etwa bei Fehlbeständen zum Zeitpunkt einer Inventur) auf. Jede dieser Bestandsveränderungen hat allgemeine und spezifische Eigenschaften: Alle drei beziehen sich auf einen Artikel, enthalten eine Anzahl und ein Datum. Der Wareneingang enthält Informationen über den Einkaufspreis und den Lieferanten des jeweiligen Artikels, der Warenausgang enthält einen Verkaufspreis und Umbuchungen haben eine bestimmte Umbuchungsart und beispielsweise ein Bemerkungsfeld.

    Für jede Bestandsänderungsart eine Tabelle?

    Theoretisch könnten Sie für Wareneingänge, Warenausgänge und Umbuchungen eine eigene Tabelle anlegen. Die drei Tabellen hätten dann einige gemeinsame Eigenschaften und einige spezielle Eigenschaften.

    Wenn man damit eine Inventur durchführen wollte, würde man eine UNION-Abfrage über die relevanten Felder der drei Tabellen erstellen und die gewünschten Zahlen addieren. UNION-Abfragen sind aber nicht besonders performant; außerdem kann man dort nicht über den Primärschlüssel auf einen der Datensätze zugreifen.

    Es lässt sich zwar ein behelfsmäßiges Primärschlüsselkonstrukt aus dem eigentlichen Primärschlüssel und einem tabellenabhängigen Wert zusammensetzen, doch der Umgang damit ist relativ aufwändig.

    Mit einer Tabelle, die alle gemeinsamen Felder enthält, und mehreren Tabellen mit den Eigenheiten der jeweiligen Ausprägung der Bestandsveränderung lässt sich dieses Problem umgehen:

    Die Haupttabelle enthält auf jeden Fall einen eindeutigen Primärschlüssel und man kann ohne Verknüpfung auf alle abrechnungsrelevanten Daten zugreifen.

    Dafür ist wiederum eine Verknüpfung erforderlich, wenn man nur eine Ausprägung - also beispielsweise die Wareneingänge - mit allen Daten anzeigen oder bearbeiten möchte.

    Realisierung einer 1:1-Beziehung

    Für die Erstellung einer 1:1-Beziehung müssen folgende Voraussetzungen erfüllt sein:

  • Es liegen zwei Tabellen mit einem eindeutigen Schlüssel vor. Das kann, aber muss kein Primärschlüssel sein.
  • Maximal eines der beiden Felder erhält seine Werte über die Autowert-Funktion.
  • Die beiden zu verknüpfenden Felder haben den gleichen Datentyp.
  • Sind diese Voraussetzungen erfüllt, können Sie loslegen. Verwenden Sie als Beispiel die ebenfalls in der Artikeldatenbank enthaltene Tabelle tblAdressen, die mit der Tabelle tblRechnungsadressen um die abrechnungsrelevanten Daten erweitert werden soll.

    Im Beispiel sind nicht die beiden Primärschlüssel an der Beziehung beteiligt, sondern ein Primärschlüssel und ein eindeutiger Schlüssel mit gleichem Namen (AdresseID). Die zweite Tabelle hat einen eigenen Primärschlüssel, der nicht in die Beziehung involviert ist.

    Eindeutiger Index

    Um ein Feld einer Tabelle als eindeutigen Index festzulegen, öffnen Sie die Tabelle in der Entwurfsansicht und zeigen mit dem Menübefehl Ansicht/Indizes den Dialog Indizes an.

    Dort tragen Sie den Namen des neuen Index ein, wählen das oder die betroffenen Felder aus (in diesem Fall AdresseID) und stellen die Eigenschaft Eindeutig auf den Wert Ja ein (s. Abb. 1).

    Abb. 1: Festlegen von Indizes

    Wenn die betroffenen Tabellen im Beziehungen-Fenster sichtbar sind, müssen Sie nur die beteiligten Felder der beiden Tabellen verbinden, indem Sie mit der Maus eines der Felder auf das andere ziehen.

    Achtung: Reihenfolge!

    Für viele Fälle ist es wichtig, welche Tabelle für das "Ziehen" des Beziehungspfeils als Quelle und welche als Ziel dient.

    Wenn Sie referentielle Integrität festlegen möchten, um beispielsweise die Aktualisierungs- und Löschweitergabe zu verwenden, muss die Ausgangstabelle im Eigenschaftsfenster der Beziehung auf der linken Seite stehen (s. Abb. 2).

    In dieser Abbildung ist gut zu erkennen, dass Access die Beziehung als 1:1-Beziehung erkannt hat (s. Eigenschaft Beziehungstyp am unteren Rand des Dialogs).

    Abb. 2: Eigenschaften einer 1:1-Beziehung

    Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

    Sind Sie Abonnent?Jetzt einloggen ...
     

    Kompletten Artikel lesen?

    Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

    E-Mail:

    © 2003-2015 André Minhorst Alle Rechte vorbehalten.