1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Frage zu Beziehungen

Dieses Thema im Forum "Microsoft Access" wurde erstellt von MarkO, 31 März 2011.

  1. MarkO

    MarkO Benutzer

    Hallo,

    ich bin relativ neu in dem Gebiet Datenbanken:

    ich habe die folgenden Tabellen:

    Tabelle1 ( hat folgende Spalten)

    Nr. (Primärschlüssel) und Bezeichnung


    Tabelle2 (hat folgende Spalten)

    Nr. (Primärschl.) T1Nr.1 (fremdschlüssel) T1Nr.2 (Fremdschlüssel)


    Wie baue ich nun diese Beziehung auf? (das sollte ja n:m sein, oder?)

    Ich dann den Primäraschlüssel von Tabelle 1 ja nur 1 mal auf die Tabelle 2 zeigen lassen. Benötige ich dann hier eine Kopie von Tabelle 1 in der Beziehungsansicht? Dann klappt es. Die erste Tabelle1 verweist auf den ersten Fremdschlüssel und die zweite Tabelle auf den zweiten Fremdschlüssel.

    Aber is das so korrekt?

    Vielen Dank!
     
  2. Charly

    Charly Datenbank-Guru

    Hallo MarkO,

    mit 2 Tabellen kannst du in einer Datenbank keine N:M-Beziehung abbilden. Dafür braucht man eine Hilfstabelle.

    Was Du da gebaut hast gibt es zwar auch (Rekursion) ist aber keine N:M-Beziehung

    Aus einer N:M Beziehung werden in der Datenbank 2 1:N Beziehungen

    Theoretisches Model:

    Tabelle1--N:M--Tabelle2

    In der Datenbank sieht das dann so aus:

    Tabelle1 --1:N--Hilfstabelle--N:1--Tabelle2

    Wobei die Primärschlüssel von Tabelle1 und Tabelle2 als Fremdschlüssel in die Hilftabelle wandern.
    Um Doppelte einträge in der Hilftabelle zu vermeiden machst Du aus den beiden Fremdschlüsseln in der Hilftabelle einen Primärschlüssel.

    Aufbau der Tabellen:

    Tabelle1 {T1PK, ...}
    Tabelle2 {T2PK, ...}
    Hilftabelle {T1PK, T2PK}

    Gruß Charly
     
  3. MarkO

    MarkO Benutzer

    Hallo,

    danke für die Antwort.

    Dann habe ich die Begriffe vertauscht.

    Wenn man von Rekursion ausgeht, ist es dann korrekt mit diesen beiden Tabellen1?

    Danke!

    Viele Grüße
     
  4. Charly

    Charly Datenbank-Guru

    Hallo MarkO,

    ja, das kann man so machen.

    In Tabelle1 stehen dann die Daten und in Tabelle2 wird die Hierarchie abgebildet.

    Wenn du außer den Fremdschlüsseln keine Daten in Tabelle2 hast würde ich das eher mit einer zusätzlichen Spalte in Tabelle 1 lösen.

    Tabelle1 {T1PK, T1FK, ...}

    Wobei T1FK Fremdschlüssel von T1PK ist.

    Gruß Charly
     
  5. MarkO

    MarkO Benutzer

    Hallo!

    Danke für die Antwort.

    Das mit der zusätzlichen Spalte geht dann aber nur, wenn ich z.B. ein Organigramm eines Unternehmens aufbauen will, oder? Ich kann ja sagen,

    Personalnummer (PK) und Vorgesetzter (FK)

    Wenn ich allerdings z.B. eine Stückliste darstellen will, dann müsste ich das mit den beiden Tabellen darstellen, oder? Weil es kann ja sein, dass der Rohstoff Nr. 5 in Bauteil 7 und 8 eingeht, oder?

    Viele Grüße
     
  6. Charly

    Charly Datenbank-Guru

    Hallo MarkO,

    Richtig. Uns so geht Tabelle 1 mit sich selber eine N:M-Beziehung ein. Und dafür braucht man halt eine Hilfstabelle (Tabelle2)

    Ich wusste bis jetzt ja noch nicht genau was Du mit den Tabellen vor hast.

    Gruß Charly
     
  7. MarkO

    MarkO Benutzer

    Hallo,

    sorry, hab mich wohl nicht richtig ausgedrückt. :-(

    Dann stimmt also n:m? :) Danke, jetz hab ich es verstanden!!

    Viele Grüße
     
  8. MarkO

    MarkO Benutzer

    Hallo,

    ich hab noch mal eine Frage zu der Stückliste in Access.

    Ich hab doch hier die Tabelle mit den Materialnummern und eine zweite Tabelle, z.b mit den Fremdschlüsseln "obereMatNR" und "UntereMatNR" gegeben.

    Wie bilde ich denn das korrekt in Access ab? Ich muss ja die Matnr zwei mal in die Tabelle2 als Fremdschlüssel eintragen. Soweit ich das probiert habe, geht das nur wenn ich im Menüpunkt zur Erstellung der Beziehungen die Tabelle1 zweimal aufführe??
    Gibt's da keine andere Möglichkeit?

    Viele Grüße
     
  9. Charly

    Charly Datenbank-Guru

    Hallo MarkO,

    benutzt Du eine mdb oder Access als Frontend für was anderes.

    Gruß Charly
     
  10. MarkO

    MarkO Benutzer

    Hallo,

    ich habe eine mdb.

    Gruß

    MarkO
     
  11. Charly

    Charly Datenbank-Guru

    Hallo MarkO,

    wenn Du bei Access bleiben willst und flexibler sein möchtes solltest Du dir einen SQL-Server Express als Backend einrichten und ein Projekt erstellen.
    Dann kann man mit Access auch was anfangen und es fühlt sich jetzt auch mehr nach einer Datenbank an.
    Du kannst dann auch mit dem Management Studio des SQL-Servers ordentliche SQL-Befehle formulieren.

    Gruß Charly
     
  12. MarkO

    MarkO Benutzer

    Hi,

    danke, das ich werde ich auch später sicherlich noch machen mit einem SQL Server. Allerdings bin ich im DB - Bereich sehr neu und möchte mich zuerst mal mit Access auseinander setzten :)

    Ich lad mal ein Bild hoch, wie ich das mit der Stückliste gemacht hätte:

    Beziehungen.jpg

    Ist das so korrekt? Was mich hier stört, warum die Tabelle Materialnummern zweimal abgebildet werden muss?

    Stimmt folgendes:

    - Das wird hier als Reflexivität bezeichnet (Synonym: Rekursive Beiehung)
    - Es ist eine n:m Beziehung?

    Wie sieht eine Beziehung aus, bei der der Primärschlüssel einer Tabelle in der gleichen Tabelle als Fremdschlüssel verwendet wird. (siehe Organigramm)

    Ich glaube bei SQL sieht das so aus:

    http://www.codeproject.com/KB/XML/SqlXmlTreeView/tblDiagnosis.gif

    Vielen Dank!
     
  13. Charly

    Charly Datenbank-Guru

    Hallo MarkO,

    Das die Tabelle zweimal abgebildet wird würde mich nicht stören.
    Es ist zwar von der Darstellung etwas gewöhnungsbedüftig aber Hauptsache Access setzt es richtig um.

    Eine direkte Rekursion wie im Beispiel 'tblDiagnosis.gif' könnte nicht mehrere OberMatNr für eine unterMatNr haben.
    Die Variante mit Haupt- und Hilfs-Tabelle und 2 Beziehungen zwischen den Tabellen löst diese Problem.

    Ich würde es als eine N:M-Beziehung bezeichnen. Es als Rekursion zu bezeichen halte ich aber auch nicht für Falsch.

    Habe hier mal die Darstellung im SQL-Server aus einer meiner Datenbänke (Tabellennamen und sonstige Felder geschwärzt;)):
    Baugruppe.jpg

    Gruß Charly
     
  14. MarkO

    MarkO Benutzer

    Hallo,

    ich habe noch eine Frage:

    wenn ich 2 Tabellen ohne Beziehungen habe, aber trotzdem eine Abfrage erstelle, dann wird ja jeder Datensatz mit dem anderen verknüpft.
    Also, z.B: Tabelle 1: 10 Datensätze, Tabelle 2: 10 Datensätze.
    Dann sind in der Abfrage ja 100 Datensätze.

    Gibt es dafür auch einen Fachbegriff, oder heißt das einfach "ohne Beziehung"?

    Danke!

    Gruß
     
  15. Charly

    Charly Datenbank-Guru

    Hallo MarkO,

    das ist ein kartesisches Produktdas oder auch cross join.

    Gruß Charly
     

Diese Seite empfehlen