django 的 model 定义中该不该使用 foreignkey

2016 年 7 月 28 日
 ashin

现在的生产中都不允许使用外键、 join 之类的。 django 里面好像都在用 foreignkey ,该避免使用吗?

5646 次点击
所在节点    Python
11 条回复
peter999
2016 年 7 月 28 日
不该用就不会有这功能了
oclock
2016 年 7 月 28 日
如果是正经关系库的设计,问 DBA ,问架构师
如果是大宽表,随意
ericls
2016 年 7 月 28 日
为什么生产环境不能使用 foreignkey ?
holyghost
2016 年 7 月 28 日
反正我们的生产环境不允许使用外键,用程序去保证一致性。
happywowwow
2016 年 7 月 28 日
记得 django 是可以你 model 里定义 foreignkey 但是数据库不用外键.
等你用到 foreignkey 的 model 的时候 他是 lazy 加载的
pixstone
2016 年 7 月 28 日
这个交给 DBA 更合适

有些人认为外键影响性能,有些人是因为手动插入数据的时候 很痛苦。有些人说插入数据的时候 会遇到 因为外键限制插入不了数据的情况。

如果是性能,不太清楚你的什么业务需要数据库级别的性能压榨,有性能问题先打产品狗卡掉不合理的需求先,然后砍架构,然后才是程序猴子 和 DBA

如果数据其他问题,请用找 DBA 调整表结构,让 DBA 来导数据等等。
moosoome
2016 年 7 月 28 日
自己做的小玩意一直用的 Foreignkey ,被你这么一说有点方。。。
wibile
2016 年 7 月 28 日
如果不用 foreign key ,你用 ORM 的时候会很痛苦。。。。然后就会用各种 raw sql ,不好取舍啊
ashin
2016 年 7 月 28 日
@wibile 我觉得应该不会有什么痛苦,只是不再使用外键查询的语法,直接使用 model 的 filter 可以解决
chaleaoch
2016 年 7 月 28 日
@happywowwow 请问可以在详细解释以下吗?搜了一下没搜到。
wibile
2016 年 7 月 28 日
@ashin 多表关联比较复杂的时候,就不是 filter 能满足的了。有外键和没外键写代码效率差别挺大的, ORM 的优势。。。

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

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

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

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

© 2021 V2EX