Supportnet / Forum / Datenbanken
MS Access Beziehungen zwischen Tabellen
Frage
Hallo!
Bin Access-Neuling. Kann mir jemand erklären, wie das Grundprinzip der Beziehungen ist? Wie ich verschiedene Tabellen miteinander verknüpfen muss, mit welchem Kriterium und vor allem WARUM??? Mir fehlt gerade die Logik....
Im konkreten Fall habe ich eine Beispielsdatei "Friseursalon". Es sollen 4 Tabellen entstehen - Kunden, Mitarbeiter, Besuche und Pflegeserien. Beim Kunden soll der Stammfriseur aus der Mitarbeitertabelle eingetragen werden und die bevorzugte Pflegeserie aus der Tabelle Pflegeserie sowie die Besuche aus der Tabelle Besuche. Die Besuche sollen wiederum mit der Pflegeserie verknüpft werden, damit man sehen kann, welches Produkt verwendet wurde... Und ich kriegs einfach nicht hin.
Danke im Voraus für eure Hilfe,
Susanne
Antwort 1 von Reinicke
Hallo Susanne,
also es gibt verschiedene Möglichkeiten , wobei ich Dir nur eine aufzeige.
In der Tabelle Kunden brauchst Du ein Feld Stammfriseur an (Zahl). Dieses Feld verknüpfst Du mit der Tabelle Mitarbeiter, wobei die Namensauflistung auch eine eindeutige Zahl (Bsp. AutoWert) beinhalten sollte.
Also Feld Stammfriseur (Zahl).Tabelle Kunden = ID (AutoWert) Tabelle Mitarbeiter.
Dasselbe machst Du mit den anderen Tabellen.
Also Feld Pflegeserie Tabelle Pflegeserie (Zahl) = ID (Autowert) Tabelle Pflegeserie etc.
Gruß Reinicke
also es gibt verschiedene Möglichkeiten , wobei ich Dir nur eine aufzeige.
In der Tabelle Kunden brauchst Du ein Feld Stammfriseur an (Zahl). Dieses Feld verknüpfst Du mit der Tabelle Mitarbeiter, wobei die Namensauflistung auch eine eindeutige Zahl (Bsp. AutoWert) beinhalten sollte.
Also Feld Stammfriseur (Zahl).Tabelle Kunden = ID (AutoWert) Tabelle Mitarbeiter.
Dasselbe machst Du mit den anderen Tabellen.
Also Feld Pflegeserie Tabelle Pflegeserie (Zahl) = ID (Autowert) Tabelle Pflegeserie etc.
Gruß Reinicke
Antwort 2 von Su
Hallo Reinicke,
dankeschön für die Antwort.
Verständnisproblem...
Muss ich nicht immer die gleichen Felder miteinander verknüpfen (also z.B. Kd-ID beim Kunden mit Kd-ID in den Mitarbeitern)?
Und welche ist dann die Master- und welche die Detailtabelle???
Ojeoje, ich muss noch einiges lernen!
Gruß
Susanne
dankeschön für die Antwort.
Verständnisproblem...
Muss ich nicht immer die gleichen Felder miteinander verknüpfen (also z.B. Kd-ID beim Kunden mit Kd-ID in den Mitarbeitern)?
Und welche ist dann die Master- und welche die Detailtabelle???
Ojeoje, ich muss noch einiges lernen!
Gruß
Susanne
Antwort 3 von Teddy7
Hallo Susanne !
Nur nicht verzweifeln !
Also : Die Felder in den beiden Tabellen müssen nicht den gleichen Namen haben, aber sie sollten den gleichen Typ haben (wobei long mit autowert verknüpfbar ist).
Wenn Du nach einem halben Jahr mal wieder in Deine Datenbank reinguckst, wirst Du allerdings froh sein, wenn die Felder mit dem gleichen Inhalt auch gleiche Namen haben.
In Deinem Fall verknüpfst Du allerdings keine Kd-Id sondern eine Angestellte-Id (oder so ähnlich).
Kd-Id wäre die Nummer des Kunden.
Auf diese Nummer beziehst Du Dich in der Tabelle "Kundenbesuche".
Das funktioniert dann so, daß Du unter einer laufenden Nummer (Autowert) den Besuch des Kunden (nur die Kd-Id speichern), den "behandelnden" Frisör und die verwendeten "Mittelchen" (auch hier nur die Artikel-Nr speichern)
in einem Datensatz hinterlegst.
Wenn Du dann darüber eine Auswertung machst - z.B. eine Rechnung schreibst -
dann erstellst Du zunächst eine Abfrage über die Tabelle "Kundenbesuche". In diese Abfrage fügst Du dann die Tabellen "Mitarbeiter" und "Artikel" (ggf. weitere) hinzu und verknüpfst sie. Dazu klickst Du einfach auf die "Mitarbeiter-Nr" im Besuchssatz und ziehst den Cursor zur Mitarbeiter-Nr in der Tabelle "Mitarbeiter". Dadurch werden die beiden Felder miteinander verbunden.
Dann klickst Du rechts auf diese Linie und gehst auf Verknüpfungstyp.
Da wählst Du aus ".. alle aus Tabelle Besuch und nur die zugehörigen aus Tabelle Mitarbeiter.
Analog für die anderen Tabellen.
Dann kannst Du aus der Tabelle Mitarbeiter in Deine Abfrage den Namen hinzufügen und aus der Tabelle Artikel die Artikelbezeichnung (oder Leistung).
In diesem Fall ist die Besuchstabelle führend - also die Mastertabelle.
Würdest Du aber eine Abfrage erstellen, wieviele oder welche Kunden ein Mitarbeiter betreut hat, dann wäre die Mitarbeitertabelle führend - also die Mastertabelle.
///////
Wenn Du beim Kunden den bevorzugten Mitarbeiter hinterlegst (auch nur die Nummer speichern), dann kannst Du diese Information beim Erfassen (Planen) des Kundenbesuchs verwenden. Hier kann dann im Erfassungsbild der Name des Mitarbeiters aus der MitarbeiterNr (per Zugriff auf die Mitarbeitertabelle mit z.B. dem Befehl dlookup ...) angezeigt werden. Die Mitarbeiternummer sollte aber überschreibbar sein, weil ja nicht immer der gewünschte Mitarbeiter frei ist.
////////
Allgemein gesagt ist diese Verknüpfung von Tabellen dazu da, eine Mehrfachspeicherung von Informationen zu vermeiden.
Sonst müsstest Du alle Informationen im Klartext (also z.B. den Mitarbeiternamen) in jedem Besuchssatz speichern. Durch die Verwendung von Schlüsseln wird das Speicheraufkommen stark reduziert.
So ! Das war jetzt vielleicht ein bißchen viel auf einmal.
Wenn Du noch Fragen hast, melde Dich ruhig wieder (auch per mail)
Gruß
Teddy
Nur nicht verzweifeln !
Also : Die Felder in den beiden Tabellen müssen nicht den gleichen Namen haben, aber sie sollten den gleichen Typ haben (wobei long mit autowert verknüpfbar ist).
Wenn Du nach einem halben Jahr mal wieder in Deine Datenbank reinguckst, wirst Du allerdings froh sein, wenn die Felder mit dem gleichen Inhalt auch gleiche Namen haben.
In Deinem Fall verknüpfst Du allerdings keine Kd-Id sondern eine Angestellte-Id (oder so ähnlich).
Kd-Id wäre die Nummer des Kunden.
Auf diese Nummer beziehst Du Dich in der Tabelle "Kundenbesuche".
Das funktioniert dann so, daß Du unter einer laufenden Nummer (Autowert) den Besuch des Kunden (nur die Kd-Id speichern), den "behandelnden" Frisör und die verwendeten "Mittelchen" (auch hier nur die Artikel-Nr speichern)
in einem Datensatz hinterlegst.
Wenn Du dann darüber eine Auswertung machst - z.B. eine Rechnung schreibst -
dann erstellst Du zunächst eine Abfrage über die Tabelle "Kundenbesuche". In diese Abfrage fügst Du dann die Tabellen "Mitarbeiter" und "Artikel" (ggf. weitere) hinzu und verknüpfst sie. Dazu klickst Du einfach auf die "Mitarbeiter-Nr" im Besuchssatz und ziehst den Cursor zur Mitarbeiter-Nr in der Tabelle "Mitarbeiter". Dadurch werden die beiden Felder miteinander verbunden.
Dann klickst Du rechts auf diese Linie und gehst auf Verknüpfungstyp.
Da wählst Du aus ".. alle aus Tabelle Besuch und nur die zugehörigen aus Tabelle Mitarbeiter.
Analog für die anderen Tabellen.
Dann kannst Du aus der Tabelle Mitarbeiter in Deine Abfrage den Namen hinzufügen und aus der Tabelle Artikel die Artikelbezeichnung (oder Leistung).
In diesem Fall ist die Besuchstabelle führend - also die Mastertabelle.
Würdest Du aber eine Abfrage erstellen, wieviele oder welche Kunden ein Mitarbeiter betreut hat, dann wäre die Mitarbeitertabelle führend - also die Mastertabelle.
///////
Wenn Du beim Kunden den bevorzugten Mitarbeiter hinterlegst (auch nur die Nummer speichern), dann kannst Du diese Information beim Erfassen (Planen) des Kundenbesuchs verwenden. Hier kann dann im Erfassungsbild der Name des Mitarbeiters aus der MitarbeiterNr (per Zugriff auf die Mitarbeitertabelle mit z.B. dem Befehl dlookup ...) angezeigt werden. Die Mitarbeiternummer sollte aber überschreibbar sein, weil ja nicht immer der gewünschte Mitarbeiter frei ist.
////////
Allgemein gesagt ist diese Verknüpfung von Tabellen dazu da, eine Mehrfachspeicherung von Informationen zu vermeiden.
Sonst müsstest Du alle Informationen im Klartext (also z.B. den Mitarbeiternamen) in jedem Besuchssatz speichern. Durch die Verwendung von Schlüsseln wird das Speicheraufkommen stark reduziert.
So ! Das war jetzt vielleicht ein bißchen viel auf einmal.
Wenn Du noch Fragen hast, melde Dich ruhig wieder (auch per mail)
Gruß
Teddy
Antwort 4 von Su
VIELEN LIEBEN DANK für diese tolle Erklärung!!! Äußerst verständlich. Hab mich auch gleich an die Arbeit gemacht und sieheda - es funktioniert.
Ganz liebe Grüße
Su
Ganz liebe Grüße
Su

