Hi, hab ne Frage zum Thema Primary key und Foreign key.
Zur Ausgangslage:
Ich hab zwei Tabellen die über eine m:n Beziehung verbunden sind. Tabelle A und Tabelle B. Um die m:n Beziehung aufzulösen wurde einedritte Tabelle A_x_B erstellt.
In allen drei Tabellen wurde jeweils ein Primary Key erstellt, sowie die entsprechenden Foreign Keys verknüpft.
Zur Frage:
Wenn ich die Tabellen mit Datensätzen befülle, wie muss dann die Tabelle A_x_B befüllt werden?
Reicht es aus nur die Spalte mit dem Primary Key zu füllen? Eigentlich sollten die Foreign Key`s ja von den anderen Tabellen übernommen werden.
Quellcode:
CREATE TABLE A (
id_a int,
Attribut_a VCHAR (30),
PRIMARY KEY (id_a));
CREATE TABLE B (
id_b int,
Attribut_b VCHAR (30),
PRIMARY KEY (id_b));
CREATE TABLE A_x_B (
id_a_x_b int,
PRIMARY KEY (id_a_x_b)
fid_a INT REFERENCES A (id_a)
fid_b INT REFERENCES B (id_b));
ALTER TABLE A
ADD fid_a_x_b INT REFERENCES A_x_B (id_a_x_b);
ALTER TABLE B
ADD fid_a_x_b INT REFERENCES A_x_B (id_a_x_b);
INSERT INTO A
VALUES (1, 'Audi');
INSERT INTO A
VALUES (2,'BMW');
INSERT INTO B
VALUES (1,'Schmitt');
INSERT INTO B
VALUES (2, 'Schulz');
INSERT INTO A_x_B
VALUES (1);
INSERT INTO A_x_B
VALUES (2);
Problem:
Meiner Meinung nach sollten jetzt die Foreign Key`s in der Tabelle A_x_B die Werte aus der Tabelle A und Tabelle B des jeweiligen Primary Key übernehmen. Wenn ich allerdings eine Abfrage starte zeigt er mit nur die Manuell eingefügten Werte.
Entweder steh ich total auf dem Schlauch oder ich hab nen Denkfehler drin. Kann es sein das ich vielleicht ne falsche Reihenfolge bei der Erstellung der Keys verwendet hab?
Wäre nett wenn mir jemand helfen kann. Danke schon mal für die Mühe die ihr euch macht.
Gruß Stefan
Zur Ausgangslage:
Ich hab zwei Tabellen die über eine m:n Beziehung verbunden sind. Tabelle A und Tabelle B. Um die m:n Beziehung aufzulösen wurde einedritte Tabelle A_x_B erstellt.
In allen drei Tabellen wurde jeweils ein Primary Key erstellt, sowie die entsprechenden Foreign Keys verknüpft.
Zur Frage:
Wenn ich die Tabellen mit Datensätzen befülle, wie muss dann die Tabelle A_x_B befüllt werden?
Reicht es aus nur die Spalte mit dem Primary Key zu füllen? Eigentlich sollten die Foreign Key`s ja von den anderen Tabellen übernommen werden.
Quellcode:
CREATE TABLE A (
id_a int,
Attribut_a VCHAR (30),
PRIMARY KEY (id_a));
CREATE TABLE B (
id_b int,
Attribut_b VCHAR (30),
PRIMARY KEY (id_b));
CREATE TABLE A_x_B (
id_a_x_b int,
PRIMARY KEY (id_a_x_b)
fid_a INT REFERENCES A (id_a)
fid_b INT REFERENCES B (id_b));
ALTER TABLE A
ADD fid_a_x_b INT REFERENCES A_x_B (id_a_x_b);
ALTER TABLE B
ADD fid_a_x_b INT REFERENCES A_x_B (id_a_x_b);
INSERT INTO A
VALUES (1, 'Audi');
INSERT INTO A
VALUES (2,'BMW');
INSERT INTO B
VALUES (1,'Schmitt');
INSERT INTO B
VALUES (2, 'Schulz');
INSERT INTO A_x_B
VALUES (1);
INSERT INTO A_x_B
VALUES (2);
Problem:
Meiner Meinung nach sollten jetzt die Foreign Key`s in der Tabelle A_x_B die Werte aus der Tabelle A und Tabelle B des jeweiligen Primary Key übernehmen. Wenn ich allerdings eine Abfrage starte zeigt er mit nur die Manuell eingefügten Werte.
Entweder steh ich total auf dem Schlauch oder ich hab nen Denkfehler drin. Kann es sein das ich vielleicht ne falsche Reihenfolge bei der Erstellung der Keys verwendet hab?
Wäre nett wenn mir jemand helfen kann. Danke schon mal für die Mühe die ihr euch macht.
Gruß Stefan
Comment