为什么 Discourse 数据库中没有更多外键?

I saw discourse db table schema only has several foreign keys, is there any reason to not use the foreign keys in most tables?

你好,
我在查看表格后,来到论坛询问完全相同的问题。

根据我有限的了解,这些约束可能是在 Rails 层面通过模型来处理的。但我希望在这方面了解更多。

我们正在思考这个问题,但尚未做出明确决定。

我们中有些人主张在 PostgreSQL 中定义所有外键,认为其带来的益处远大于风险。另一些人则认为,此时进行如此剧烈的变更存在风险。

外键确实会给数据库引入约束。例如,如果 category_users 表有一个约束,规定 category_id 必须是 categories 表中有效的 id,那么每次向 category_users 插入数据时,都需要进行校验,这会带来一定的开销。而我们目前存在大量复杂的依赖关系。

总之,我们已意识到这一顾虑。