我有三个表:
Table 1
pizza
country
base
Table 2
ingredient
type
Table 3
pizza
ingredient
amount
在表1中,主键是pizza
,在表2中是ingredient
。在表3中,pizza和配料是外键,分别参考表1和表2,我想将它们做成一个复合键。
以下是我尝试过的:
CREATE TABLE Table3(
pizza varchar(12),
ingredient varchar(12),
amount int,
CONSTRAINT FK_pizzaRecipe FOREIGN KEY (pizza)
REFERENCES Table1(pizza),
CONSTRAINT FK_ingredientBase FOREIGN KEY (ingredient)
REFERENCES Table2(ingredient),
CONSTRAINT pk_myConstraint PRIMARY KEY (pizza, ingredient)
);
但我不确定这是否是一个正确的实现。
不,组装单个复合FK没有意义。这是两个独立的外键约束,彼此无关。
您的表格是完全正确的:
CREATE TABLE Table3(
pizza varchar(12),
ingredient varchar(12),
amount int,
CONSTRAINT FK_pizzaRecipe FOREIGN KEY (pizza)
REFERENCES Table1(pizza),
CONSTRAINT FK_ingredientBase FOREIGN KEY (ingredient)
REFERENCES Table2(ingredient)
);