大家在建表的时候都使用外键吗?

2020-12-22 10:53:45 +08:00
 Macv1994

在上一家公司不准使用外键,新入职一家公司,发现数据表中使用了很多外键,不知道大家日常是怎么操作的?

8306 次点击
所在节点    程序员
84 条回复
sxfscool
2020-12-22 10:58:42 +08:00
很久没用过外键了
dddz97
2020-12-22 11:00:10 +08:00
基本没用过
xcai007
2020-12-22 11:03:54 +08:00
可以使用外键
liuzhaowei55
2020-12-22 11:04:13 +08:00
不用外键,甚至已经比较少使用主键关联了,使用业务唯一对象关联比较多
Macv1994
2020-12-22 11:05:32 +08:00
@liuzhaowei55 感觉外键有时候还挺方便的😹😹😹
yisheyuanzhang
2020-12-22 11:07:51 +08:00
没用过外键。。。
liuzhaowei55
2020-12-22 11:08:00 +08:00
@Macv1994 使用主键外键后期排查问题不太方便,要先去原表查出主键再去查外键数据,要不就是一个大 join,
SjwNo1
2020-12-22 11:09:56 +08:00
可以用但不用
WhoMercy
2020-12-22 11:12:58 +08:00
V2 因为外键、范式的问题讨论 /争吵过好几次了...

我的意见是,自己不确定 能不能用、需不要需要用 的时候,就不用
zjsxwc
2020-12-22 11:14:04 +08:00
外键的目的是为了数据的完整性和一致性,

对于多表之间需要强数据一致性和完整性要求业务,且数据库会被不同语言或不同项目连接时, 我会用外键,因为不能保证别人或别的项目一定会知道,我这个项目要求哪些表之间数据是必须要有的。

但绝大部分一般业务我不会加数据库外键,因为大部分情况下,我们都在同一个项目下,使用同一套 编程语言别写的业务代码,来处理业务,而在业务层面,使用编程语言来约束更具有灵活性。
Macv1994
2020-12-22 11:14:20 +08:00
@WhoMercy 我自己写的博客就用了,感觉很方便。但是不知项目体量大了,体验是否会变差?
Macv1994
2020-12-22 11:17:18 +08:00
@zjsxwc 嗯嗯,是这样。但是如果到业务层面去处理,是不是会增加代码量?
SkyLine7
2020-12-22 11:19:11 +08:00
用外键级联很麻烦的,现在都拿关联字段当做逻辑外键
Tink
2020-12-22 11:19:48 +08:00
少用
acmore
2020-12-22 11:20:59 +08:00
现在的业务并不喜欢让数据库做太多掌控之外的事情,外键算是最不讨喜的一个。
以及外键在配合某些 ORM 框架使用时可能会有暗坑,你无法预设 "outer.inner" 这种写法一定会缓存结果,背后可能会有一堆查询在,还是要提前查询好 inner 再给 outer 用,那还不如不要外键。
xuxuzhaozhao
2020-12-22 11:22:09 +08:00
@WhoMercy 同意!
zjsxwc
2020-12-22 11:32:12 +08:00
@Macv1994 #12

这倒没有,不用数据库外键,
不代表你自己编程语言业务里面不用外键,这种外键,就是“软外键”
securityCoding
2020-12-22 11:34:24 +08:00
基本没用过了 , 一般通过中间表解决
cco
2020-12-22 11:45:08 +08:00
可以用外键,但是很久不用了。你觉得需要约束就用一下,没必要就不需要。
DarkCat123
2020-12-22 11:49:52 +08:00
测试环境用外键,生产不用。

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

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

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

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

© 2021 V2EX