我收到一条评论说要避免多对多关联,但我找不到给我留下此信息的原始评论/用户。所以我问社区,是否要避免多对多关联,如果是,为什么,还有什么替代方案?
例子:
一家餐厅提供多种类型的汉堡,可以搭配多种不同的调味品。
这不是多对多关联吗?它不需要包含 BURGER 表和 CONDIMENT 表的外键的关系表吗?
提前致谢,
体重
如果要对您提到的汉堡/调味品等关系建模,则无法避免 M:N 关联。M:N 关联在本质上没有什么不受欢迎的。是的,他们需要第三张桌子。
人们经常试图在关系上添加额外的属性,错误地将两个 1:N 关联建模为 M:N 关联。也许这就是 OP 关于避免 M:N 关联的意思。
是的,汉堡和调味品之间的关系是多对多的。是的,您将需要第三个表来链接这两个表。
这并不是一个确定的答案,但有时我发现我从多对多关系开始 - 例如,在购物网站上,订单到产品。然而,当我开发应用程序时,我发现链接不仅仅是一个链接,它本身就是一个实体,具有它自己的属性和行为;在这种情况下,它将被称为“线”之类的东西。因此,如果我在第一种情况下正确地考虑了这样的事情,那么我就不会做到多对多。
但当然,通常情况并非如此。
所以我在问社区,是否要避免许多关联
我正在使用的真实世界数据库确实代表了多对多关系。
如果是这样,为什么,还有什么替代方案?
与第三个表(也称为“连接表”)的两个一对多关系,无论如何,这就是您在物理级别表示多对多关系的方式。