论坛数据库的常见规范化结构是将所有帖子存储在一个表中,其中一列定义线程数。要显示线程,我们需要执行 SELECT
with WHERE
线程号子句(按日期排序)。在这种情况下,我们为每个查询处理一个非常长的表。
这真的是存储论坛帖子和主题的最佳方式吗?
stockexchange 项目这样的问答比较复杂,因为除了答案(即与论坛中的帖子相同)之外,每个答案还可以有评论。
对于像 stackoverflow 这样的大型网站,最有效的数据库结构是什么?
最佳答案
它远没有 SO 那么大,但在我的应用程序中,我选择的模型是让每个帖子都有
- 对其父帖子的 FK(根帖子在此列中为空)
- FK 到根帖子(根帖子在此列中有自己的 ID,插入新的根帖子有点尴尬,但有助于查询)
- FK 到他们的论坛
这样可以轻松获取
- 论坛的根帖子(搜索父级为空的帖子)
- 一个线程中的所有消息(搜索具有给定根的所有帖子)
- 以平面模式(按日期)或树模式(因为每个帖子都知道其父级)呈现线程
- 给定论坛中的最新帖子(搜索按论坛分组的最新帖子)
关于mysql - 论坛的规范化数据库结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8080144/