首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >违反一对多关系的后果是什么?什么时候使用多对多的关系?

违反一对多关系的后果是什么?什么时候使用多对多的关系?
EN

Stack Overflow用户
提问于 2016-08-31 04:36:18
回答 2查看 287关注 0票数 0

考虑到订单记录的数量比标签大很多数量级:

  1. 我读过这样一个问题的评论:如图所示,插入order# 68不会造成任何麻烦,但如果我想通过某些标签查询订单,多到多更合适、更方便/更有效,否则在一对多的订单中,必须检查每一个订单,才能知道它的标签是怎样的,这是真的吗?
代码语言:javascript
复制
- a.    I also recall having read that many-to-many relationships cost the most in resources and don’t perform well yet also read claims that the performance losses are negligible and not worth the risk and overhead of handling orphan records of many-to-many relationships, any comments?
- b.    Based on other readings I was convinced to model a many-to-many via making 2 one-to-many tables with a joint table of FKs, if there is no longer a many-to-many but 2 one-to-many tables are the aforementioned cons of many-to-many avoided? 

  1. 在我在另一个论坛上发布的类似问题中,我被告知我甚至不能插入order# 68,这样做会导致引用完整性问题,这几乎是没有意义的,这也是真的吗?

我想摆脱我读过的矛盾和自动矛盾的帖子。

EN

回答 2

Stack Overflow用户

发布于 2016-08-31 05:15:03

世界是一个复杂的地方,你的问题假设所有问题都有一个答案。事实上,对于你所问的问题,答案是一对多的。

  1. 您描述的插入可能会导致问题,或者不会导致问题。这取决于是否将规则添加到数据库以强制引用完整性。有些人喜欢做这样的事情--我不喜欢。我有一个数据模型,上面写着一段关系是1比多,我认为人们会遵循它,因为如果他们不这样做的话,它就会破裂。让数据库强制执行这条规则只会使事情变慢。在我看来,最好是让每件事每年都中断一次,找出问题,用湿面条鞭打新程序员,然后继续前进。

至于剩下的1,这取决于你正在处理的数据有什么意义--谁可以说在一般情况下。

  1. 是的,可以让数据库阻止您进行插入,但我不建议以这种方式设置数据库。除非Order#是一个被定义为唯一的索引--在这种情况下,在尝试重复插入时它会出现错误。
票数 0
EN

Stack Overflow用户

发布于 2016-08-31 08:53:33

根据您的形象,我要说,tblTAG和tblOrder之间有一对多的关系。在这张图片中,我没有看到多到多的关系,添加这些记录根本不会产生任何问题。

tblTAG.TagID 1可以在tblORDER中存在任意多次,而不存在任何问题。也是一个类似于

代码语言:javascript
复制
select * from tblORDER where TagID = 1

执行速度非常快,因为tblORDER中的外键将创建一个索引。

那么,为什么这里需要多到多的关系呢?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39240823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档