0

我试图这样做:

Recipe带有RecipeID(主键和外键)和RecipeName(唯一)的表。
Ingredient具有成分 ID(主键和外键)和成分名称(唯一)的表。 RecipeDetail带有 RecipeID、IngredientID 和 IngredientNme 的表。

  • 如果用户从成分表中删除成分,则必须删除 RecipeDetail 中具有此成分 ID 的所有记录。
  • 如果用户从Recipe Table 中删除Recipe,RecipeDetail 中具有此RecipeId 的所有记录都必须删除。

有什么线索吗?谢谢

4

1 回答 1

0

文档解释了如何在表之间创建约束。要强制删除孤立记录,请使用ON DELETE CASCADE.

还要确保启用了外键支持。


您的创建脚本可能如下所示

CREATE TABLE RecipeDetail(
  RecipeID      INTEGER REFERENCES Recipe(RecipeID) ON DELETE CASCADE,
  IngredientID  INTEGER REFERENCES Ingredient(IngredientID) ON DELETE CASCADE,
  PRIMARY KEY (RecipeID, IngredientID)
);

主键确保没有成分被两次分配给配方。IngredientName不应该存储在交集表中,这会导致冗余数据。

于 2012-08-06T11:25:45.810 回答