是否要避免许多关系,如果是,那么替代方案是什么?

时间:2010-10-28 10:04:15

标签: hibernate orm datamodel

我留下了一个评论,要避免许多协会,但我找不到原始评论/用户给我这个信息。所以我要求社区,要避免许多协会,如果是这样,为什么,又有什么选择呢?

示例:

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

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

提前致谢,

BW

4 个答案:

答案 0 :(得分:2)

M:如果想要模仿你提到的汉堡/调味品之类的关系,就无法避免N个关联。 M:N关联没有任何内在的不可取之处。是的,他们需要第三张桌子。

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

  

所以我要求社区,要避免许多协会

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

  

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

与第三个表(又称“连接表”)的两个一对多关系,无论如何,你在物理层面上表示多对多关系。