Hallo Maik; Hallo unendliche Weiten!
Hier für dich als Neuling ein kleiner Einstiegskurs. Für die unendlichen Weiten eine Wiederholung von Normalfällen!
(Die unendlichen Weiten [des Raumschiffs Entensch…] sind hoffentlich auf Empfang geschaltet.)
1:n-Beziehung
Eine 1:n-Beziehung ist der häufigste Beziehungstyp. In einer 1:n-Beziehung können einem Datensatz in Tabelle A mehrere passende Datensätze in Tabelle B zugeordnet sein, aber einem Datensatz in Tabelle B ist nie mehr als ein Datensatz in Tabelle A zugeordnet.(die beste Art von Beziehungen)
m:n-Beziehung
In einer m:n-Beziehung können jedem Datensatz in Tabelle A mehrere passende Datensätze in Tabelle B zugeordnet sein und umgekehrt. Dies ist nur möglich, indem eine dritte Tabelle definiert wird (die als Verbindungstabelle bezeichnet wird), deren Primärschlüssel aus zwei Feldern besteht, den Fremdschlüsseln aus den Tabellen A und B. Eine m:n-Beziehung besteht eigentlich aus zwei 1:n-Beziehungen mit einer dritten Tabelle. (nicht unbedingt ratsam da eine unnötige Tabelle)
1:1-Beziehung
In einer 1:1-Beziehung ist jedem Datensatz in Tabelle A nur ein passender Datensatz in Tabelle B zugeordnet und umgekehrt. Diese Art von Beziehung ist nicht sehr häufig, weil die meisten Informationen, die auf diese Weise in Beziehung stehen, sich in einer Tabelle befinden. Sie können eine 1:1-Beziehung z.B. verwenden, um eine Tabelle mit vielen Feldern zu teilen, um einen Teil der Tabelle aus Gründen der Zugriffsrechte abzutrennen, oder um Informationen zu speichern, die sich nur auf eine Untergruppe der Haupttabelle beziehen. Sie können z.B. eine Tabelle erstellen, die nur die Angestellten enthält, die an einem für einen guten Zweck ausgerichteten Fußballspiel teilnehmen.(In dieser Beziehug haben beide Primärschlüssel den Wert Auto Wert)
Welche Art von Beziehung Microsoft Access erstellt, hängt davon ab, wie die in Beziehung stehenden Felder definiert sind:
Eine 1:n-Beziehung wird hergestellt, wenn nur eines der in Beziehung stehenden Felder ein Primärschlüssel ist oder einen eindeutigen Index besitzt. (die Betonung liegt hier auf IN BEZIEHUNG STEHENDER FELDER). Deshalb muß die Dritte Tabelle nich unbedingt einen Autowert als Primärschlüssel besitzen, sondern es genügt der Felddatentyp Zahl. Als Feldgröße wird Long Integer genommen, und bei der Option INDIZIERT wählt man ja ohne Duplikate (sonst kann man es niccht als Primärschlüssel verwenden)
Eine 1:1-Beziehung wird hergestellt, wenn beide in Beziehung stehenden Felder Primärschlüssel sind oder über eindeutige Indizes verfügen.
Eine m:n-Beziehung besteht eigentlich aus zwei 1:n-Beziehungen mit einer dritten Tabelle, deren Primärschlüssel aus zwei Feldern besteht, und zwar den Fremdschlüsseln aus den beiden anderen Tabellen.
Wenn man ein Feld, das kein Primärschlüssel ist und keinen eindeutigen Index besitzt, auf ein Feld zieht, das ebenfalls kein Primärschlüssel ist und keinen eindeutigen Index besitzt, wird eine unbestimmte Beziehung erstellt. In Abfragen, die Tabellen mit einer unbestimmten Beziehung besitzen, zeigt Microsoft Access eine Standardverknüpfungslinie zwischen den Tabellen an, aber die referentielle Integrität wird nicht durchgesetzt, und es gibt keine Garantie, daß die Datensätze in den Tabellen eindeutig sind.
Was ist referentielle Integrität?
Referentielle Integrität ist ein Regelsystem, mit dessen Hilfe Microsoft Access sicherstellt, daß Beziehungen zwischen Datensätzen in Detailtabellen gültig sind und daß verknüpfte Daten nicht versehentlich gelöscht oder geändert werden. Sie können referentielle Integrität festlegen, wenn alle folgenden Bedingungen erfüllt sind:
Das übereinstimmende Feld aus der Mastertabelle ist ein Primärschlüssel oder hat einen eindeutigen Index. (Auto Wert)
Die Detailfelder haben denselben Datentyp. Allerdings gibt es zwei Ausnahmen: Ein Feld des Datentyps AutoWert kann mit einem Feld des Datenyps Zahl verknüpft werden, dessen Eigenschaft Feldgröße auf Long Integer eingestellt ist. Ein Feld des Datentyps AutoWert kann mit einem Feld des Typs Zahl verknüpft werden, wenn die Eigenschaft Feldgröße beider Felder auf Replikations-ID eingestellt ist. (Aber: Auto Wert verknüpfen mit Autowert gibt immer eine 1:1 Beziehung - das muß man unbedingt vermeiden)
Beide Tabellen gehören zu derselben Microsoft Access-Datenbank. Handelt es sich dabei um verknüpfte Tabellen, müssen diese über das Microsoft Access-Format verfügen. Um referentielle Integrität festzulegen, öffnen Sie die Datenbank, in der die Tabellen gespeichert sind. Referentielle Integrität kann nämlich nicht für verknüpfte Tabellen aus Datenbanken anderer Formate durchgesetzt werden.
Beim Durchsetzen referentieller Integrität beachten Sie folgende Regeln:
Sie können in das Fremdschlüsselfeld der Detailtabelle keinen Wert eingeben, der nicht im Primärschlüsselfeld der Mastertabelle enthalten ist. Sie können jedoch in das Fremdschlüsselfeld einen Nullwert eingeben und damit angeben, daß die Datensätze nicht miteinander verknüpft sind. So ist es z.B. nicht möglich, eine Bestellung zu haben, die einem nichtvorhandenen Kunden zugeordnet ist. Sie können jedoch eine Bestellung haben, die niemandem zugeordnet ist, indem Sie in das Feld Kunden-Nr einen Nullwert eingeben.
Sie können keinen Datensatz aus der Mastertabelle löschen, wenn übereinstimmende Datensätze in einer Detailtabelle enthalten sind. Beispielsweise können Sie einen Datensatz eines Mitarbeiters aus der Tabelle Personal nicht löschen, wenn diesem Mitarbeiter in der Tabelle Bestellungen Bestellungen zugeordnet sind.
Sie können keinen Primärschlüsselwert in der Mastertabelle ändern, wenn es zu diesem Datensatz Detaildatensätze gibt. Beispielsweise können Sie die Personalnummer eines Mitarbeiters in der Tabelle Personal nicht ändern, wenn diesem Mitarbeiter in der Tabelle Bestellungen Bestellungen zugeordnet sind.
Falls Microsoft Access diese Regeln für eine Beziehung durchsetzen soll, aktivieren Sie das Kontrollkästchen Mit referentieller Integrität, wenn Sie die Beziehung erstellen. Wird die referentielle Integrität für Detailtabellen durchgesetzt und dabei gegen eine dieser Regeln verstoßen, zeigt Microsoft Access eine Meldung an und läßt die Änderung nicht zu. (Hierzu ist unbedingt! eine 1:n Beziehung werforderlich)
Sie können die Einschränkungen beim Löschen bzw. Ändern von Detaildatensätzen außer Kraft setzen und dennoch referentielle Integrität wahren, indem Sie die Kontrollkästchen Aktualisierungsweitergabe an Detailfeld und Löschweitergabe an Detaildatensatz aktivieren. Ist das Kontrollkästchen Aktualisierungsweitergabe an Detailfeld aktiviert, wird beim Ändern eines Primärschlüsselwerts in der Mastertabelle der damit übereinstimmende Wert in allen Detaildatensätzen automatisch aktualisiert. Ist das Kontrollkästchen Löschweitergabe an Detaildatensatz aktiviert, werden beim Löschen eines Datensatzes in der Mastertabelle alle Detaildatensätze in der Detailtabelle ebenfalls automatisch gelöscht.
Warum werden Aktualisierungsweitergaben oder Löschweitergaben verwendet?
Bei Beziehungen, in denen referentielle Integrität durchgesetzt wird, können Sie angeben, ob Microsoft Access für Detaildatensätze automatisch Aktualisierungsweitergaben und Löschweitergaben durchführen soll. Wenn Sie diese Optionen setzen, sind Lösch- und Aktualisierungsoperationen zulässig, die normalerweise durch die Regeln referentieller Integrität verhindert werden. Wenn Sie in einer Mastertabelle Datensätze löschen oder Primärschlüsselwerte ändern, führt Microsoft Access die erforderlichen Änderungen in den verknüpften Tabellen (Detailtabellen) aus, um die referentielle Integrität zu wahren.
Wenn Sie beim Definieren einer Beziehung das Kontrollkästchen Aktualisierungsweitergabe an Detailfeld aktiviert haben, aktualisiert Microsoft Access bei jeder Änderung des Primärschlüssels eines Datensatzes der Mastertabelle automatisch den Primärschlüssel in allen Detaildatensätzen auf den neuen Wert. Ändern Sie z.B. in der Tabelle Kunden eine Kundennummer, wird das Feld Kunden-Code in der Tabelle Bestellungen automatisch für alle Bestellungen dieses Kunden aktualisiert, damit die Beziehung erhalten bleibt. Microsoft Access gibt Aktualisierungen ohne vorherige Anzeige einer Meldung weiter.
Anmerkung Handelt es sich beim Primärschlüssel der Mastertabelle um ein Feld des Datentyps AutoWert, hat das Aktivieren des Kontrollkästchens Aktualisierungsweitergabe an Detailfeld keine Wirkung, da der Wert in einem Feld des Datentyps AutoWert nicht geändert werden kann.
Wenn Sie beim Definieren einer Beziehung das Kontrollkästchen Löschweitergabe an Detaildatensatz aktiviert haben, löscht Microsoft Access bei jedem Löschen von Datensätzen in der Mastertabelle automatisch die Detaildatensätze in der Detailtabelle. Löschen Sie z.B. einen Kundendatensatz aus der Tabelle Kunden, werden automatisch alle Bestellungen dieses Kunden aus der Tabelle Bestellungen gelöscht (dies schließt Datensätze in der Tabelle Bestelldetails ein, die mit den Bestelldatensätzen verknüpft sind). Wenn Sie Datensätze aus einem Formular oder Datenblatt löschen und das Kontrollkästchen Löschweitergabe an Detaildatensatz aktiviert ist, gibt Microsoft Access die Warnung aus, daß Detaildatensätze ebenfalls gelöscht werden können. Wenn Sie Datensätze jedoch unter Verwendung einer Löschabfrage löschen, löscht Microsoft Access automatisch die Datensätze in den Detailtabellen, ohne zuvor eine Warnung anzuzeigen.
Danach kann man durch eine Abfrage eine neue Tabelle erstellen.
Erstellen einer neuen Tabelle auf der Basis vorhandener Daten
Microsoft Access bietet zwei Möglichkeiten zum Erstellen einer Tabelle auf der Basis vorhandener Daten
Sie können Daten aus einer anderen Microsoft Access-Datenbank oder Daten in unterschiedlichen Dateiformaten aus anderen Programmen importieren bzw. miteinander verknüpfen.
Sie können eine Tabellenerstellungsabfrage ausführen, um eine Tabelle auf der Basis der Daten der aktuellen Tabelle zu erstellen. Sie können z.B. Tabellenerstellungsabfragen verwenden, um alte Datensätze zu archivieren, Sicherungskopien von Ihren Tabellen zu erstellen, eine Gruppe von Datensätzen für den Export in eine andere Datenbank auszuwählen oder um auf ihrer Grundlage Berichte zu erstellen, in denen Daten eines bestimmten Zeitraums angezeigt werden. (oder eben auch um in dieser Tabelle Berechnungen durchzuführen)
Erstellen einer neuen Tabelle aus den Ergebnissen einer Abfrage mit einer Tabellenerstellungsabfrage
Erstellen Sie eine Abfrage auf der Basis der Tabellen oder Abfragen, die die Datensätze enthalten, mit denen Sie die neue Tabelle erstellen möchten.
Klicken Sie in der Abfrage-Entwurfsansicht in der Symbolleiste auf den Pfeil neben der Schaltfläche Abfragetyp, und klicken Sie dann auf Neue Tabelle erstellen. Jetzt wird das Dialogfeld Neue Tabelle erstellen angezeigt.
Geben Sie im Feld Tabellenname den Namen der Tabelle ein, die Sie erstellen oder ersetzen möchten.
Klicken Sie auf Aktuelle Datenbank, um die neue Tabelle der gerade geöffneten Datenbank hinzuzufügen, oder klicken Sie auf Andere Datenbank, und geben Sie den Namen der Datenbank ein, der Sie die neue Tabelle hinzufügen möchten. Geben Sie ggf. den Pfadnamen zu dieser Datenbank ein.
Klicken Sie auf OK.
Ziehen Sie die Felder, die Sie der neuen Tabelle hinzufügen möchten, aus der Feldliste in den Abfrage-Entwurfsbereich.
Geben Sie in die Zelle Kriterien der Felder, die Sie in den Entwurfsbereich gezogen haben, Kriterien ein.
Erstellen eines Feldes, das in einer Abfrage benutzerdefinierte Berechnungen durchführt oder Feldwerte bearbeitet
Sie können ein neues Feld erstellen, das die Ergebnisse einer Berechnung, die Sie über einen Ausdruck definiert haben, anzeigt.
Öffnen Sie die Abfrage in der Entwurfsansicht.
Führen Sie einen der folgende Schritt durch:
Geben Sie einen Ausdruck in eine leere Zelle der Zeile Feld ein. Wenn im Ausdruck ein Feldname enthalten ist, müssen Sie diesen in eckige Klammern setzen.
Wenn Sie beim Erstellen des Ausdrucks Hilfe benötigen, verwenden Sie den Ausdrucks-Editor. Um ihn anzuzeigen, klicken Sie mit der rechten Maustaste auf die Zeile Feld, in die Sie das berechnete Feld einfügen, und klicken Sie dann auf Erstellen.
Nachdem Sie die EINGABETASTE gedrückt haben oder zu einer anderen Zelle gegangen sind, gibt Microsoft Access den Standardfeldnamen AusdrN ein, wobei N eine ganze Zahl darstellt, die für jedes neue Ausdrucksfeld der Abfrage um 1 erhöht wird. Der Name, dem ein Doppelpunkt folgt, wird vor dem Ausdruck angezeigt. Im Datenblatt stellt dieser Name die Spaltenüberschrift dar.
Sie können AusdrN durch einen aussagekräftigeren Namen, wie z.B. NeuerPreis, ersetzen.
Wenn der Ausdruck eine oder mehrere Aggregatfunktionen (Summe, Mittelwert, Anzahl, Min, Max, StdAbw oder Varianz) enthält und sich im Entwurfsbereich ein anderes Feld oder mehrere andere Felder befinden, die Sie zum Gruppieren verwenden möchten, klicken Sie in der Symbolleiste auf Funktionen (es sei denn, die Zeile Funktion wird bereits angezeigt). Lassen Sie in der Zeile Funktion das Gruppierungsfeld Gruppierung stehen, und ändern Sie im berechneten Feld Gruppierung in Ausdruck.
Sie haben folgende Möglichkeiten, die Abfrage gegebenenfalls zu vervollständigen:
Geben Sie Kriterien ein, um die Berechnung zu beeinflussen.
Sortieren Sie das Ergebnis
Legen Sie Feldeigenschaften, wie z.B. Format, fest (da das Feld nicht die Eigenschaften der zugrundeliegenden Tabelle übernimmt).
Soweit steht das übrigens alles in der Access Hilfe - und danach sollte man gehen.
Nun noch ein paar Kleinigkeiten, die nicht jeder kennt, aber relevant für jede Datenbank sind:
Datenbanken soll man so klein halten wie möglich. Das heißt man soll nur die Tabellen, Abfragen, Formulare, Berichte, Makros und Module anlegen, die man unbedingt benötigt. Sonst wird die Datenbank zu langsam! Im Zweifelsfall sollte man im Menü EXTRAS | ANALYSE | LEISTUNG den Leistungsassistenten zu Rate ziehen. Damit keine gleichen Schlüssel für verschiedene Kunden vergeben werden, sollte das Feld in der »Haupttabelle« immer vom Datentyp »Zähler« oder »AutoWert« und als Primärschlüssel definiert sein. Access sorgt dann automatisch dafür, daß eindeutige Schlüssel/Kundennummern beim Anlegen neuer Datensätze verwendet werden.
In den »Untertabellen« für die Zusatzinformationen kommt der gleiche Feldname zum Einsatz, hier wird jedoch der Datentyp »Long Integer« eingestellt. Es dürfen dort keine Schlüssel automatisch erstellt werden, da die Synchronisierung über Abfragen/Unterformulare erfolgt!
Bei einer manuellen Verwaltung der Kundennummer besteht die Gefahr, daß Nummern doppelt vergeben werden. Das darf, vor allem beim Einsatz im Netzwerk, nicht unterschätzt werden.
Für die manuelle Verwaltung sind immer irgendwelche Aufzeichnungen notwendig, die sich erfahrungsgemäß bei mehreren Benutzern einer Datenbank nie exakt synchronisieren lassen.
Die zu speichernden Informationen lassen sich in der Regel in verschiedene Bereiche gliedern und so mehreren Tabellen zuordnen. Die Bearbeitung erfolgt dann über entsprechend verknüpfte Formulare/Unterformulare.
Das hat mehrere Vorteile:
Übersichtlichere Verwaltung/Pflege der Datenbank durch überschaubare Tabellen
Flexiblere Erweiterungsmöglichkeiten durch Anlegen neuer Tabellen für zusätzliche Informationen
Schnellerer Zugriff auf die Tabellen durch kleinere Datensätze
Einfachere Aufteilung der Informationen auf Formulare und Unterformulare
Übersichtlichere Präsentation der Informationen in Formularen
Gruß Albert
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]