0

我认为 SO 和其他问答系统是高级 TSQL 技术的完美示例。我想知道 SO 和其他问题/答案系统如何与数据库表一起使用。我对什么是 TSQL 选择问题列表特别感兴趣,您还想在其中显示投票数和答案。

question将被指定为

id       int 
title    varchar
id_user  int

表格votes,以便您可以监控用户对特定问题的投票

id_user       int
id_question   int
vote          int

表“答案”与问题的答复

id           int
id_parent    int

什么会选择看起来像这样得到结果question

id                 int
title              varchar
votes_count        int
answers_count      int

我在想两种方法

  1. 表格question将根据每次投票或回答重新计算,votes_countanswers_count直接在question表格中更新表格字段。这意味着表question也会votes_count int, answers_count int
  2. 创建将加入的选择,count直接在votesanswers表中计算并仅在表中显示结果question。每次选择都计算所有投票和答案记录会损失多少速度?

谢谢。

4

1 回答 1

0

SO 只是为此使用了 3 个表 - 问题、投票和答案,并在不进行任何缓存的情况下加入它们(问题表中没有 answer_cnt / vote_cnt 列)。

性能损失应该没什么好担心的——毕竟,SO“只有”大约 3.4 个 mio 问题(根据 SO 起始页),对于现代 RDBMS 来说,这确实不是很多数据。

于 2012-07-20T14:08:21.083 回答