如何用两个外键制作一个复合键



我有三个表:

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)
);

最新更新