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

2020 年 12 月 22 日
 Macv1994

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

10451 次点击
所在节点    程序员
84 条回复
stdout
2020 年 12 月 22 日
连 join 都很少用了。关联越少越好
Macv1994
2020 年 12 月 22 日
@skypyb 我是开发了几个自己的小项目之后有这样的疑问,自己的小项目用外键感觉可以省去很多工作量。现在的公司也用外键,但是业务都是公司内容的业务,可能是这个原因导致的吧。上一家公司都是外部业务,可能就是禁止使用外键的原因吧。
Macv1994
2020 年 12 月 22 日
@wupher 嗯嗯 确实使用了外键数据比较难维护 亲身经历的感受
charlie21
2020 年 12 月 22 日
有 ORM 还要什么外键
yujieyu7
2020 年 12 月 22 日
从来不用,mysql 只负责存储就好了,逻辑还是交给应用程序吧
ming7435
2020 年 12 月 22 日
Never
duhui
2020 年 12 月 22 日
@charlie21 PHP 的一个 ORM Doctrine 就在关联的时候加外键啊, 而且还不能禁用
MIUIOS
2020 年 12 月 22 日
大学生才用外键
msg7086
2020 年 12 月 22 日
@tokyo2020 #59 外键和非外键的区别仅仅在于数据完整性约束,和索引没有直接关系。
huobazi
2020 年 12 月 22 日
《学生选课系统》 必须用,不用就挂科了
F281M6Dh8DXpD1g2
2020 年 12 月 22 日
说不能用的可以想象你们的数据有多脏
rexyan
2020 年 12 月 22 日
像 DRF 这种自带的 ORM 的咋整,不用感觉不方便
Macv1994
2020 年 12 月 22 日
@rexyan DRF 没用过不太清楚 Python 的 sqlachemy 不是自带外键的呀
Macv1994
2020 年 12 月 22 日
@huobazi 这种课程的没问题 体量不大 用外键反而更加方便 减少工作量
hejw19970413
2020 年 12 月 22 日
不会用外键
hejw19970413
2020 年 12 月 22 日
如果你的领导很厉害,说这里必须用外键或者说自己感觉这里能用而且用后的结果比不用外键好的太多,那就可以用。
justNoBody
2020 年 12 月 22 日
@abyan1314 #22 数据库死锁一定要小心
kkbblzq
2020 年 12 月 22 日
1. 外键会导致多表关联锁,这对并发场景是挺严重的问题,特别是很多时候性能瓶颈可能就落数据库上,外键无疑雪上加霜。
2. 依赖外键来做完整性虽然省事,但是同时你也耦合了数据库的逻辑,数据库层切换就很麻烦,要做数据层改造也很麻烦,比如你哪天想在上面加一层缓存。
Macv1994
2020 年 12 月 22 日
@kkbblzq 嗯嗯,所以我觉得还是得看场景,不能一概而论。
leeton
2020 年 12 月 23 日
@Macv1994 感觉删数据的时候很不方便,必须得先删有外键那个表,这就很烦。很不自由

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

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

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

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

© 2021 V2EX