1

我收到一条评论说要避免多对多关联,但我找不到给我留下此信息的原始评论/用户。所以我问社区,是否要避免多对多关联,如果是,为什么,还有什么替代方案?

例子:

一家餐厅提供多种类型的汉堡,可以搭配多种不同的调味品。

这不是多对多关联吗?它不需要包含 BURGER 表和 CONDIMENT 表的外键的关系表吗?

提前致谢,

体重

4

4 回答 4

2

如果要对您提到的汉堡/调味品等关系建模,则无法避免 M:N 关联。M:N 关联在本质上没有什么不受欢迎的。是的,他们需要第三张桌子。

人们经常试图在关系上添加额外的属性,错误地将两个 1:N 关联建模为 M:N 关联。也许这就是 OP 关于避免 M:N 关联的意思。

于 2010-10-29T00:13:36.530 回答
1

是的,汉堡和调味品之间的关系是多对多的。是的,您将需要第三个表来链接这两个表。

于 2010-10-28T10:37:11.713 回答
1

这并不是一个确定的答案,但有时我发现我从多对多关系开始 - 例如,在购物网站上,订单到产品。然而,当我开发应用程序时,我发现链接不仅仅是一个链接,它本身就是一个实体,具有它自己的属性和行为;在这种情况下,它将被称为“线”之类的东西。因此,如果我在第一种情况下正确地考虑了这样的事情,那么我就不会做到多对多。

但当然,通常情况并非如此。

于 2010-10-29T00:19:21.803 回答
1

所以我在问社区,是否要避免许多关联

我正在使用的真实世界数据库确实代表了多对多关系。

如果是这样,为什么,还有什么替代方案?

与第三个表(也称为“连接表”)的两个一对多关系,无论如何,这就是您在物理级别表示多对多关系的方式。

于 2010-10-29T03:27:56.513 回答