小编典典

我需要为我的关系表创建代理密钥吗?

sql

我有一个用于多对多实体的关系表。

author_id | book_id

我需要添加relationship_id吗?我应该能够使用两个ID进行识别。

谢谢


阅读 221

收藏
2021-04-28

共1个答案

小编典典

由于您使用的是Doctrine,因此请尽量不要在RDBMS级别上考虑太多(至少不是大部分时间)。

如果您有两个具有ManyToMany关系的实体,则应该忘记代理键。实际上,您应该几乎忽略关系表存在的事实。您仅具有两种相关的实体类型。

现在,如果您需要存储有关关系本身的元数据(例如,将徽章授予用户的日期),那么您将超越一个简单的ManyToMany,并且需要自己创建关系来建模-
通过创建一种新的关系实体(例如UserBadge)。该实体当然会有一个ID。

您正在使用ORM,请考虑实体,而不要考虑表(大多数时候)!

2021-04-28