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

标签 sql postgresql activerecord

好的,对于奇怪的措辞感到抱歉。

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

这就是问题所在。我希望能够在不删除配料的情况下删除食谱,但我希望配料仍然属于他们。

建议?

最佳答案

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

你说你想删除食谱而不删除成分,所以你可以用这个设置来做到这一点。删除食谱时,可以删除RecipeToIngredients表中的记录,不能删除Ingredients表中的记录。

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

关于sql - 无法删除某些行的数据库关系建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41536673/

相关文章:

MySql 查询运行但在 sp 中不起作用

sql - 像Excel一样在SQL中修改负数

ruby-on-rails - Activerecord 的记录大小(以字节为单位)

mysql - ActiveRecord:列 'nivelAcceso' 不能为空

sql - 根据另一列中的文本更新数据库中的列?

postgresql - Psql Docker : could not connect to server: No such file or directory

ruby-on-rails - Rails 协会不会触发 Postgres 查询并返回 Nil

python - Django 和 psycopg2 : FATAL: password authentication failed for user

ruby-on-rails - rake 数据库 :seed generates ArgumentError: missing keywords: from, 到

sql - Hive - 检查表中每一行中的数组是否包含另一个表中列中的任何匹配数据