Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: SSSleep am Juni 23, 2020, 10:20:03

Titel: mehrdeutige Beziehung zwischen Tabellen
Beitrag von: SSSleep am Juni 23, 2020, 10:20:03
Hallo,

vorab, bin ich mir unsicher, ob der Betreff des Themas richtig gewählt ist. Ich versuche es einmal zu beschreiben.

Ich habe eine kleine Datenbank, in der ich Mitarbeiter mit Standorten verknüpfe. Dazu gibt es eine Tabelle mit den Mitarbeitern, sowie eine weitere Tabelle mit den Locations. Dazwischen eine Beziehung. Nun würde ich der Tabelle Mitarbeiter gerne noch ein weiteres Feld hinzufügen, welches den vorherigen Standort des Mitarbeiter kennzeichnet. Dazu müsste ich mit diesem Feld dann, erneut, mit der Tabelle Locations verknüpfen. Ab da funktioniert es dann nicht mehr, weil die Beziehung nicht mehr eindeutig ist.

So würde das ganze dann aussehen:

(https://i.ibb.co/JtgT4tG/help-temp.png)

Lässt sich mein vorhaben überhaupt auf diesem Wege lösen?

Vielen Dank
Titel: Re: mehrdeutige Beziehung zwischen Tabellen
Beitrag von: ebs17 am Juni 23, 2020, 12:23:52
ZitatNun würde ich der Tabelle Mitarbeiter gerne noch ein weiteres Feld hinzufügen, welches den vorherigen Standort des Mitarbeiter kennzeichnet.
Ich würde eher Standorte und Mitarbeiter per m:n verbinden. In der resultierenden Verknüpfungstabelle kann man dann mehr als zwei Standorte zum Mitarbeiter anlegen, die man z.B. mit zusätzlichen Angaben (von, bis) besser qualifizieren kann. Da wären dann auch Hauptstandort und Nebenkriegsschauplatz parallel darstellbar.

Nebenbei: Beziehungen ohne eingestellte referentielle Integrität haben keine funktionale Wirkung, sie bieten nur optische Informationen. Auf RI wird man bestmöglich nicht verzichten wollen.
Titel: Re: mehrdeutige Beziehung zwischen Tabellen
Beitrag von: SSSleep am Juni 23, 2020, 13:15:08
Hallo Eberhard,

dein Beispiel macht Sinn, danke. Ich muss allerdings gestehen, dass die Darstellung nur als Beispiel gedacht war. ;) 

Ich habe häufiger die Situation, dass ich Tabellen nur dafür nutze, um Textbeschreibung vorzuhalten. Das klappt soweit auch ganz gut, allerdings komme ich dann jedesmal in Verlegenheit, wenn ich aus einem Datensatz mehrfach auf die selbe Textbeschreibung zugreifen möchte. Nur gibt es dafür eine Möglichkeit damit umzugehen? Vielleicht ist die Abbildung über Beziehungen auch nicht Sinnvoll?

Ich könnte mir auch vorstellen über Kriterien innerhalb von Abfragen auf die Textbeschreibung zu verlinken. Wäre das eine Möglichkeit? 
   
vielen Dank
Titel: Re: mehrdeutige Beziehung zwischen Tabellen
Beitrag von: ebs17 am Juni 23, 2020, 16:31:53
Zitataus einem Datensatz mehrfach auf die selbe Textbeschreibung zugreifen
Ich verstehe nicht wirklich das Problem. Schon mit einer 1:n-Beziehung hätte man Zugriff auf mehrere Texte, und man hat wie gebraucht keine Notwendigkeit, bei Erweiterung von bspw. 2 auf 7 Texte eine Umprogrammierung inklusive Tabellenstrukturen vornehmen zu müssen. Letzteres können sich nur jene leisten, die langfristig jederzeit Tag und Nacht Zeit für ihre Kunden haben und billigst (umsonst) und schnellstens reagieren und arbeiten können.
In der Praxis stellt sich das so dar: Wenn man wegen ein paar zusätzlicher Daten neu-/umprogrammieren muss, hat man im Vorfeld etwas falsch gemacht.

Für eine Darstellung nebeneinander wird man dann eine Abfrage entsprechend formulieren. Mit Plan und vorgedachter Struktur wird das auch nur einmal erfolgen müssen.

Die Variante, die Du oben zeigst, würde man für Hierarchien verwenden (Direktor, Leiter, Mitarbeiter / Eltern, Kind). Für die Verarbeitung von mehreren Ebenen braucht man aber Prozeduren/Rekursion - etwas, was Jet-SQL (Dialekt von Access) nicht beherrscht. Dort müsste man dann per VBA Schleifen einbauen.
Titel: Re: mehrdeutige Beziehung zwischen Tabellen
Beitrag von: SSSleep am Juni 23, 2020, 17:48:58
Zitat von: ebs17 am Juni 23, 2020, 16:31:53
Zitataus einem Datensatz mehrfach auf die selbe Textbeschreibung zugreifen
Ich verstehe nicht wirklich das Problem.

Vermutlich bin ich an der Stelle das Problem.

Zitat von: ebs17 am Juni 23, 2020, 16:31:53Die Variante, die Du oben zeigst, würde man für Hierarchien verwenden (Direktor, Leiter, Mitarbeiter / Eltern, Kind). Für die Verarbeitung von mehreren Ebenen braucht man aber Prozeduren/Rekursion - etwas, was Jet-SQL (Dialekt von Access) nicht beherrscht. Dort müsste man dann per VBA Schleifen einbauen.

Ok...ok, die Variante war halt ein unglücklich gewähltes Beispiel. :-[   

Zitat von: ebs17 am Juni 23, 2020, 16:31:53Für eine Darstellung nebeneinander wird man dann eine Abfrage entsprechend formulieren. Mit Plan und vorgedachter Struktur wird das auch nur einmal erfolgen müssen.

Ja, ich denke darauf wird es herauslaufen. Könntest du mir in diese Richtung noch eine Starthilfe geben, bitte.

Titel: Re: mehrdeutige Beziehung zwischen Tabellen
Beitrag von: ebs17 am Juni 23, 2020, 18:40:36
ZitatStarthilfe
Eine Abfrageformulierung ist sehr stark von den gegebenen Umständen abhängig. Ich unterstelle hier genau zwei Datensätze pro Fremdschlüssel.
Diese Abfrage könnte man nun mit der Primärtabelle verknüpfen:
SELECT
   T1.ID_f,
   T1.Text AS Alt,
   T2.Text AS Neu
FROM
   tblDetails AS T1
      INNER JOIN tblDetails AS T2
      ON T1.ID_f = T2.ID_f
         AND
      T1.ID < T2.ID
Titel: Re: mehrdeutige Beziehung zwischen Tabellen
Beitrag von: SSSleep am Juni 24, 2020, 11:23:34
Irgendetwas fehlt mir noch zum Verstehen. Ich habe versucht dein Beispiel nachzuvollziehen. Grafisch sieht es dann so aus:

(https://i.ibb.co/3yjXpgT/help.png)

die zugehörige SQL Syntax ist sehr ähnlich zu deiner:

SELECT
    T1.ID_f,     
    T1.Text AS Alt,
    T2.Text AS Neu
FROM
    tblDetails AS T1
       INNER JOIN tblDetails AS T2
       ON T1.ID_f = T2.ID_f;

Für mich ist noch nicht erkennbar, wie mich das zur Lösung führt. Gehen wir vielleicht von völlig unterschiedlichen Voraussetzungen aus?

Entschuldige, wenn ich deine Geduld so strapaziere. :-[ 
Titel: Re: mehrdeutige Beziehung zwischen Tabellen
Beitrag von: ebs17 am Juni 24, 2020, 11:30:53
Zitatnicht erkennbar, wie mich das zur Lösung führt
Lösung wofür?

Mein Versuch zeigt, wie man Inhalte aus zwei Datensätzen einer Tabelle auf eine Zeile bringt - in Nachahmung der beiden Fremdschlüssel in Deinem Eingangsbeitrag.

Man könnte aber auch sagen: Es ist nur ein Beispiel ...
Titel: Re: mehrdeutige Beziehung zwischen Tabellen
Beitrag von: SSSleep am Juni 29, 2020, 09:31:29
Hi,

bezogen auf mein Beispiel habe ich habe es jetzt so gelöst bekommen:

SELECT
         members.Mitarbeiter,
         t2.Stadt,
         location_1.Stadt
FROM
           location AS t2 INNER JOIN (location AS location_1
                 INNER JOIN members
                 ON location_1.ID = members.Standort_neu)
           ON t2.ID = members.Standort_alt;



Vielen Dank für deinen Denkanstoß

VG

Ralf
Titel: Re: mehrdeutige Beziehung zwischen Tabellen
Beitrag von: doa115 am Juni 30, 2020, 11:02:14
Hallo zusammen,

ich würde gerne nochmals auf die ursprüngliche Frage von SSSleep zurück kommen.

Wenn ich es richtig verstehe soll ja eine referentielle Integrität zwischen der Mitarbeiter-Tabelle und den Lokationen aufgebaut werden und zwar einmal über das Feld Standort_aktuell als auch noch über Standort_alt.
Mir ist nicht klar warum das nicht direkt gehen sollte. Man kann doch eine Referenz von Members.Standort_aktuell zu Location.ID und zusätzlich von Members.Standort_alt zu Location.ID aufbauen.

In Access kann ich dies ja einfach unter Database Tools Relationships definieren. Was natürlich am Anfang etwas verwirrt ist die Darstellung von Access, es wird so dargestellt als ob plötzlich eine weitere Tabelle Location existieren würde. Dies ist aber nur ein optisches Problem, in Wirklichkeit gibt es keine zweite Tabelle. Dies kann man auch daran sehen indem man aus dem Relationships-Fenster den Kopf der optisch zweiten Tabelle Location_1 mit rechter Maustaste anklickt und auf Table Design geht: es wird die Tabelle Location geöffnet und nicht Location-1. Ist die Sache erst mal definiert hat man natürlich dann die Vorteile der Datenintegrität zwischen den referenzierten Tabellen und Vorteile wie Lookup-Zugriff usw.

Aber vielleicht bin ich mit meinen Gedanken auf einem völlig falschen Pfad.

Gruß
Albert
Titel: Re: mehrdeutige Beziehung zwischen Tabellen
Beitrag von: Beaker s.a. am Juni 30, 2020, 12:12:36
Hallo Albert,
Dann hast du aber keine Möglichkeit weitere Daten zu einer MA/SA-Kombination
zu erfassen; - siehe Eberhards Post vom 23-06-2020, 10:23:52
gruss ekkehard
Titel: Re: mehrdeutige Beziehung zwischen Tabellen
Beitrag von: doa115 am Juni 30, 2020, 12:51:29
Hallo, du hast recht. Ich hatte aber den Eindruck die erste Frage zielte auch dahin, dass aus einer Tabelle heraus nicht über mehrere Felder auf eine andere Tabelle mehrfach referenziert werden kann.

Gruß
Albert