Stackoverflow DB结构 - 在表上有类似的情况

时间:2012-05-03 11:16:22

标签: c# asp.net sql-server database-design

是否可以在某处使用stackoverlow数据库结构?

我面临的情况是,我有Table1有关于某事的信息,Table2有关于Table1的1:n关系的数字信息。就像我们在堆栈溢出中有用户和答案一样。例如。

我需要快速访问数字信息的总和(比如SO可以快速访问用户的信誉总和),我想知道我是否在Table1上添加一列来存储总和并在每次table2更新它更新或如果我每次需要该信息时总结table2上的所有记录。

S.O。具有相同的情况,似乎处理得很好。我想知道他们使用哪种方法。

2 个答案:

答案 0 :(得分:1)

是的,我们将其归一化到我们随时更新的数据库字段中。我们使用通过执行连接/求和来进行重新计算(它会偶尔漂移),但这很痛苦 - 我们不喜欢它首先不同步。现在,我们保留一个特定的商店,以便随着时间的推移改变声誉 - 更直接,更准确的历史。

答案 1 :(得分:0)

您的情况由帖子,回复和代表之间的SO中的实现来定义。您有一个完全通用的数据库情况,您需要对与标题记录关联的值进行求和。

您已经热衷于解决此要求的两种常用方法

  1. 当您需要值
  2. 时,使用SQL可用的聚合方法对值求和
  3. 在添加新行时对值求和,并将其存储在标题
  4. 两者都有利弊,但主要有1个权重需要考虑

    1. 维护数据完整性(pro),性能受阻(con)
    2. 数据损坏可能(con),性能不受阻碍(专业)