为什么现在企业里针对多对多关系的数据表很少用外键?难道是级联操作不安全?
0
数据表设计的时候,师兄说尽量不要用外键,在学校里学习数据库的时候老师就是这么教的,两个多对多关系的表,需要再建第三个表来表明关系。为什么在企业里就不能用呢?
没有找到相关结果
重要提示:提问者不能发表回复,可以通过评论与回答者沟通,沟通后可以通过编辑功能完善问题描述,以便后续其他人能够更容易理解问题.
2 个回复
BAO胖子 - 15年BI经验,涉足电力,快消品,医药,信息服务等行业的BI老兵。 2015-10-22 回答
赞同来自: Kaiserts
弄太多constraints以后数据出问题的时候处理非常麻烦。
而且,基本假定:
1. 本意是源系统数据是referential integrity的,所以DW不用处理。
其实是,源系统都没搞定的DQ问题,DW也搞不定,索性放脏数据进来吧。
2. 本意是ETL程序会处理一部分数据,虽然DB上不做constrants,但程序上我都处理干净了。
其实是,嗯,是会处理一部分,但数据问题依然严重。
3. MDM系统里面这方面就严格得多,所以删条数据累死你。DW就算了吧。
如果让我重新选择,我还是不加外键,但会有程序定期搜集数据问题。
gogodiy - 天善智能数据库专家、Tableau爱好者 2015-10-23 回答
赞同来自: Kaiserts
2.虽然外键可以帮助实现数据一致性,但是等于是把这个压力放到了数据库层面,无形中增加了数据库的压力。
3.数据库本身为了维护外键,会增加开销,会容易出现死锁的现象。
外键更适合数据量小,应用简单的系统。