如何将MealIng表的两个外键指定为联合主键?
修改方案说明
要实现将MealIng表的MealID和IngID设为联合主键,同时保留外键约束,需要调整两处关键内容:
- 修正外键引用的表名拼写错误(原代码中
REFERENCES Meal(MealID)应为REFERENCES Meals(MealID)) - 明确声明联合主键,同时规范外键约束的写法
修改后的完整代码如下:
CREATE TABLE Meals ( MealID INTEGER PRIMARY KEY, Meal TEXT, Type TEXT ); CREATE TABLE Ing ( IngID INTEGER PRIMARY KEY, IngName TEXT, UnitCost NUMERIC ); CREATE TABLE MealIng ( MealID INTEGER, IngID INTEGER, Quantity INTEGER, -- 声明联合主键 PRIMARY KEY (MealID, IngID), -- 定义外键约束 FOREIGN KEY (MealID) REFERENCES Meals(MealID), FOREIGN KEY (IngID) REFERENCES Ing(IngID) );
关键修改点解释
- 先单独定义
MealID和IngID列,再通过PRIMARY KEY (MealID, IngID)指定联合主键,确保两列组合唯一,符合餐品与食材关联的业务逻辑(同一食材不会重复关联到同一餐品)。 - 单独使用
FOREIGN KEY子句明确外键关系,语法更清晰规范,同时修正了原代码中表名的拼写错误。
内容的提问来源于stack exchange,提问作者Leah
相关产品推荐
相关产品推荐

