为什么现在企业里针对多对多关系的数据表很少用外键?难道是级联操作不安全?

0
数据表设计的时候,师兄说尽量不要用外键,在学校里学习数据库的时候老师就是这么教的,两个多对多关系的表,需要再建第三个表来表明关系。为什么在企业里就不能用呢?
已邀请:
1

BAO胖子 - 15年BI经验,涉足电力,快消品,医药,信息服务等行业的BI老兵。 2015-10-22 回答

主要是从性能,运维复杂程度以及编程等方面考虑。
弄太多constraints以后数据出问题的时候处理非常麻烦。
 
而且,基本假定:
1. 本意是源系统数据是referential integrity的,所以DW不用处理。
   其实是,源系统都没搞定的DQ问题,DW也搞不定,索性放脏数据进来吧。
 
2. 本意是ETL程序会处理一部分数据,虽然DB上不做constrants,但程序上我都处理干净了。
   其实是,嗯,是会处理一部分,但数据问题依然严重。
 
3. MDM系统里面这方面就严格得多,所以删条数据累死你。DW就算了吧。
 
如果让我重新选择,我还是不加外键,但会有程序定期搜集数据问题。
1

gogodiy - 天善智能数据库专家、Tableau爱好者 2015-10-23 回答

1.应用外键,增加了数据表之间的关联,不利于扩展。
2.虽然外键可以帮助实现数据一致性,但是等于是把这个压力放到了数据库层面,无形中增加了数据库的压力。
3.数据库本身为了维护外键,会增加开销,会容易出现死锁的现象。
外键更适合数据量小,应用简单的系统。

要回复问题请先登录注册