我应该在这个例子中使用外键吗?

时间:2017-08-06 19:09:14

标签: mysql sql database database-design relational-database

我有一个(示例)数据库,由三个表组成:user, car, keyuser可以有多个cars,每个car可以有多个keys。截至目前,carkey表格都有一个外键与usercar(下方)相关联 - 这样就可以了。

Database Schema Image

我的问题是,如果汽车不再存在并被删除,这并不一定意味着钥匙不再存在。然而,一旦汽车被删除,就无法将钥匙与用户相关联 - 因为钥匙的外键引用的汽车现在已经消失。

我意识到我可以将用户ID存储在每个键旁边,但我认为这超出了拥有外键的地步,并且不是最好的方法。

那么,围绕这个问题最可接受的方式是什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

由于密钥仍然存在并且有一些含义(因为您不想删除密钥), 我会“软删除”汽车,例如。在表 car 中添加一个“已删除”列。