0

我几乎没有后端和数据库设计的经验,所以我想知道,尽量减少数据库中的外键数量是一种好习惯吗?

例如,让我们考虑登录搜索网站:

USER --hasA--> SESSION --makes--> QUERY

在这种情况下,用户和会话之间是一对多的关系,而会话和查询之间是一对多的关系。session 有一个 user_id 的外键和 query 有一个 session_id 的 foreign_key 是有意义的,但是查询表是否应该有 user_id 的外键?为什么或者为什么不?

提前致谢!

4

2 回答 2

2

添加user_idtoQUERY会使数据库变得多余。这就是为什么这主要是不好的做法。在极端情况下(很少),它可能是必要的性能优化。

最小化外键的数量通常不是设计目标,因为它没有任何帮助。

典型的设计目标是拥有一个最自然地为业务领域建模的干净数据库。从这个意义上说,不要添加user_idto QUERY。但绝对添加所有有意义的 FK。这确实为开发成本和应用程序可靠性提供了明显的好处。

于 2012-12-24T12:00:07.973 回答
1

让我们考虑一个极端的例子来展示这种方法的后果。如果将此解决方案应用于模型中的所有表会发生什么?让我们用一些额外的表格来扩展你的模型,看看它带来了什么:

草案

现在是否清楚它与正确的数据库模式有何关系?

于 2012-12-24T14:58:01.837 回答