Kapitel 9

Geschrieben von Torsten Lenneper. Veröffentlicht in Access 2000

Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv
 

Index und Beziehung

Die Indizierung

In einer Datenbank werden Sie häufig nach Informationen suchen. Damit Access aber nicht jedes Mal die gesamte Datenbank durchsuchen muss, werden Indizes verwendet. Genauso, wie Sie ein Buch nicht komplett durchblättern, um einen bestimmten Begriff zu finden. Sie sehen ja auch hinten im Index nach und schlagen dann die angegebene Seite auf.

Die Indexverwaltung

In der Indextabelle verwaltet Access von jedem Datensatz den Inhalt eines oder auch mehrerer Datenfelder sowie dessen Position in der Datenbank. Diese Tabelle werden im Hintergrund, ohne Ihr Zutun erstellt und, wenn Sie neue Daten eingeben, aktualisiert. Ein Index wird automatisch erzeugt, sobald Sie einen Primärschlüssel definieren.

Sie können einen Index für alle Datenfelder bis auf Datenfelder der Datentypen Hyperlink, OLE-Objekt und Memo erzeugen. Beachten Sie jedoch auch, dass ein Index die Arbeit mit Datenbanken nicht nur beschleunigen, sondern auch verlangsamen kann, da bei der Erfassung oder Änderung der Daten auch immer die Indextabelle aktualisiert werden muss und diese selbstverständlich auch Speicherplatz in Anspruch nimmt. Erzeugen Sie also nur für Felder nach denen oft sortiert bzw. gesucht wird einen Index.

Der Suchvorgang

Die Datensätze werden erfasst:

Datensatz-Nr.

Pers.-Nr.

Nachname

Vorname

1

1010

Meier

Peter

2

1020

Schmidt

Heiko

3

1030

Meier

Karin

4

1040

Schulz

Herbert

 

Nach ‚Nachname’ sortierter Index:

Nachname

Datensatz-Nr.

Meier

1

Meier

3

Schmidt

2

Schulz

4

 

Ein Bericht aller Mitarbeiter mit dem Namen ‚Meier’ soll erstellt werden. Access sucht im Index zeilenweise nach diesem Namen. Ist der Name gefunden, wird anhand der Datensatznummer in der Tabelle ‚Personal’ der gesamte Datensatz ermittelt und im Bericht ausgegeben. In diesem Fall also zuerst der Datensatz 1 und anschliessend der Datensatz 3.

Indizes

Es gibt verschiedene Arten von Indizes und diese lassen sich wiederum miteinander kombinieren, je nachdem, wie Sie es benötigen.

 

Nachname

Index mit Duplikaten

Es können mehrere identische Einträge vorkommen

Meier

Schmidt

Meier

Schulz

 

Nachname

Index ohne Duplikate

Ein Eintrag kann immer nur einmal vorkommen

Meier

Schmidt

Schulz

 

Nachname

Einfacher Index

Der Index ist auf ein Datenfeld beschränkt

Meier

Schmidt

Meier

Schulz

 

Nachname

Vorname

Kombinierter Index

Da der einfache Index hier keine genaue Unterscheidung bringt, benötigen Sie noch einen zweiten, um die identischen Datenfelder weiter zu unterscheiden

Meier

Peter

Schmidt

Heiko

Meier

Karin

Schulz

Herbert

Index erstellen

Um einen Index zu erstellen, müssen Sie die Tabelle in der Entwurfsansicht öffnen. Markieren Sie das Feld, für das Sie einen Index erstellen möchten. Wählen Sie jetzt in den Feldeigenschaften im Register ‚Allgemein’ den gewünschten Index aus. Wechseln Sie danach wieder in die Datenblattansicht.

 

Index löschen

Gehen Sie genauso vor, wie bei dem Erstellen eines Index. Wählen Sie diesmal jedoch ‚Nein’ aus der Liste und wechseln danach wieder in die Datenblattansicht. Wenn Sie einen Index entfernen, gehen keine Ihrer Daten verloren. Um sich alle vorhandenen Indizes anzeigen zu lassen, klicken Sie in der Entwurfsansicht auf das Symbol oder wählen den Befehl aus dem Menu ANSICHT►INDIZES.

Die Beziehungen

Nachdem Sie in Ihren Übungen verschiedene Tabellen erstellt haben, müssen Sie zwischen den Tabellen Beziehungen herstellen. Sie benötigen Beziehungen, um Abfragen mit Daten aus unterschiedlichen Tabellen zu erstellen, Datensätze verschiedener Tabellen in einem Formular zu bearbeiten oder Berichte zu erstellen, die auf verschiedenen Tabellen bzw. Abfragen basieren.

Beziehungsarten

Es gibt verschiedene Arten von Beziehungen in den zwei Objekte zueinander stehen:

ØEins-zu-eins-Beziehung

 

 

 

 

 

 

 

 

Jedem Datensatz aus der Tabelle ‚Personal’ ist genau ein Datensatz der Tabelle ‚Personal-Info’ zugewiesen.

ØEins-zu-n-Beziehung

Einem Datensatz aus der Tabelle
’Lieferanten’ sind mehrere Datensätze
aus der Tabelle ‚EDV-Liste’ zugewiesen.
Umgekehrt sind mehrere Datensätze nur einem
Datensatz zugewiesen.


Øn-zu-m-Beziehung

 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Da ein Lieferant mehrere Artikel liefert und in einer Kategorie ebenfalls mehrere Artikel vorhanden sind, benötigen Sie eine weitere Tabelle, um die Informationen übersichtlich darstellen zu können.

Access erkennt automatisch, ob in Ihrer Datenbank zwischen den verknüpften Tabellen eine 1-zu-1-Beziehung oder eine 1-zu-n-Beziehung vorliegt. Die n-zu-m-Beziehung kann Access nicht erkennen, da Sie hierzu noch eine dritte Tabelle benötigen.

Datenintegrität

Wenn Daten fehlerhaft eingegeben oder mehrfach gespeichert werden, so kann dies die Datensicherheit bzw. Datenintegrität beeinträchtigen. In der Entwurfsansicht sollten Sie bereits vor der Dateneingabe die korrekten Felddatentypen und der Eigenschaften auswählen. Hierdurch können Sie direkt bei der Datenerfassung fehlerhafte Eingaben unterbinden, wie das folgende Beispiel zeigt.

Alle Felder wurden als Datentyp ‚Text’ definiert. Da hier die Eingaben nicht überprüft werden, weil auch keine Eigenschaften definiert wurden, kommt es zu fehlerhaften Eingaben:

 

 

 

Die Daten wurden im falschen Format eingegeben bzw. liegen ausserhalb des gültigen Wertbereichs .

Leere Felder können entstehen, obwohl eine Eingabe hier notwendig wäre .

 

Feldeigenschaften ‚Allgemein’

Um diese Fehler zu vermeiden, wählen Sie für alle Felder die passenden Feldeigenschaften wie hier am Datenfeld ‚Eingang Bank’ gezeigt wird:

(1)Die Feldgrösse besteht aus vier Zeichen. Mehr Zeichen werden für dieses Feld nicht angenommen.

(2)Der Buchstabe ‚C’ steht für ein beliebig eingegebenes Zeichen. Das ‚>’ wandelt den ersten Buchstaben in einen Grossbuchstaben um, das ‚<’ wandelt die restlichen drei in Kleinbuchstaben um. Dabei ist es egal, wie die Eingabe erfolgt. Zahlen werden hier natürlich nicht verändert.

(3)Es muss entweder ‚Ja’ oder ‚Nein’ eingegeben werden, wobei es keine Rolle spielt, ob Sie Gross- oder Kleinbuchstaben verwenden (siehe Punkt (2)). Geben Sie eine andere Zeichenfolge oder Zahlen ein, erhalten Sie die folgende Fehlermeldung:

(4)Die gezeigte Fehlermeldung erstellen Sie mit der Eigenschaft ‚Gültigkeitsmeldung’

(5)Wenn Sie nichts in das Feld eingeben, so erscheint auf Ihrem Bildschirm eine Fehlermeldung von Access, in der Ihnen mitgeteilt wird, das eine Eingabe in diesem Feld von der Eigenschaft ‚Eingabe erforderlich’ benötigt wird.


Feldeigenschaften ‚Nachschlagen’

Eine weitere Möglichkeit, die Eingaben für ein Feld zu beschränken, sind die Nachschlagelisten. Sie haben die Möglichkeit, ein Listenfeld oder ein Kombinationsfeld einzufügen. Der Unterschied besteht darin, dass Sie bei einem Listenfeld nur Einträge aus dieser Liste verwenden können, was die Sicherheit erhöht. Bei einem Kombinationsfeld können Sie auch selber Daten eingeben, die nicht in der Liste stehen.

(1)Wählen Sie aus, ob Sie ein Listen- oder Kombinationsfeld einfügen möchten.

(2)Diesen Eintrag erzeugen Sie mit dem Abfrage-Generator. Er bestimmt die Datenherkunft der angezeigten Liste. Das zuerst ausgewählte Feld wird eingefügt, wenn Sie mehrere Felder ausgewählt haben.

(3)Falls Sie unter Punkt (2) mehr als ein Feld ausgewählt haben, geben Sie hier die entsprechende Spaltenanzahl an.

(4)Stellen Sie hier die Breite der ersten Spalte, falls Sie mehrere haben, ein.

Wenn Sie auf ein solches Feld gelangen, erscheint dort ein Listenpfeil, über den Sie Ihre Auswahl treffen können:

 

 

 

 

 

Datenintegrität auf Datensatzebene

Wenn Sie Datensätze löschen, ändern oder hinzufügen, können Probleme auftauchen. Durch die Normalisierung können Sie die Datenintegrität auf der Datensatzebene weitgehend sichern. Wenn Sie in der unten stehenden Tabelle alle Lieferanten mit deren Zusatzinformationen wie z.B. Adresse und Telefonnummern eingegeben hätten, würden die Daten ‚doppelt und dreifach’ in der Datenbank auftauchen. Ausserdem müssten Sie bei etwaigen Änderungen alle Datensätze durchsehen und die entsprechenden Felder aktualisieren. Hier können wieder Fehler auftreten.

 

Die Abbildung unten zeigt in der ‚EDV-Liste’ alle Artikel mit der jeweiligen ‚Lieferanten-Nr’. Die Daten zu den einzelnen Lieferanten finden Sie in der Tabelle ‚Lieferanten’. Wenn sich nun eine Adresse eines Lieferanten ändert, muss diese Änderung nur in einer Tabelle vorgenommen werden. Sollte der Lieferant für einen Artikel wechseln, müssen Sie für diesen Artikel nur die ‚Lieferanten-Nr’ abändern.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Datenintegrität auf Beziehungsebene

Wenn Tabellen nach den Grundsätzen der relationalen Datenbank erstellt wurden, bestehen automatisch relationale Beziehungen zwischen diesen Tabellen. Wenn Sie nun Daten in Formularen oder in der Datenblattansicht ändern oder löschen, kann es zu unerwünschten Ergebnissen kommen. Wenn Sie in der oben gezeigten Tabelle ‚Lieferanten’ einen dieser Lieferanten löschen, so steht die ‚Lieferanten-Nr’ weiterhin in der Tabelle ‚EDV-Liste’.

Referentielle Integrität

Mit der referentiellen Integrität können Sie das oben beschriebene Problem lösen. Datensätze können dann nicht mehr versehentlich oder absichtlich gelöscht oder geändert werden. Dies setzt jedoch voraus, das zwischen den Tabellen eine Beziehung besteht. Bei Veränderungen werden dann die Schlüsselfelder in den in Beziehung stehenden Tabellen quergeprüft und Sie erhalten eine entsprechende Fehlermeldung.

Wenn Sie eine Lösch- bzw. Aktualisierungsweitergabe erstellt haben, so werden die Daten in allen Tabellen gelöscht bzw. geändert. In dem obigen Beispiel würde dies bedeuten, dass wenn Sie einen Lieferanten in der Tabelle ‚Lieferanten-Nr’ löschen, auch die Datensätze in der Tabelle ‚EDV-Liste’ gelöscht werden, die als Inhalt diesen Lieferanten haben.


Das Beziehungsfenster

Schliessen Sie alle Tabellen, so dass nur noch das Datenbankfenster geöffnet ist. Ein Klick auf das Symbol öffnet das Beziehungsfenster. Sie finden den Befehl auch im Menu EXTRAS►BEZIEHUNGEN. Wenn im Fenster noch keine Tabellen angezeigt werden, klicken Sie auf das Symbol oder wählen Sie den Befehl aus dem Menu ANSICHT►TABELLE ANZEIGEN. Es öffnet sich das folgende Dialogfenster:

Markieren Sie im Register ‚Tabellen’ die Tabellen, die in eine Beziehung integriert werden sollen und klicken Sie auf . Wenn Sie mehr als eine Tabelle markieren möchten, halten Sie die Strg-Taste beim Anklicken gedrückt. Die ausgewählten Tabellen erscheinen im Beziehungsfenster. Wenn Sie fertig sind, klicken Sie auf die Schaltfläche .

Wenn Sie das Beziehungsfenster wieder schliessen möchten, klicken Sie auf das Schliessenfeld , wählen den Befehl aus dem Menu DATEI►SCHLIESSEN. Wenn das aktuelle Layout gespeichert werden soll, klicken Sie in der folgenden Dialogbox auf ‚Ja’

 

 

 

 

 

Es wird nur das Layout gespeichert. Wenn Sie Beziehungen erstellt haben und auf die Schaltfläche ‚Nein’ klicken, hat das keine Auswirkung auf die Beziehungen.

Beziehungen herstellen

Öffnen Sie das Beziehungsfenster und fügen die gewünschten Tabellen wie unten abgebildet hinzu. Schliessen Sie das Dialogfeld um im Beziehungsfenster die Grösse und das Layout der Tabellen anzupassen. Verschieben Sie die Tabellen, in dem Sie auf die Titelleiste der Tabelle klicken und diese mit gedrückter Maustaste an der gewünschten Stelle platzieren. Achten Sie darauf, das sich die Tabellen, zwischen denen Sie eine Beziehung erstellen möchten, dicht beieinander befinden. Vergrössern Sie ggf. die Tabellenfenster, damit Sie den kompletten Text lesen können.

Bevor Sie nun Beziehungen zwischen den Tabellen herstellen, sollten Sie sich Gedanken darüber machen, wie die Beziehungen aussehen sollen. Am besten skizzieren Sie dies auf einem Blatt Papier. Folgende Aspekte sollten Sie bei Ihrer Planung berücksichtigen:

¨Wenn die verknüpften Datenfelder indiziert sind, wird die Arbeit mit Tabellen, Abfragen, Formularen und Berichten beschleunigt

¨Die verknüpften Datenfelder müssen nicht den gleichen Feldnamen besitzen. Entscheidend sind der Felddatentyp, Feldgrösse und der Feldinhalt

¨Falls Sie Datenfelder mit dem Felddatentyp ‚AutoWert’ verknüpfen möchten, muss in der Detailtabelle der Felddatentyp ‚Zahl’ mit der Feldgrösse
‚Long Integer’ für das verknüpfte Datenfeld eingestellt werden

¨Wenn Sie eine Beziehung mit referentieller Integrität erstellen möchten, muss die Haupttabelle (Mastertabelle) einen Primärschlüssel oder einen eindeutigen Index (Index ohne Duplikate) besitzen. Zusätzlich muss die Beziehung auf dem Datenfeld des Primärschlüssels bzw. des eindeutigen Indexes basieren


Um nun eine Beziehung zwischen der Tabelle ‚Personal’ und ‚Personal-Info’ zu erstellen, klicken Sie auf das Feld ‚Personal-Nr’ der Tabelle ‚Personal’ und ziehen das Feld mit gedrückter Maustaste auf das Feld
‚Personal-Nr’ in der Tabelle ‚Personal-Info’.

 

 

 

 

 

 

 
 

Sobald Sie die Maustaste über dem Feld loslassen, öffnet sich ein Dialogfenster:

 

Markieren Sie das Kästchen für die referentielle Integrität. Damit Änderungen, die Sie in der Tabelle ‚Personal’ vornehmen, nicht in der Detailtabelle aktualisiert werden, markieren Sie das Kästchen für die Aktualisierungsweitergabe nicht. Da die Datensätze nicht versehentlich gelöscht werden können, lassen Sie das Kästchen für die Löschweitergabe ebenfalls leer. Klicken Sie auf die Schaltfläche . Ihr Beziehungsfenster sollte nun eine Beziehung anzeigen.

 

 

Schliessen und speichern Sie das Beziehungsfenster und öffnen Sie die beiden Tabellen, zwischen denen Sie soeben eine Beziehung erstellt haben.

Vor jedem Datensatz der beiden Tabellen erscheint nun ein kleines Kreuz. Wenn Sie auf das Kreuz klicken, öffnet sich der passende Datensatz aus der verknüpften Tabelle und Sie können sich weitere Details anzeigen lassen. Wenn Sie danach auf das ‚Minus’ klicken, werden die Angaben wieder ausgeblendet.

 

 

 

 

 

 

Erstellen Sie jetzt noch die folgende Beziehung mit referentieller Integrität. Die Lösch- und Aktualisierungsweitergabe wird nicht gewählt.

Wenn Sie jetzt die Tabelle ‚Personal’ öffnen und auf das kleine Kreuz vor einem Datensatz klicken, öffnet sich ein Fenster mit den Daten aus der Tabelle ‚Personal-Info’, so wie Sie es in der obigen Abbildung schon gesehen haben. Vor diesen Datensätzen sehen Sie jetzt ein weiteres Kreuz und ein Klick hierauf öffnet die Daten aus der Tabelle ‚Ausgang’. Sie haben so alle Informationen zu den Mitarbeitern sowie die Daten zu den bearbeiteten Ausgängen direkt im Blickfeld.


 

 

 

 

 

 

 

 

 

Auch in der Tabelle ‚Personal-Info’ erscheinen die Daten zu den bearbeiteten Ausgängen der einzelnen Mitarbeiter:

 

 

 

 

 

 

Wenn Sie jetzt versuchen, in der Tabelle ‚Personal’ einen Datensatz zu löschen, erhalten Sie die folgende Fehlermeldung:

In der Tabelle ‚Personal-Info’ würden Sie die Fehlermeldung nur beim Löschen des Datensatzes ‚Birgit Schmidt’ erhalten, da nur dieser Datensatz Daten aus der Tabelle ‚Ausgang’ enthält. Sobald Sie Daten in der Tabelle ‚Ausgang’ auch für die anderen Mitarbeiter erfassen, können Sie auch dies Datensätze nicht mehr löschen.

Beziehung löschen

Wenn Sie eine erstellte Beziehung wieder löschen möchten, öffnen Sie das Beziehungsfenster, markieren die Beziehung durch Klick auf die Linie, so dass diese fett dargestellt wird. Klicken Sie nun rechts auf die Linie, um das Kontextmenu aufzurufen und wählen den Befehl ‚Löschen’ oder Sie drücken nach dem Markieren die Entf-Taste. Den Befehl finden Sie auch im Menu BEARBEITEN►LÖSCHEN. Das folgende Fenster erscheint:

Beziehung bearbeiten

Wenn Sie eine erstellte Beziehung bearbeiten möchten, öffnen Sie das Beziehungsfenster, markieren die Beziehung durch Klick auf die Linie, so dass diese fett dargestellt wird. Klicken Sie nun rechts auf die Linie, um das Kontextmenu aufzurufen und wählen den Befehl ‚Beziehung bearbeiten’ oder Sie klicken doppelt auf die Linie. Diesen Befehl finden Sie im Menu BEZIEHUNGEN►BEZIEHUNG BEARBEITEN.

 

Das sollte als Grundwissen zum Aufbau der Datenbank mit Index und Beziehung erst einmal reichen. Wie Sie aber sicherlich bemerkt haben, ist dies ein sehr umfangreiches Thema, mit dem man sich über längere Zeit beschäftigen kann. Sie beschäftigen sich aber als nächstes mit dem Kapitel 10, den das ist das Ende von

 

Kapitel 9