论坛数据库的常见规范化结构是将所有帖子存储在表中,其中列定义了线程号。要显示线程,我们需要为线程号执行SELECT
WHERE
子句(按日期排序)。在这种情况下,我们为每个查询处理一个非常长的表。
这真的是存储论坛帖子和帖子的最佳方式吗?
对于像Q& A这样的股票交易项目来说更复杂,除了答案(即与论坛中的帖子相同),每个答案都可以有评论。
像stackoverflow这样的大型网站最有效的数据库结构是什么?
答案 0 :(得分:2)
它远不像SO那么大,但在我的应用程序中,我知道的模型是让每个帖子都有
这样可以轻松搞定
答案 1 :(得分:2)
更快的查询方式是trie和嵌套集合之间的混合,即celko-tree。例如,您可以使用线程id为嵌套集查询构建具有附加左右id的三元trie。复杂的是从这棵树插入或删除。或者你可以带一个带有哈希键的kart-trie来搜索左右。但我认为单独的嵌套可能已经足够了,因为那时id是有序的。
答案 2 :(得分:1)
如果您接受论坛是另一种形式的树结构 - 我建议使用嵌套的set或closure表来创建帖子之间的关系。 nested set closure table - 无法找到关闭的好链接 - 抱歉!
简单地存储线程和父ID可能会让事情变得有点棘手......