建模无法删除某些行的数据库关系

时间:2017-01-08 19:09:28

标签: sql postgresql activerecord

好的,抱歉这个怪异的措辞。

我的情况是我有一定数量的数据库行无法删除。我们称之为成分。我有许多属于食谱的成分。然而,这些食谱使用相同的成分。并且通过使用相同的意思,他们必须使用完全相同的行,因为这些成分是由外部脚本播种的。换句话说,这些成分永远不会由应用程序本身创建,而是预先加载。

这就是问题所在。我希望能够删除配方而不删除配料,但我希望配料仍属于它们。

么?

1 个答案:

答案 0 :(得分:3)

我无法评论(没有足够的代表),所以我将此作为答案发布。我认为你可以创建一个存储ingredient_id和recipe_id的表,称之为RecipeToIngredients或类似的东西。然后,您可以将ingredient_id与成分表中的记录相关联,并将recipe_id与配方表相关联。您可以将多个食谱链接到完全相同的成分行。

您说您要删除配方而不删除配料,因此您可以使用此设置执行此操作。删除配方时,可以从RecipeToIngredients表中删除记录,而不是从Ingredients表中删除它们。

然后你说“我希望这个成分仍属于他们”。通过“他们”,你的意思是仍然属于食谱吗?如果是这样,那么我不会删除配方,也许在配方表上创建一个“活动”字段并将其设置为非活动状态。或者你仍然可以删除Recipe并将记录保存在RecipeToIngredients表中,但是那个表中的recipe_id值没有任何意义。如果用“他们”你不是指食谱,那么如果你澄清你的意思,那将会有所帮助。