Frage zu Beziehungen

MarkO

Benutzer
Beiträge
17
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!
 
Werbung:

Charly

Datenbank-Guru
Beiträge
306
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
 

MarkO

Benutzer
Beiträge
17
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
 

Charly

Datenbank-Guru
Beiträge
306
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
 

MarkO

Benutzer
Beiträge
17
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
 

Charly

Datenbank-Guru
Beiträge
306
Hallo MarkO,

Wenn ich allerdings z.B. eine Stückliste darstellen will, dann müsste ich das mit den beiden Tabellen darstellen, oder?

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
 

MarkO

Benutzer
Beiträge
17
Hallo,

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

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

Viele Grüße
 

MarkO

Benutzer
Beiträge
17
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
 

Charly

Datenbank-Guru
Beiträge
306
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
 

MarkO

Benutzer
Beiträge
17
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!
 

Charly

Datenbank-Guru
Beiträge
306
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.

Stimmt folgendes:

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

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
 

MarkO

Benutzer
Beiträge
17
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ß
 
Werbung:
Oben