要不要使用外键?

2013-03-13 10:27:05 +08:00
 darasion
1. 要:
保证数据完整性

2. 不要:
容易开发和维护
7533 次点击
所在节点    MySQL
16 条回复
workaholic
2013-03-13 10:59:39 +08:00
看应用规模了,数据量太大就要考虑性能了
pythonee
2013-03-13 17:07:17 +08:00
我司没有用,完全拿数据库当NoSQL使,奶奶的
zhuf
2013-03-13 17:56:01 +08:00
不要
zenwong
2013-03-13 18:00:21 +08:00
个人认为外键这种东西是理想化情况下的东西,在实际开发中你可能遇到需求上的一些问题,使你无法理想化
zerox
2013-03-13 21:36:43 +08:00
反正我司是不使用外键的,从头到尾没人提过这事,总的来说是有性能影响的,不用的话也没觉得有什么问题。ls说的好,外键是理想化情况下的东西
zer4tul
2013-03-16 04:45:06 +08:00
数据规模小,要求开发效率的话,可以用。
数据规模大的话就不要用了,对执行效率的影响挺大。另外就是dump出来source的时候麻烦。
hilyjiang
2013-03-16 08:57:16 +08:00
1. 要
开发及测试环境使用,有助于保证生产环境中的数据完整性

2. 不要
生产环境中,考虑性能问题,可以删除外键约束
zer4tul
2013-03-16 10:25:01 +08:00
@hilyjiang 开发和测试环境使用外键,但是生产环境不使用,怎样保证生产环境中的数据完整性?没看明白,求解释。
atom
2013-03-16 10:39:57 +08:00
我司也是从来不用外键,我司更看重事务。
binjoo
2013-03-17 09:09:47 +08:00
总感觉外键很麻烦。。
saharabear
2013-03-17 09:20:36 +08:00
咱们这里讨论问题不加前提条件的吗?

银行,金融业务能不加外键吗?

个别时候银行金融业务是开发过程用外键,运行环境部署删除外键。不过大部分都会强制主外键约束。

互联网产品,就几个文章的东西,就算再复杂的文章,基本上为了性能,用冗余,不用外键。但有一些强约束的地方,就必须用外键。
saharabear
2013-03-17 09:21:23 +08:00
补充一下,银行和金融也不只是用DB2的,也有Oracle和MySQL。
wd
2013-03-17 12:41:42 +08:00
外键是用来限制数据完整性的(包括插入和删除的时候),如果你对这个要求没那么高,那么可以不要,还能节省一些性能。
daweiba
2013-03-17 15:38:11 +08:00
i36lib
2016-04-15 12:14:17 +08:00
从 Oracle 企业实施套件( Oracle EBS )学来的经验,不用,只是在代码罗就里面保证这种约束。
i36lib
2016-04-15 12:15:20 +08:00
但是要求文档或者注释要及时跟上,不然难以维护。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/62775

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX