Tabellen mit Indizes versehen

Werbung
Inhalt
Tabellen mit Indizes versehen ............................................................................................................ 2
Feld mit einem Index versehen .......................................................................................................... 4
Einen Index über mehrere Felder aufbauen ....................................................................................... 4
Beziehungen zwischen Tabellen ......................................................................................................... 6
Den Pfad von verknüpfter Tabelle aktualisieren ................................................................................ 8
1:N-Beziehung mit referentieller Integrität definieren..................................................................... 10
In einer Tabelle mit Unterdatenblatt arbeiten ................................................................................. 12
Eine Beziehung mit referentieller Integrität mit Aktualisierung- und Löschweitergabe definieren . 13
Regeln der referentiellen Integrität verletzen .................................................................................. 14
Aktualisierungsweitergabe überprüfen ............................................................................................ 15
Löschweitergabe überprüfen ........................................................................................................... 16
Zur Vervollständigung der Datenbank Stadtlupe die Tabelle Aufträge erstellen .............................. 17
Verknüpfungstabelle für M:N-Beziehung einrichten ........................................................................ 18
M:N-Beziehung erstellen .................................................................................................................. 19
Tabelle aus dem Datenbankschema entfernen ................................................................................ 21
Beziehung zu einer verknüpften Tabelle einrichten ......................................................................... 22
1
Tabellen mit Indizes versehen
Access ist ein sehr schnelles Datenbanksystem. Es lassen sich problemlos Datenmengen von
mehreren hunderttausend Datensätzen in einer Tabelle verwalten. Kommen Ihnen die
Suchvorgänge im Laufe der Zeit in einer Tabelle dennoch recht langsam vor, so können Sie
durch die Verwendung von Indizes in ausgewählten Feldern Abfragen sehr stark
beschleunigen.
Ein Index funktioniert dabei prinzipiell wie der Index in einem Buch. In einem zusätzlichen
Verzeichnis werden von Access die Index-Feldinhalte und die Verweise auf die zugehörigen
Datensätze verwaltet. Wenn Sie nun die Suche nach einem bestimmten Begriff auslösen,
benutzt Access nicht die Gesamttabelle, sondern sucht den Suchbegriff zuerst im Index. Dort
kann der gesuchte Name wesentlich schneller gefunden werden und über den Verweis auf
die reale Datensatznummer kann auch schneller innerhalb der Tabelle auf den gewünschten
Datensatz zugegriffen werden. Doch es gibt auch Nachteile.
Durch die Indizierung von Tabellenfeldern entstehen Indextabellen, die zwar nicht gezeigt
werden, aber von Access programmintern angelegt und gepflegt werden müssen. Dadurch
entsteht ein höherer Speicherbedarf auf der Festplatte. Wenn Sie für viele Felder einen
Index anlegen, kann dies zu einer deutlichen Erhöhung des benötigten Speicherbedarfs
führen. Auch kann beim Einfügen eines neuen Datensatzes eventuell eine Wartezeit
entstehen, weil damit auch Einträge in den Indextabellen verbunden sind. Erstellen Sie
deshalb Indizes ausschließlich für solche Datenfelder, nach deren Feldinhalten Sie später
wirklich suchen wollen.
Indizes werden von Access automatisch gepflegt: Sind sie erst einmal angelegt, so muss man
sich nicht mehr um sie kümmern. Beim Komprimieren einer Datenbank werden sämtliche
Indizes reorganisiert. Prinzipiell gibt es die folgenden Arten von Indizes:

Indizes mit Duplikaten
Diese erlauben den mehrfachen Eintrag desselben Wertes in ein Tabellenfeld.
Postleitzahlen dürften z. B. in einer größeren Tabelle nur selten als einmaliger Eintrag
vorkommen. Hier müssten Sie also einen Index verwenden, der Duplikate zulässt.

Indizes ohne Duplikate
Jeder Feldinhalt muss sich eindeutig von allen anderen unterscheiden. Ein Beispiel
dafür wäre die Sozialversicherungsnummer in einer Angestelltentabelle. Prinzipiell
handelt es sich also immer um solche Felder, die auch als Schlüssel für die Tabelle
verwendet werden könnten. Ist ein Eintrag bereits als Wert in der Tabelle vorhanden,
so meldet Access beim nächsten Versuch dieses Eintrags einen Fehler und weist den
Datensatz zurück. Eindeutige Indizes arbeiten schneller als nicht-eindeutige. Feldern,
die zum Primärschlüssel erklärt wurden, wird automatisch ein Index ohne Duplikate
zugewiesen.

Zusammengesetzte Indizes
Ein einfacher Index besteht aus genau einem Feld. Es ist jedoch auch möglich,
mehrere Felder für einen Index zusammenzufassen. Diese können auch einen
eindeutigen Index ergeben.
2
Sie sollten nur Felder, nach deren Inhalten gesucht oder sortiert wird, indizieren. So bleiben
in der Regel die Telefonnummer und die Faxnummer ohne Index. Sie sollten nur die wirklich
sinnvollen Felder indizieren. Dazu zählen



Felder, in denen sehr häufig gesucht und sortiert wird. Dies könnten die Felder
„Name“ und „Postleitzahl“ in einer Kundentabelle sein.
Felder, die in verknüpften Tabellen auf der n-Seite einer 1:N-Beziehung1 stehen, also
Fremdschlüsselfelder. Abfragen, in denen beide Tabellen vorkommen, werden durch
solch eine Beziehung enorm beschleunigt.
Felder, die eindeutig sein sollen. Das können mehrere Felder sein, die als Einheit
betrachtet werden. Sie können über einen Index Doubletten in einer Tabelle
vermeiden. Fassen Sie beispielsweise die Tabellenfelder Name, Vorname und
Geburtsdatum in einer Mitarbeitertabelle zu einem Index ohne Duplikate zusammen,
so werden Sie kaum noch versehentlich Namen mehrfach erfassen.
1
Ein klassisches Beispiel für eine 1:n-Beziehung ist die zwischen Projekten und Kunden. Dabei soll jedem
Projekt genau ein Kunde zugeordnet werden können, was im Umkehrschluss bedeutet, dass jedem Kunden
mehrere Projekte zugeordnet werden können.
3
Feld mit einem Index versehen
Durch die Verwendung von Indizes in ausgewählten Feldern können Sie Abfragen sehr stark
beschleunigen.
1. Die Tabelle Hefte der Datenbank 080Stadtlupe ist im Entwurfsmodus geöffnet.
2. Um das Feld Mitarbeiter-Code mit einem Index zu versehen, positionieren Sie den
Cursor auf dieses Feld.
3. Wählen Sie in den Feldeigenschaften aus dem Listenfeld Indiziert Ja (Duplikate
möglich).
Abb 1 Das Feld Mitarbeiter-Code erhält einen Index mit Duplikaten
4. Schließen Sie die Tabelle. Beim Speichern wird für das ausgewählte Feld der Index
erzeugt.
Einen Index über mehrere Felder aufbauen
Es ist auch möglich, mehrere Felder für einen Index zusammenzufassen.
1. Die Tabelle Mitarbeiter der Datenbank 081Stadtlupe ist im Entwurfsmodus geöffnet,
das Tabellentools-Register Entwurf aktiviert.
2. Blenden Sie über Indizes das Indexfenster ein.
3. Geben Sie unterhalb des Eintrags PrimaryKey den Namen für den neuen Index ein:
MitarbeiterInfo.
4. Wählen Sie nun nacheinander, beginnend in der dritten Zeile, jeweils aus dem
Listenfeld Feldname die beteiligten Felder aus: Nachname, Vorname, Straße und Plz.
4
Abb 2 Die Dialogbox Indizes der Tabelle Mitarbeiter
5. Setzen Sie den Cursor wieder auf den Indexnamen MitarbeiterInfo. Wählen Sie im
Bereich Indexeigenschaften aus dem Listenfeld Eindeutig Ja.
6. Schließen Sie das Index-Fenster. Beim Speichern bzw. Schließen der Tabelle wird der
Index erstellt.
7. Mit diesem Index vermeiden Sie die Eingabe doppelter Mitarbeiterinformationen, da
jeder Mitarbeiterdatensatz nun über die im Index vorkommenden Felder hinweg
eindeutig sein muss.
5
Beziehungen zwischen Tabellen
Beziehungen sind notwendig, um die Daten eines Datensatzes, die in relationalen
Datenbankkonzepten in verschiedenen Tabellen gespeichert sind, wieder
zusammenhängend darstellen zu können - sei es in Abfragen, Formularen oder Berichten.
Beziehungen zwischen Tabellen haben Sie bereits im Kapitel 2 Datenbanken planen kennen
gelernt. Dort ging es um die Konstruktion eines Datenbankschemas zu einer
Aufgabenstellung. Mit dem Einrichten der Tabellen ist so ein Datenbankschema noch nicht
korrekt in die eigentliche Datenbank umgesetzt. Es fehlen noch die Beziehungen zwischen
den Tabellen. Sobald Access erkennt, wie die Daten zusammenhängen, wird dies
automatisch in Formularen, Abfragen und Berichten berücksichtigt.
Bevor Sie eine Beziehung zwischen Tabellen herstellen, müssen Sie entscheiden, ob diese
Beziehung mit referentieller Integrität hergestellt werden soll. Die referentielle Integrität
legt fest, dass es Datensätze in der abhängigen Tabelle, der sog. Detailtabelle, ohne
passenden Datensatz in der Mastertabelle nicht geben kann. Insgesamt sind die folgenden
Typen zu unterscheiden:




Einfache Beziehungen
Beziehungen mit referentieller Integrität
Referentielle Integrität mit Aktualisierungsweitergabe an den Detaildatensatz
Referentielle Integrität mit Löschweitergabe an den Detaildatensatz.
In Beziehungen mit referentieller Integrität stellt Access sicher, dass zu jedem Datensatz in
der Detailtabelle ein passender Datensatz in der Mastertabelle vorhanden ist. Auf unsere
Beispiel-Tabellen Mitarbeiter und Hefte bezogen bedeutet dies:



Jeder in die Tabelle Hefte eingefügte Datensatz muss einen gültigen Mitarbeiter-Code
besitzen.
Es darf kein Mitarbeiter gelöscht werden, zu dem noch Hefte in der Datenbank
vorliegen.
Sobald zu einem Mitarbeiter Hefte angelegt wurden, kann sein Mitarbeiter-Code in
der Mastertabelle nicht geändert werden.
Da die eben genannten Einschränkungen zwar ausgesprochen sinnvoll sind, was die
Korrektheit der Daten in einer Datenbank betrifft, aber andererseits die Arbeit etwas
unkomfortabel gestalten, gibt es zwei sinnvolle Ergänzungen zur referentiellen Integrität.
In Beziehungen, für die eine referentielle Integrität mit Aktualisierungsweitergabe
eingerichtet wurde, reicht das Datenbanksystem Änderungen am Primärschlüssel der
Mastertabelle an die entsprechenden Verknüpfungsfelder der Detailtabelle weiter. Ändert
sich in unserem Beispiel also einmal der Mitarbeiter-Code in einem Datensatz der Tabelle
Mitarbeiter, so wird diese Änderung in jedem Datensatz der Tabelle Hefte nachvollzogen,
der eben diesen Mitarbeiter-Code besitzt. So bleibt der Zusammenhang der Daten erhalten.
Dies geschieht völlig automatisch und transparent für den Benutzer.
6
Auch für den Fall des Löschens auf der 1-Seite in verknüpften Tabellen gibt es die
Möglichkeit einer Weitergabe. Wird in Beziehungen, die mit einer Löschweitergabe
eingerichtet wurden, ein Datensatz aus der Mastertabelle entfernt, so löscht Access die dazu
gehörenden Detaildatensätze ebenfalls. Das Löschen eines Mitarbeiterdatensatzes würde in
unserem Beispiel also das Löschen der verknüpften Heftdaten nach sich ziehen.
Vorsicht: Eine Löschweitergabe kann fatale Folgen haben. Beispielsweise dann, wenn beim
Löschen eines Kundendatensatzes unbemerkt auch noch offene Rechnungen gelöscht
werden.
Einer der Vorteile bei der Arbeit mit Beziehungen zwischen Tabellen ist, dass Access die
Detaildatensätze einer Tabelle in einem so genannten Unterdatenblatt darstellt. So kann
man bequem die zu einem Datensatz gehörenden Detaildatensätze betrachten und sowohl
in der Haupt- wie in der Untertabelle arbeiten, neue Datensätze anfügen u.s w.
Um die Datenbank Stadtlupe zu vervollständigen, werden noch Tabellen benötigt, die eine
Verwaltung von Anzeigenaufträgen erlauben. Bei der Beziehung zwischen der neuen Tabelle
Aufträge und der bereits vorhandenen Tabelle Hefte muss Folgendes bedacht werden:


Zu einem einzelnen Heft können natürlich mehrere Anzeigenaufträge vorliegen. Man
hat es also mit einer 1:N-Beziehung zwischen Heften und Aufträgen zu tun.
In einem einzelnen Auftrag können Anzeigenschaltungen zu mehreren Heften
vereinbart werden. Folglich liegt auch eine 1:N-Beziehung zwischen Aufträgen und
Heften vor.
Wir haben also eine M:N-Beziehung zwischen Heften und Aufträgen einzurichten. Der neue
Teil des Datenbankschemas wird nun schrittweise aufgebaut. Zunächst wird die Tabelle
Aufträge erstellt. Da eine M:N-Beziehung in Access nicht direkt hergestellt werden kann,
muss noch eine Verknüpfungstabelle eingerichtet werden. Mit Hilfe der Tabelle
Anzeigenschaltungen wird dann die M:N-Beziehung eingerichtet.
7
Den Pfad von verknüpfter Tabelle aktualisieren
Haben Sie die Datenbanken Stadtlupe und Debitoren kopiert, wird wahrscheinlich der Pfad
der verknüpften Tabelle nicht mehr stimmen. Mit dem Tabellenverknüpfungs-Manager
können Sie auf einfache Weise den Pfad aktualisieren.
1. Die Datenbank 089Stadtlupe ist geöffnet. Nach einem Doppelklick auf die verknüpfte
Tabelle Kunden wird diese nicht geöffnet. Sie erhalten eine Fehlermeldung, dass die
Datenbank Debitoren nicht gefunden werden konnte.
Abb 2a Fehlermeldung
2. Sie müssen den Pfad aktualisieren. Bestätigen Sie die Fehlermeldung mit Ok und
klicken Sie mit der rechten Maustaste auf die Tabelle Kunden. Wählen Sie dann aus
dem Kontextmenü den Tabellenverknüpfungs-Manager.
Abb 2b Kontextmenü der verknüpften Tabelle
8
3. Aktivieren Sie das Kontrollkästchen der verknüpften, zu aktualisierenden Tabelle und
klicken Sie auf OK.
4. Berichtigen Sie den Pfad zur Datenbank Debitoren.accdb und klicken Sie dann auf
Öffnen.
5. Sie erhalten dann die Meldung, dass die ausgewählte verknüpfte Tabelle erfolgreich
aktualisiert wurde.
Abb 2c Tabellenverknüpfungs-Manager mit der Erfolgsmeldung
6. Nun können Sie problemlos die Tabelle Kunden wieder öffnen.
HINWEIS:
Diese Schritte müssen in jeder Datenbank, die die Tabelle Kunden enthält, wiederholt
werden!
9
1:N-Beziehung mit referentieller Integrität definieren
1. Die Datenbank 090Stadtlupe ist geöffnet. Die Tabellen Mitarbeiter und Hefte sollen
verknüpft werden. Klicken Sie im Register Datenbanktools, Gruppe Beziehungen auf
Beziehungen.
2. Wählen Sie die zu verknüpfenden Tabellen Mitarbeiter und Hefte jeweils mit einem
Doppelklick aus und schließen Sie dann die Dialogbox Tabelle anzeigen.
Abb 3 Mit einem Doppelklick werden die Tabellen in das Register Beziehungen
eingefügt
3. Um eine Beziehung zwischen beiden Tabellen herzustellen, ziehen Sie das Feld
Mitarbeiter-Code aus der Mastertabelle Mitarbeiter auf den Mitarbeiter-Code der
Detailtabelle Hefte. Die Dialogbox Beziehungen wird geöffnet.
4. Bevor Sie eine Beziehung zwischen Tabellen herstellen, müssen Sie entscheiden, ob
diese Beziehung mit referentieller Integrität hergestellt werden soll. Die referentielle
Integrität legt fest, dass es Datensätze in der abhängigen Tabelle, der sog.
Detailtabelle, ohne passenden Datensatz in der Mastertabelle nicht geben kann. Das
heißt:
a) Zu jedem Heft muss es einen Mitarbeiter geben.
b) Es darf kein Mitarbeiter gelöscht werden, zu dem noch Hefte in der Datenbank
vorliegen.
c) Sind zu einem Mitarbeiter Hefte angelegt, so kann dessen Code in der
Mastertabelle nicht mehr geändert werden.
5. Aktivieren Sie das Kontrollkästchen Mit referentieller Integrität.
10
Abb 4 Dialogbox Beziehungen
6. Beachten Sie, dass Access den Beziehungstyp schon als 1:n vorgegeben hat. Mit
Erstellen richten Sie die Beziehung permanent in der Datenbank ein. Die
entsprechende Verbindungslinie wird von Access dargestellt.
Abb 5 Die 1:N-Beziehung zwischen den Tabellen Mitarbeiter und Hefte
7. Haben Sie sich geirrt, können Sie die Beziehung wieder löschen. Klicken Sie dazu auf
die Verbindungslinie zwischen den Tabellen und drücken Sie (Entf).
8. Die anschließende Sicherheitsabfrage beantworten Sie mit Nein.
11
In einer Tabelle mit Unterdatenblatt arbeiten
1. Die Tabelle Mitarbeiter der Datenbank 091-092Stadtlupe ist geöffnet.
2. Beachten Sie, dass am linken Rand in der Datenblattansicht eine zusätzliche Spalte
erscheint, nachdem Sie in der Datenbank eine Beziehung zwischen der Tabelle
Mitarbeiter und der Tabelle Hefte eingerichtet haben. In jeder Datenzeile erscheint
zunächst ein „+“-Symbol.
3. Klicken Sie auf das „+“-Zeichen neben dem Mitarbeiter-Code KT. Ein Unterdatenblatt
öffnet sich. Das „+“-Zeichen ändert sich in ein „-“-Zeichen
4. In diesem Unterdatenblatt sehen Sie nun die Hefte, die dem Mitarbeiter mit dem
Code KT zugeordnet sind. Sie können jetzt sowohl in der Haupt-, als auch in der
Untertabelle ganz normal arbeiten.
5. Sie können sich auch mehrere Unterdatenblätter gleichzeitig anzeigen lassen. Öffnen
Sie zusätzlich das Unterdatenblatt für den Mitarbeiter mit dem Code KMA.
Abb 6 Eine Tabelle mit Unterdatenblätter
6. Die Unterdatenblätter schließen Sie mit einem Klick auf das „-“-Symbol.
7. Schließen Sie wieder die Tabelle Mitarbeiter.
12
Eine Beziehung mit referentieller Integrität mit Aktualisierung- und Löschweitergabe
definieren
1. Die Datenbank 091-092Stadtlupe ist noch geöffnet. Öffnen Sie im Register
Datenbanktools das Fenster Beziehungen.
2. Doppelklicken Sie auf die Verbindungslinie zwischen den beiden Tabellen oder
klicken Sie auf Beziehungen bearbeiten.
Abb 7 Beziehungen bearbeiten
Die referentielle Integrität verhindert unter anderem das Ändern des Mitarbeiter-Codes
in der Mastertabelle, sobald zu einem Mitarbeiter Hefte angelegt wurden. Außerdem
darf kein Mitarbeiter gelöscht werden, zu dem noch Hefte in der Datenbank vorliegen.
Da diese Einschränkungen die Arbeit unkomfortabel gestalten, gibt es zwei sinnvolle
Ergänzungen:
3. Aktivieren Sie das Kontrollkästchen Aktualisierungsweitergabe an verwandte Felder.
Wenn Sie einen Mitarbeiter-Code in der Tabelle Mitarbeiter ändern, wird diese
Änderung jetzt in jedem Datensatz der Tabelle Hefte nachvollzogen.
4. Aktivieren Sie das Kontrollkästchen Löschweitergabe an verwandte Datensätze. Das
Löschen eines Mitarbeiterdatensatzes zieht jetzt das Löschen aller verknüpften
Heftdaten nach sich.
Achtung: Die Löschweitergabe kann fatale Folgen haben, wenn beispielsweise beim
Löschen eines Kundendatensatzes unbemerkt auch die offenen Rechnungen gelöscht
werden. Setzen Sie diese Möglichkeit also nur wohlüberlegt ein!
5. Speichern Sie mit OK und schließen Sie das Beziehungsfenster.
13
Regeln der referentiellen Integrität verletzen
Sie möchten jetzt die Wirkungen der im vorigen Beispiel geänderten Einstellungen
überprüfen.
1. Die Datenbank 093-094Stadtlupe ist geöffnet.
2. Öffnen Sie die Tabelle Hefte und geben Sie einen Test-Datensatz mit der Heft-Nr xy
01 11, der Bezeichnung Konzerte in der Stadt und dem neuen Mitarbeiter-Code ABC
ein.
3. Wenn Sie diesen Datensatz verlassen, wird Access sich weigern, diesen Eintrag für
einen nicht existenten Mitarbeiter zu akzeptieren und quittiert Ihr Vorhaben mit
einer Fehlermeldung.
Abb 8 Regeln der referentiellen Integrität wurden verletzt
4. Bestätigen Sie diese Fehlermeldung. Drücken Sie dann (Esc), um die Eingabe zu
stornieren.
14
Aktualisierungsweitergabe überprüfen
1. Öffnen Sie in der Datenbank 095Stadtlupe die Tabelle Mitarbeiter und verändern Sie
den Mitarbeiter-Code des Mitarbeiters Otto Kelber von OK in OKE.
2. Schließen Sie die Tabelle und öffnen Sie die Tabelle Hefte, um zu überprüfen, ob die
Änderungen des Primärschlüssels in der Mastertabelle an die Detailtabelle Hefte
weitergegeben wurden.
3. Suchen Sie im Fremdschlüsselfeld Mitarbeiter-Code nach OKE. Sie finden die
Datensätze mit den Heft-Nummern TK 01-11 und TK 02-11. Access hat also die
Aktualisierungen weitergereicht.
Abb 9 Der Mitarbeiter-Code in der Tabelle Hefte wurde aktualisiert
15
Löschweitergabe überprüfen
1. Öffnen Sie in der Datenbank 095Stadtlupe die Tabelle Mitarbeiter und löschen Sie
den Datensatz Otto Kelber, indem Sie diesen Datensatz mit einem Klick im Zeilenkopf
markieren und dann (Entf) drücken.
2. In einer Sicherheitsmeldung werden Sie darauf aufmerksam gemacht, dass Sie nicht
nur einen Datensatz in der Mitarbeitertabelle löschen werden, sondern zusätzlich
weitere Datensätze aus Detailtabellen. Dies sind alle Hefte zum ausgewählten
Mitarbeiter. Bestätigen Sie das Löschen mit Ja.
Abb 10 Sicherheitsmeldung beim Löschen von Datensätzen in der Mastertabelle
3. Schließen Sie die Tabelle und öffnen Sie die Tabelle Hefte. Gehen Sie ans Ende der
Tabelle. Die Datensätze mit den Heft-Nummern TK 01-11 und TK 02-11, also die
Datensätze, die dem Mitarbeiter mit dem Code OKE gehörten, sind nicht mehr
vorhanden. Es sind nicht mehr 79, sondern nur noch 77 Datensätze in der Tabelle.
Abb 11 Löschweitergabe: Wird ein Datensatz aus der Mastertabelle gelöscht, so
werden in der Detailtabelle alle Datensätze, die mit diesem Datensatz verbunden
waren, ebenfalls gelöscht.
4. Access hat die Löschung aus der Haupttabelle an die Detailtabelle weitergereicht.
16
Zur Vervollständigung der Datenbank Stadtlupe die Tabelle Aufträge erstellen
Um die Datenbank Stadtlupe zu vervollständigen, werden noch Tabellen benötigt, die eine
Verwaltung von Anzeigenaufträgen erlauben.
1. Erstellen Sie in der Datenbank 096Stadtlupe eine Tabelle in der Entwurfsansicht und
speichern Sie diese unter Aufträge.
2. Erstellen Sie die Felder Auftrags-Nr, Kunden-Nr, Bearbeiter, Anzeigenformat, Erteilt
am, Bezahlt am und Rabatt.
3. Als Felddatentyp der Auftrags-Nr wählen Sie AutoWert, als Felddatentyp der KundenNr Zahl, des Bearbeiters und des Anzeigenformats Text und der Felder Erteilt am und
Bezahlt am Datum/Uhrzeit. Als Felddatentyp des Rabattes wählen Sie Zahl.
4. Die Feldgröße der Kunden-Nr ist Long Integer, die des Bearbeiters und des
Anzeigenformates 50, die des Rabatts Single. Formatieren Sie den Rabatt als
Prozentzahl.
5. Das Feld Auftrags-Nr ist bereits als Primärschlüssel definiert. Falls nicht, definieren
Sie es über das Tabellentools-Register Entwurf mit dem Tool Primärschlüssel.
Abb 12 Feldnamen und Felddatentypen der Tabelle Aufträge
6. Speichern Sie die Tabelle und schließen Sie den Entwurf der Tabelle.
17
Verknüpfungstabelle für M:N-Beziehung einrichten
1. Die Datenbank 097Stadtlupe ist geöffnet. Die Tabellen Hefte und Aufträge sollen
verknüpft werden.
Da zu einem einzelnen Heft mehrere Aufträge, aber auch in einem einzelnen Auftrag
mehrere Hefte vorkommen können, liegt eine M:N-Beziehung zwischen diesen Tabellen
vor. Für eine M:N-Beziehung muss eine Verknüpfungstabelle eingerichtet werden.
2. Erstellen Sie dazu eine neue Tabelle in der Entwurfsansicht und speichern Sie diese
unter Anzeigenschaltungen.
3. In die Verknüpfungstabelle gehören zumindest die beiden Primärschlüsselfelder aus
den zu verknüpfenden Tabellen Hefte und Aufträge. Geben Sie also die Felder HeftNr und Auftrags-Nr ein. Definieren Sie das Feld Heft-Nr als Textfeld der Feldgröße 6
und das Feld Auftrags-Nr als Zahl mit der Feldgröße Long Integer.
4. Das erste Feld wurde standardmäßig als Primärschlüsselfeld definiert. Entfernen Sie
den Primärschlüssel über das Tabellentools-Register Entwurf mit dem Tool
Primärschlüssel.
5. Oft ist es sinnvoll, noch weitere Informationen aufzunehmen. Nehmen Sie in die neue
Tabelle noch drei neue Felder auf: Preis, Aufschlag und MwSt-Satz.
6. Legen Sie die Felder Preis und Aufschlag als Währungsfelder fest, das Feld MwSt-Satz
als Zahl mit der Feldgröße Single und dem Format Prozentzahl.
7. Die Vergabe des Primärschlüssels muss sorgfältig überdacht werden. Weder das Feld
Heft-Nr, noch das Feld Auftrags-Nr werden in der neuen Tabelle eindeutige
Informationen enthalten.
8. Wir könnten auf ein Primärschlüsselfeld verzichten. Dies ist im Sonderfall einer
Verknüpfungstabelle in einer M:N-Beziehung durchaus legitim. Wir könnten ein
weiteres Feld vom Typ AutoWert in die Tabelle aufnehmen und als Primärschlüssel
definieren oder einen Schlüssel aus mehreren Feldern erzeugen.
9. Wir verwenden die Variante eines zusammengesetzten Primärschlüssels: Die Felder
Heft-Nr und Auftrags-Nr werden als zusammengesetzter Schlüssel eingesetzt.
10. Markieren Sie dazu die Zeilen Heft-Nr und Auftrags-Nr und legen Sie über das Symbol
Primärschlüssel den zusammengesetzten Schlüssel fest.
Abb 13 Der zusammengesetzte Primärschlüssel
11. Speichern Sie die Tabelle.
18
Hinweis: Die Felddatentypen und Feldgrößen der beiden Fremdschlüsselfelder wurden
jeweils entsprechend den Felddefinitionen in den Mastertabellen gewählt. Dem
Felddatentyp Long Integer entspricht die Definition des Schlüsselfeldes Auftrags-Nr als
AutoWert.
M:N-Beziehung erstellen
1. Die Datenbank 98Stadtlupe ist noch geöffnet. Klicken Sie im Register Datenbanktools
auf Beziehungen, um das Datenbankschema anzuzeigen.
2. Fügen Sie über das Symbol Tabelle anzeigen die zu ergänzenden Tabellen
Anzeigenschaltungen und Aufträge Ihrem Schema hinzu.
3. Sie können auch mit der rechten Maustaste auf die freie Fläche im Fenster
Beziehungen klicken und aus dem Kontextmenü Tabelle anzeigen wählen.
4. Schließen Sie die Dialogbox Tabelle anzeigen anschließend.
5. Verschieben Sie zunächst die Tabelle Hefte, so dass sie neben der Tabelle
Anzeigenschaltungen platziert ist.
6. Stellen Sie die Beziehung zwischen den Tabellen Hefte und den Anzeigenschaltungen
her, indem Sie aus der Tabelle Hefte das Feld Heft-Nr auf das entsprechende Feld
Heft-Nr in der Tabelle Anzeigenschaltungen ziehen.
7. Aktivieren Sie in der Dialogbox Beziehungen bearbeiten das Kontrollkästchen Mit
referentieller Integrität sowie das Kontrollkästchen Aktualisierungsweitergabe an
verwandte Felder. Mit Erstellen wird die Beziehung endgültig hergestellt.
Verschieben Sie die Tabellen nach Bedarf.
Abb 14 Beziehungen bearbeiten
8. Stellen Sie die Beziehung zwischen den Tabellen Aufträge und den
Anzeigenschaltungen her, indem Sie aus der Tabelle Aufträge das Feld Auftrags-Nr
auf das entsprechende Feld Auftrags-Nr in der Tabelle Anzeigenschaltungen ziehen.
19
9. Wählen Sie die Optionen Mit referentieller Integrität und Löschweitergabe an
verwandte Datensätze aus. Klicken Sie auf Erstellen. Damit haben Sie die Beziehung
zwischen Heften und Aufträgen über eine Zwischentabelle komplett definiert.
10. Speichern Sie die erstellten Beziehungen.
Hinweis: Beachten Sie, dass in die Tabelle Anzeigenschaltungen zwei 1:NBeziehungslinien münden. Diese Tabelle ist also für zwei Mastertabellen die
Detailtabelle. Dies ist typisch für M:N Beziehungen.
Abb 15 Die M:N-Beziehung zwischen den Tabellen Hefte und Aufträge wurde über
die Verknüpfungstabelle Anzeigenschaltungen hergestellt
20
Tabelle aus dem Datenbankschema entfernen
Soll eine Tabelle aus einem Datenbankschema entfernt werden, so müssen Sie zuerst
sämtliche Verknüpfungen dieser Tabelle zu den anderen Tabellen lösen und dann die Tabelle
selbst löschen.
1. Die Datenbank 099-100Stadtlupe ist geöffnet. Wechseln Sie in das Register
Datenbanktools und klicken Sie auf Beziehungen, um das Datenbankschema
anzuzeigen.
Die Tabelle Aufträge soll aus dem Datenbankschema entfernt werden.
2. Klicken Sie auf die Verbindungslinie zwischen den Tabellen Aufträge und
Anzeigenschaltungen. Eine markierte Linie wird kräftiger dargestellt.
Abb 16 Eine markierte Linie wird kräftiger dargestellt.
3. Drücken Sie auf (Entf) und bestätigen Sie die Sicherheitsabfrage mit Ja.
4. Klicken Sie anschließend auf die Tabelle Aufträge und drücken Sie wieder auf (Entf).
Jetzt ist diese Tabelle vollständig aus dem Schema entfernt.
Hinweis: Die Tabelle ist weiterhin in der Datenbank. Sie wurde nur aus dem Schema
entfernt.
5. Fügen Sie für die weiteren Beispiele über Tabelle anzeigen die Tabelle Aufträge
wieder ein.
6. Stellen Sie die Beziehung zwischen den Anzeigenschaltungen und den Aufträgen
wieder her, indem Sie aus der Tabelle Aufträge das Feld Auftrags-Nr auf das Feld
Auftrags-Nr der Tabelle Anzeigenschaltungen ziehen. Wählen Sie Mit referentieller
Integrität und Löschweitergabe an verwandte Datensätze aus.
21
Beziehung zu einer verknüpften Tabelle einrichten
1.
2.
3.
4.
5.
Die Datenbank 099-100Stadtlupe ist noch geöffnet.
Klicken Sie im Register Datenbanktools auf Beziehungen.
Fügen Sie über Tabelle anzeigen die Tabelle Kunden hinzu.
Schließen Sie die Dialogbox Tabelle anzeigen.
Stellen Sie eine Beziehung zwischen den Tabellen Kunden und Aufträge her, indem
Sie aus der Tabelle Kunden das Primärschlüsselfeld Kunden-Nr auf das
Fremdschlüsselfeld Kunden-Nr in der Tabelle Aufträge ziehen.
6. Zwischen einer verknüpften Tabelle und den vorhandenen Tabellen kann nur eine
einfache Beziehung hergestellt werden. Es ist also nicht möglich, die referentielle
Integrität einzusetzen. Klicken Sie auf Erstellen.
Abb 17 Bei Beziehungen zu einer verknüpften Tabelle kann referentielle Integrität
nicht eingesetzt werden
Abb 18 Die Beziehungen in der Datenbak Stadtlupe
7. Verschieben Sie die Tabellen wunschgemäß.
22
Herunterladen