Access 2010: Beziehungen

Aus Augenbit

Beziehungen

Sowohl Tabellenkalkulationen wie Excel, als auch Datenbanksysteme wie Access speichern und bearbeiten Informationen in Form von Tabellen. Während die Hauptaufgabe einer Tabellenkalkulation aber beim Bearbeiten von Werten innerhalb einer Tabelle liegt, werden bei Datenbanksystemen zahlreiche Tabellen über sogenannte Beziehungen miteinander in Verbindung gebracht und gemeinschaftlich ausgewertet bzw. bearbeitet. Beziehungen zwischen einzelnen Tabellen sind notwendig wenn ...

  • ... Sie Daten aus unterschiedlichen Tabellen miteinander verbinden wollen.
  • ... Sie Daten aus unterschiedlichen Tabellen mit Abfragen auswerten wollen.
  • ... Sie Berichte oder Abfragen aus mehreren Tabellen anfertigen wollen.
  • ... Sie über ein Formular Datensätze verschiedener Tabellen bearbeiten wollen.

Beim Entwurf einer Datenbank muss genau überlegt werden, wie sich die zu speichernden Daten am besten auf verschiedene Tabellen aufteilen lassen, und in welcher Beziehung diese Tabellen zueinander stehen werden. Ziel ist es dabei Redundanzen, also doppeltes Speichern der gleichen Information, zu vermeiden.

Master- und Detailtabelle

Stehen zwei Tabellen in Beziehung zueinander, so kann man zwischen Mastertabellen und Detailtabellen unterscheiden. Die Hauptdatensätze stehen in der Mastertabelle, die untergeordneten Datensätze in der Detailtabelle. Die Mastertabelle stellt mit ihrem Primärschlüssel den Fremdschlüssel der Detailtabelle. Was in der Theorie sehr kompliziert klingt ist in der Praxis deutlich einfacher. Stellen wir uns eine Tabelle mit allen Lehrern einer Schule vor. In dieser Lehrertabelle sind für jeden Lehrer der Vor- und Nachname, sowie seine Personalnummer gespeichert. Als Primärschlüssel dient die Personalnummer, da diese für jeden Lehrer eindeutig ist. Diese Tabelle soll nun mit einer Tabelle in Beziehung gesetzt werden in der Überstunden verwaltet werden. Jede Zeile der Überstundentabelle enthält das Datum und die Anzahl der an einem Tag durch einen bestimmten Lehrer geleisteten Überstunden. Um die Überstunden dem richtigen Lehrer zuordnen zu können, wird neben dem Datum und der Anzahl der Überstunden als Fremdschlüssel die Personalnummer des zugehörigen Lehrers aus der Lehrertabelle gespeichert. Die beiden Tabellen sind dadurch in Beziehung gesetzt. Mastertabelle ist die Lehretabelle. Sie enthält den Primärschlüssel, über welchen die Verknüpfung möglich wird. Detailtabelle ist die Überstundentabelle. Sie übernimmt den Primärschlüssel Personalnummer als Fremdschlüssel.

Beispiele für Beziehungen

Schauen wir uns unterschiedliche Beziehungen am Beispiel einer Schule an:

  • EINE Schule hat MEHRERE Mitarbeiter
  • EINE Schule hat MEHRERE Abteilungen
  • EIN Mitarbeiter kann in MEHREREN Abteilungen arbeiten
  • EIN Mitarbeiter hat EINE Personalnummer
  • EIN Lehrer hat MEHRERE Schüler
  • EIN Schüler hat MEHRERE Lehrer
  • EINE Klasse hat MEHRERE Schüler
  • EINE Klassenstufe hat MEHRERE Klassen
  • EINE Schule hat MEHRERE Klassenstufen

Bei den oben genannten Beispielen lassen sich drei verschiedene Arten von Beziehungen unterscheiden:

Eins-zu-eins-Beziehung (1:1)

EIN Mitarbeiter hat EINE Personalnummer

Bei einer Eins-zu-eins-Beziehung (1:1) existiert zu jedem Datensatz aus der Mastertabelle GENAU EIN Datensatz aus der Detailtabelle. Prinzipiell brächte man für diesen Fall überhaupt keine Beziehung erstellen und könnte die Informationen beider Tabellen in einer einzigen führen. Eins-zu-eins-Beziehungen werden vor allem dann verwendet, wenn einzelne Tabellen kompakt und übersichtlich gehalten werden sollen, oder wenn aus Datenschutzgründen gewisse Detailinformationen bei einer allgemein einsehbaren Tabelle einzelnen nicht berechtigten Personen vorenthalten werden sollen.

Eins-zu-viele-Beziehungen (1:n)

EINE Schule hat MEHRERE Mitarbeiter

Die Eins-zu-viele-Beziehung (1:n) ist die am häufigsten vorkommende Beziehungsart in Datenbanken. Zu jedem Datensatz aus der Mastertabelle können mehrere untergeordnete Datensätze in einer Detailtabelle existieren. Jedem Datensatz der Detailtabelle ist umgekehrt aber nur genau ein wert in der Mastertabelle zugeordnet.

Viele-zu-viele-Beziehung (m:n)

  • EINE Abteilung besteht aus MEHREREN Mitarbeitern
  • EIN Mitarbeiter kann in MEHREREN Abteilungen arbeiten

Zu jedem Datensatz aus einer Tabelle können mehrere Datensätze aus einer anderen Tabelle zugeordnet sein und umgekehrt. Um eine solche Beziehung innerhalb einer Datenbank zu realisieren wird eine zusätzliche Tabelle benötigt, in welcher der Primärschlüssel aus den Schlüsseln beider Tabellen zusammengesetzt wird.

Referentielle Integrität

Durch Beziehungen werden zwischen Tabellen lose Verbindungen geschaffen. Ändern sich innerhalb einer Tabelle die Daten, über welche eine Beziehung zu einer anderen Tabelle besteht (z.B. durch Löschung eines Datensatzes), so werden diese Veränderungen nicht an die andere Tabelle weitergegeben. Hieraus können Probleme entstehen, da vielleicht aus einer Tabelle heraus auf einen Datensatz in einer anderen Tabelle verwiesen wird, der gar nicht mehr existiert. Derartige Fehler können relativ leicht entstehen. Nehmen wir an ein Lehrer geht in den Ruhestand und wird in der Schuldatenbank aus der Tabelle mit Lehrernamen gelöscht. Die mit der Lehrertabelle verknüpfte Überstundentabelle enthält aber immer noch Verweise auf den nun nicht mehr in der Lehrertabelle existierenden Lehrer. Es ist eine Inkonsistenz innerhalb der Daten enstanden. Ein oder mehrere Datensätze in der Überstundentabelle können nicht mehr zugeordnet werden.

Um derartige Probleme zu vermeiden, kann bei der Erstellung von Beziehungen zwischen einzelnen Tabellen zusätzlich die sogenannte referentielle Integrität definiert werden. Sie verhindert das Löschen von Datensätzen, die noch mit anderen Datensätzen in Verbindung stehen. Beim Versuch den Lehrer im oben genannten Beispiel aus der Lehrertabelle zu löschen würde bei aktiver referentieller Integrität Access den Löschbefehl verweigern.

Zusätzlich zur referentiellen Integrität lässt sich die Option Lösch- und Aktualisierungsweitergabe wählen. Diese bewirkt, dass Änderungen an einer Tabelle an mit Ihr in Beziehung stehende Tabellen weitergereicht werden. Wird beispielsweise ein Datensatz gelöscht, wie zum Beispiel der Lehrer im bekannten Beispiel, so werden automatisch auch alle Datensätze in den untergeordneten Tabellen mitgelöscht, die auf diesen Lehrer verwiesen. Würde ein Lehrer aus irgendeinem Grund eine neue Personalnummer erhalten (welche in unserem Beispiel als Primäschlüssel diente), so würde diese Veränderung an alle untergeordneten Tabellen weitergegeben werden.

Vorüberlegungen und Bedingungen zur Definition von Beziehungen

  • Verbundene Datenfelder müssen nicht den gleichen Feldnamen besitzen.
  • Verbundene Datenfelder müssen im Felddatentyp und in der Feldgröße übereinstimmen.
    • Möchten Sie Datenfelder über den Feldatentyp AUTOWERT verknüpfen, so müssen Sie in der Detailtabelle den Felddatentyp ZAHL mit der Feldgröße LONG INTEGER für das zu verknüpfende Feld einstellen.
  • Eine Indizierunge der verknüpften Datenfelder beschleunigt die Arbeit mit Abfragen, Formularen und Berichten.
  • Beziehungen können auf mehreren Spalten basieren. Diese müssen allerdings einen eindeutigen Index besitzen.
  • Bei Beziehungen mit referenzieller Integrität muss die Mastertabelle einen Primärschlüssel oder einen eindeutigen Index ohne Duplikate besitzen und die Beziehung muss auf diesem Schlüssel basieren.

Beziehungen erstellen, bearbeiten und löschen

Um Beziehungen in Access bearbeiten gehen Sie über den Menüpunkt DATENBANKTOOLS - BEZIEHUNGEN (ALT,K,E) in das Beziehungsfenster. Das Menüband erweiter sich nun um den Eintrag "Entwurf"

Das Beziehungsfenster stellt die Beziehungen zwischen den Tabellen einer Datenbank grafisch dar. Jede Tabelle wird in Form eines kleinen Fensters angezeigt, in dem die Spaltenüberschriften in einer Liste untereinander angeordnet sind. Um auch in umfangreichen Datenbanken übersichtlich zu bleiben lassen sich Tabellen wahlweise ein- oder ausblenden. Beziehungen zwischen Tabellen werden durch Linien dargestellt, welche zwischen den verbundenen Datenfeldern der Tabellen verlaufen. Über zusätzlich Symbole wird die Art der Beziehung (1:1, 1;n) visualisiert. Sehende Benutzer können durch einfaches Ziehen mit der Maus eine Linie zwischen zwei Datenfeldern erzeugen und dadurch eine neue Beziehung erstellen.

Um Beziehungen ohne Maus bearbeiten zu können sind gute Kenntnisse über die Struktur der Tabellen innerhalb der Datenbank wichtig. Bevor man das Beziehungsfenster aufruft, sollte man genau wissen welche Tabellen man wie miteinander verbinden möchte. Erster Schritt ist immer das Einblenden der Tabellen, die man miteinander in Beziehung setzen möchte.

Tabellen im Beziehungsfenster einblenden

Das Beziehungsfenster ist bei seinem ersten Aufruf leer und zeigt keine Tabellen an. Um Tabellen einzublenden und mit ihnen weiterarbeiten zu können ...

  1. ... wählen Sie den Menüpunkt BEZIEHUNGEN, TABELLEN ANZEIGEN (ALT,JR,ST).
  2. Im sich öffnenden Dialogfenster TABELLE ANZEIGEN gibt es drei Registerkarten (TABELLEN, ABFRAGEN, BEIDE) und zwei Schalter (HINZUFÜGEN, SCHLIESSEN), sowie ein Listenfeld. Die Registerkarten erlauben es auszuwählen, ob im Listenfeld nur Tabellen, nur Abfragen, oder eben beides angezeigt werden soll.
  3. Mit AB und AUF navigiert man durch das Listenfeld und sucht eine der Tabellen aus, die man bearbeiten möchte.
  4. Mit TAB springt man auf den Schalter HINZUFÜGEN. Ohne weitere Rückmeldung wird dadurch die eben selektierte Tabelle in das Beziehungsfenster übernommen.
  5. MIT UMSCHALT+TAB springt man zurück in das Listenfeld und sucht mit AB und AUF die nächste Tabelle, die man wieder über den Schalter HINZUFÜGEN in das Beziehungsfenster übernehmen kann.
  6. Hat man alle Tabellen, die man zum Erstellen von Beziehungen benötigt in das Beziehungsfenster übernommen, schließt man das TABELLE ANZEIGEN Dialogfenster über den Schalter SCHLIESSEN.

Alle Tabellen, die in das Beziehungsfenster übernommen wurden, lassen sich nun weiterbearbeiten. Um die Übersicht zu bewahren, empfiehlt es sich immer nur wenige, vielleicht sogar nur zwei für eine Beziehung benötigte Tabellen einzublenden. Umgekehrt verhält es sich, wenn Sie die bestehenden Beziehungen innerhalb einer Datenbank erkunden möchten. In diesem Fall können Sie direkt aus dem Beziehungsfenster heraus alle Tabellen auf einmal einblenden. Dies geschieht über den Menüeintrag ENTWURF - ALLE BEZIEHUNGEN (ALT,JR,A).

Innerhalb des Beziehungsfensters können Sie mit TAB zwischen einzelnen eingeblendeten Tabellen hin- und herwechseln. Mit AB und AUF können sich innerhalb einer dort dargestellten Tabelle durch die Listeneinträge navigieren. Jaws sagt dabei eventuell existierende Beziehungen zu anderen Tabellen an.

Tabellen aus dem Beziehungsfenster entfernen

Das Entfernen von Tabellen aus dem Beziehungsfenster ist sehr einfach. Navigieren Sie mit TAB auf die Tabelle, die Sie entfernen möchten und drücken Sie anschließend ENTF. Alternativ können Sie auch den Menüeintrag ENTWURF - TABELLE AUSBLENDEN (ALT,JR,B) verwenden. Wenn Sie sich nicht sicher sind in welcher Tabelle sich der Cursor gerade befindet, drücken Sie AB oder AUF um auf einen anderen Eintrag innerhalb des Tabellenfensters zu gelangen. Jaws sagt nach dem Listeneintrag den Namen der Tabellen an.

WICHTIG: Durch das Entfernen der Tabellen aus dem Beziehungsfenster werden die Tabellen und evtl. bestehende Beziehungen nicht gelöscht. Sie lediglich nicht nur mehr zu sehen.

Neue Beziehung erstellen

  1. Um eine neue Beziehung zwischen zwei Tabellen zu erstellen blenden Sie die Tabellen zunächst im Beziehungsfenster ein.
  2. Wählen Sie den Menüeintrag ENTWURF - BEZIEHUNGEN BEARBEITEN (ALT,JR,E).
  3. Wählen Sie im sich öffnenden Dialogfeld BEZIEHUNGEN BEARBEITEN den Schalter NEUE ERSTELLEN (ALT,N)
  4. Erneut öffnet sich ein Dialogfeld. Das jetzt aktive Dialogfeld NEUE ERSTELLEN besteht aus vier Ausklapplisten.
  5. Zunächst wählen Sie in der Ausklappliste LINKER TABELLENNAME (ALT+L) die Tabelle aus, die Mastertabelle für die neu zu erstellende Beziehung sein soll und springen dann mit TAB weiter.
  6. In der Ausklappliste RECHTER TABELLENNAME (ALT+R) wählen Sie die Tabelle aus, die Detailtabelle werden soll und springen dann weiter mit TAB.
  7. In der Ausklappliste LINKER SPALTENNAME (ALT+S) wählen Sie die Spalte der Mastertabelle aus, die den Schlüssel, enthält auf der die Beziehung basieren soll und springen dann wieder weiter mit TAB.
  8. In der letzten Ausklappliste RECHTER SPALTENNAME (ALT+P) wählen Sie die Spalte der Detailtabelle aus, die den Fremdschlüssel enthält.
  9. Springen Sie mit TAB zum OK Schalter und betätigen Sie diesen. Sie kehren zum Dialogfeld BEZIEHUNGEN BEARBEITEN zurück.
  10. Im Dialogfeld BEZIEHUNGEN BEARBEITEN steht der Cursor nun auf dem Auswahlschalter MIT REFERENTIELLER INTEGRITÄT. Wenn Sie diese für die neue Beziehung wünschen drücken Sie LEERTASTE.
    • Wenn Sie referentielle Integrität angewählt haben, werden die Auswahlschalter AKTUALISIERUNGSWEITERGABE AN VERWANDTE FELDER und LÖSCHWEITERGABE AN VERWANDTE DATENSÄTZE freigegeben, die Sie mit TAB anspringen und mit LEERTASTE auswählen können.
  11. Um den Erstellungsvorgang für die neue Beziehung abzuschließen springen Sie mit TAB zum Schalter ERSTELLEN und bestätigen Sie mit EINGABE.

Beziehungen bearbeiten

  1. Um eine bestehende Beziehung zwischen Tabellen zu bearbeiten, blenden Sie die Tabellen zunächst im Beziehungsfenster ein.
  2. Wählen Sie den Menüeintrag BEZIEHUNGEN - BEZIEHUNGEN BEARBEITEN (ALT,JR,E). Es öffnet sich das Dialogfeld BEZIEHUNGEN BEARBEITEN.
  3. Der Cursor befindet sich nun in der Ausklappliste TABELLE/ABFRAGE (ALT+T).
  4. Mit ALT+AB öffnen Sie die Ausklappliste. Navigieren Sie mit AB und AUF die Mastertabelle, deren Beziehungen Sie bearbeiten möchten und bestätigen Sie mit EINGABE.
  5. Der Cursor springt zur Ausklappliste VERWANDTE TABELLE/ABFRAGE (ALT+L).
  6. Mit ALT+AB öffnen Sie die Ausklappliste. Navigieren Sie mit AB und AUF die Detailtabelle, deren Beziehungen Sie bearbeiten möchten und bestätigen Sie mit EINGABE. Access zeigt in dieser Ausklappliste nicht alle Tabellen an, sondern nur die Tabellen, zu denen von der vorher gewählten Mastertabelle auch tatsächlich Beziehungen bestehen.
  7. Der nächste Druck auf TAB springt in eine zweispaltige Tabelle. Die linke Spalte dieser Tabelle zeigt die Spalte der Mastertabelle an, über welche die Beziehung besteht. Diese lässt sich mit ALT+AB ändern. Die rechte Spalte der Tabelle zeigt die Spalte der Detailtabelle an, über welche die Beziehung besteht. Auch diese lässt sich mit ALT+AB ändern.
  8. Da es möglich ist, dass innerhalb einer Tabelle Beziehungen über mehrere/unterschiedliche Spalten definiert sind, kann man innerhalb der Tabelle mit Pfeiltasten navigieren und in der zweiten und weiteren Zeilen weitere Beziehungen mit ALT+AB definieren. Dies wird in der Regel aber nur selten benötigt.
  9. Der nächste Druck auf TAB bringt Sie zum Auswahlschalter REFERENTIELLE INTEGRITÄT. Wenn Sie diese für die neue Beziehung wünschen drücken Sie LEERTASTE.
    • Wenn Sie referentielle Integrität angewählt haben, werden die Auswahlschalter AKTUALISIERUNGSWEITERGABE AN VERWANDTE FELDER und LÖSCHWEITERGABE AN VERWANDTE DATENSÄTZE freigegeben, die Sie mit TAB anspringen und mit LEERTASTE auswählen können.
  10. Um den Erstellungsvorgang für die neue Beziehung abzuschließen springen Sie mit TAB zum Schalter ERSTELLEN und bestätigen Sie mit EINGABE.

Beziehungen löschen

Beziehungen lassen sich blind nicht löschen.

Beziehungsfenster schließen

Bitte beachten Sie, dass Sie das Beziehungsfenster, ebenso wie alle anderen in Access geöffneten Fenster nicht mit ALT+F4 oder über ALT+LEERTASTE,X schließen können ohne Access damit zu beenden. Stattdessen blenden Sie das Beziehungsfenster über den Menüeintrag ENTWURF - SCHLIEßEN (ALT,JR,C) aus.

Unterdatenblätter

Unterdatenblätter sind eine erweiterte Darstellungsform der Mastertabelle bei miteinander verknüpften Tabellen oder Abfragen. Ein Tabelle mit Unterdatenblatt zeigt sowohl die Datensätze der Mastertabelle, als auch die zugehörigen Detailinformationen aus der Detailtabelle gemeinsam an. Sie können so direkt gemeinsam bearbeitet werden.

Sind zwei Tabellen, bzw. Abfragen über eine 1:1 oder 1:n Beziehung miteinander verbunden, so lässt sich in der Tabellenansicht der Mastertabelle für jeden Datensatz ein Unterdatenblatt mit den zu diesem Datensatz gehörigen Einträgen der Detailtabelle anzeigen. Visuell dargestellt wird die Existenz eines Unterdatenblattes durch ein kleines Pluszeichen noch vor der ersten Spalte. Man kann das Unterdatenblatt mit STRG+UMSCHALT+AB für jeden Datensatz einzeln öffnen (und mit STRG+UMSCHALT+AUF wieder schließen).

Pro Tabelle bzw. Abfrage ist immer nur die Anzeige eines Unterdatenblattes möglich, auch wenn vielleicht Beziehungen zu weiteren anderen Detailtabellen bestehen. Ist dies der Fall, fragt Access beim ersten Öffnen der Mastertabelle nach, zu welcher Tabelle das Unterdatenblatt angezeigt werden soll.

Orientierung innerhalb einer Tabelle mit angezeigtem Unterdatenblatt ist für blinde Mensche etwas erschwert, da außerhalb der normalen Tabellenstruktur nun weitere Tabellen mit eigenen von der Haupttabelle abweichenden Spalten eingeblendet werden. An der Navigation mit Hilfe der Pfeiltasten ändert sich nichts

Access 2010: Übung: Beziehungen und Unterabfragen