Doppel-Fremdschlüssel postgresql
Ich bin versucht, einen doppelten primary key als foreign key.
Create table AAA (
AAA_id int primary key
);
create table BBB (
AAA_id int,
BBB_name character varying(20),
primary key (AAA_id, BBB_name)
);
create table CCC (
AAA_id,
BBB_name,
DDD_id,
... ???
);
Tabelle AAA ist ein Objekt
Tabelle BBB ist vielen zu eins mit AAA und hält Aliase AAA
Ich versuche, erstellen Sie eine pivot-Tabelle, CCC hält ein viele zu eins zwischen DDD und BBB.
Ich denke, ich möchte etwas wie
create table CCC (
AAA_id,
BBB_name,
DDD_id,
foreign key (AAA_id, BBB_name) references BBB(AAA_id, BBB_name) on update cascade
);
wo beide AAA_id und BBB_name sind foreign keys, aber Sie sind auch immer auf der gleichen Zeile in BBB.
aber das ist natürlich nicht gültig. was ist der beste Weg, um diese Art von Verhalten in postgreSQL?
Es ist vollkommen gültig! Aber es ist nicht als ein "double" - Taste, es ist eine "Verbindung" - Taste.
InformationsquelleAutor David Chan | 2012-02-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da {AAA_id, BBB_name} eindeutigen Identifizierung einer Zeile in der BBB, der foreign key {AAA_id, BBB_name} im CCC wird auch auf eine eindeutige Zeile in BBB.
InformationsquelleAutor Mike Sherrill 'Cat Recall'