Warum noch ein Access-Buch?
Für wen ist das Buch?
Jetzt bestellen
+ direkter Download des eBooks!
Nur EUR 59,95!
Fehler gefunden?
Bitte melden!
Wünsche an das Buch?
Her damit!
Was denken die Leser über dieses Buch?
Lesen Sie aktuelle Rezensionen!
Kapitel des noch nicht veröffentlichten Buchs zum Downloaden, Probelesen und Kommentieren
Beispieldatenbanken
Zusätzliches Material

Das Buch im HTML-Format

Für unbestimmte Zeit bieten Addison-Wesley und André Minhorst den kompletten Inhalt des Buchs als Download an. Schauen Sie rein und informieren Sie sich über den Inhalt! Und wenn Ihnen das Buch nützlich erscheint und Sie glauben, dass Sie etwas gelernt haben oder durch das Gelesene sogar etwas Zeit und somit Geld bei Ihrer Arbeit einsparen konnten, können Sie sich ja beim Autor und beim Verlag revanchieren - beispielsweise durch den Kauf dieses Buchs.

Am schönsten wäre es natürlich, wenn Sie das Buch direkt hier bestellen - Sie erhalten das Buch dann direkt vom Verlag, und der Autor und Verlag haben dann noch mehr davon, als wenn Sie es anderswo kaufen.

Danke für Ihr Interesse!

2.5.6 m:n-Beziehungen

2.5.7 1:1-Beziehungen

1:1-Beziehungen trifft man relativ selten an, obwohl sie sehr hilfreich sein können. Eine 1:1-Beziehung verknüpft jeden Datensatz mit nur einem Datensatz der verknüpften Tabelle und umgekehrt. Wozu soll das nun hilfreich sein? Solche Daten kann man doch auch in eine Tabelle schreiben? Diese Fragen sind durchaus berechtigt. Deshalb lernen Sie nun die Gründe und Einsatzmöglichkeiten für 1:1-Beziehungen kennen. Es gibt häufig Fälle, in denen Tabellen aus endlos vielen Feldern bestehen. Das liegt oft daran, dass die Tabellen recht verschiedenartige Daten enthalten sollen, von denen jede Art eigene Eigenschaften besitzt und damit neue Felder erzeugt.

Abbildung 2.58: m:n-Verknüpfung mit dritter Verknüpfung

Beispiel: Unterschiedliche Mitarbeiterarten

Ein Unternehmen sammelt die Daten aller Mitarbeiter in einer Tabelle und unterscheidet dabei zunächst nicht zwischen fest angestellten und freien Mitarbeitern. Die Tabelle sieht wie in Abbildung 2.59 aus.

Abbildung 2.59: Entwurf einer Tabelle mit teilweise nicht benötigten Feldern

Enthält die Tabelle einen Angestellten, wird das Feld Stundensatz nicht benötigt, weil der Angestellte ein Gehalt bekommt. Handelt es sich um einen freien Mitarbeiter, sind die Felder Personalnummer, Gehalt und AbteilungID überflüssig. Eine reale Mitarbeitertabelle enthält sicher noch viele weitere nützliche Felder für den Angestellten und den freien Mitarbeiter, die aber im jeweils anderen Fall nicht benötigt werden. Oder konkret ausgedrückt: Hier wird einiges an Speicherplatz verschenkt.

Tabellen aufteilen und wieder verknüpfen

Um dies zu verhindern, trennt man einfach die nur für den Angestellten oder den freien Mitarbeiter vorgesehenen Felder aus der Tabelle heraus und fügt diese in zwei weitere Tabellen namens tblAngestellte und tblFreieMitarbeiter ein. Die Tabellen sehen nun so wie in Abbildung 2.60 aus. Die Tabelle tblMitarbeiter enthält nur noch die Daten, die für beide Mitarbeiterarten gelten. Die Tabelle tblFreieMitarbeiter enthält ein eigenes Primärschlüsselfeld, ein eindeutiges Feld namens PersonID zur Herstellung der 1:1-Beziehung und ein Feld mit den speziellen Informationen zu freien Mitarbeitern - hier den Stundensatz. Die Tabelle tblAngestellte ist genauso aufgebaut, enthält aber die angestellten-spezifischen Informationen.

Abbildung 2.60: Aufteilung einer Tabelle in eine Haupt- und zwei Untertabellen

Voraussetzung: Eindeutige Schlüsselfelder auf beiden Seiten der Beziehung

1:1-Beziehungen verbinden zwei Tabellen über eindeutige Felder. Primärindexfelder sind eindeutig und auch andere Felder können Sie als eindeutig festlegen. Dazu erstellen Sie einfach einen entsprechenden Index über den Indizes-Dialog. Diesen zeigen Sie an, indem Sie die gewünschte Tabelle in der Entwurfsansicht öffnen und den Ribbon-Eintrag Entwurf|Einblenden/Ausblenden|Indizes auswählen.

Nach dem Öffnen dieses Dialogs werden Sie vermutlich verwundert sein, dass Access nicht nur für das Primärschlüsselfeld, sondern auch noch für einige andere Felder scheinbar willkürlich Indizes angelegt hat (siehe Abbildung 2.61). Die Willkür hält sich aber in Grenzen: Access legt standardmäßig für alle Felder, deren Name eine der Zeichenketten »ID«, »Schlüssel«, »Code« oder »Nummer« enthält, einen Index an. Diese Einstellung können Sie in den Access-Optionen unter Objekt-Designer|Tabellenentwurf|Autoindex beim Importieren/Erstellen anpassen (siehe Abbildung 2.62).

Abbildung 2.61: Einstellen eines eindeutigen Index

Wenn Sie in beiden Tabellen einen eindeutigen Index für das Feld PersonID angelegt haben, können Sie zum Verknüpfen schreiten. Dazu zeigen Sie wie gewohnt die zu verknüpfenden Tabellen im Beziehungen-Fenster an.

Nun kommt der wichtigste Schritt und hier müssen Sie besonders auf die Reihenfolge achten: Ziehen Sie das Feld PersonID der Ausgangstabelle, also der Tabelle tblPersonen, in das Feld PersonID der Tabelle tblAngestellte. Definieren Sie referentielle Integrität und aktivieren Sie die Option Löschweitergabe an verwandte Datensätze. Hierfür ist die Reihenfolge wichtig: Der Dialog Beziehungen bearbeiten zeigt unter Tabelle/Abfrage die Ausgangstabelle und unter Verwandte Tabelle/Abfrage die Zieltabelle einer Löschweitergabe an. Die Löschweitergabe soll von der Tabelle tblPersonen ausgehen und nicht umgekehrt, daher muss auch der Beziehungspfeil von dieser Tabelle ausgehen (siehe Abbildung 2.63).

Übrigens: Sollte der Dialog Beziehungen bearbeiten im unteren Bereich nicht 1:1 als Beziehungstyp anzeigen, müssen Sie nochmals die Eindeutigkeit der beteiligten Tabellen prüfen.

Abbildung 2.62: Anpassen der Feldnamen, die das automatische Anlegen eines Index forcieren

Abbildung 2.63: 1:1-Beziehung zwischen zwei Tabellen

Nach dem Anlegen der beiden 1:1-Beziehungen sieht das Ergebnis wie in Abbildung 2.64 aus.

Abbildung 2.64: Tabelle mit zwei 1:1-Beziehungen

Wie arbeitet man mit per 1:1-Beziehung verknüpften Tabellen?

Eine solche Beziehung können Sie prinzipiell wie eine ganz normale Tabelle behandeln: Sie müssen nur eine geeignete Abfrage anlegen, um die Daten wieder zusammenzuführen. Wie dies funktioniert und wie Sie Formulare nutzen, um solche Daten zu bearbeiten, erfahren Sie in Kapitel 3, »Abfragen«, Abschnitt 3.7 und in Kapitel 4, »Formulare«, Abschnitt 4.5.5.

Wo kommen 1:1-Beziehungen sonst noch zum Einsatz?

Neben der »Spezialisierung« von Tabellen durch Anhängen von Tabellen mit weiteren Informationen gibt es noch weitere Gründe für den Einsatz von 1:1-Beziehungen:

  • Eine Tabelle hat mehr als 255 Felder. Sicher gibt es Objekte, die so viele Eigenschaften mitbringen. In der Regel sollte man aber das Datenmodell einer genaueren Prüfung unterziehen, wenn eine Tabelle derart viele Felder besitzt.
  • Eine Tabelle enthält eine Menge Felder, die aber nur selten benötigt werden. Diese gliedert man wie im obigen Beispiel in eine weitere Tabelle aus und gibt dort bei Bedarf Daten ein. Beispiel: Ein Ja/Nein-Feld, das Datensätze beispielsweise zum Drucken festlegt. Dieses Feld benötigt man nie, außer wenn man zu druckende Datensätze festlegen oder die ausgewählten Datensätze drucken möchte. Also erstellen Sie einfach eine eigene Tabelle und verknüpfen diese mit der Zieltabelle.
  • Nächster Abschnitt:

    2.5.8 Reflexive Beziehungen

    © 2006-2008 André Minhorst Alle Rechte vorbehalten.