Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Stackoverflow数据库结构-在表上有类似的情况_C#_Asp.net_Sql Server_Database Design - Fatal编程技术网

C# Stackoverflow数据库结构-在表上有类似的情况

C# Stackoverflow数据库结构-在表上有类似的情况,c#,asp.net,sql-server,database-design,C#,Asp.net,Sql Server,Database Design,stackoverlow数据库结构是否在某处可用 我面临着这样一种情况:表1中有关于某物的信息,表2中有关于表1的数字信息,它们之间的关系为1:n。比如,我们这里有关于堆栈溢出的用户和答案 我需要快速访问数字信息的总和(比如S.O.可以快速访问用户的信誉总和),我想知道我是否在表1上添加一列来存储总和,并在每次更新表2时进行更新,或者是否每次需要该信息时对表2上的所有记录进行总和 S.O.也有同样的情况,似乎处理得很好。我想知道他们使用哪种方法。是的,我们将其反规范化为一个数据库字段,并随着时间

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

我面临着这样一种情况:表1中有关于某物的信息,表2中有关于表1的数字信息,它们之间的关系为1:n。比如,我们这里有关于堆栈溢出的用户和答案

我需要快速访问数字信息的总和(比如S.O.可以快速访问用户的信誉总和),我想知道我是否在表1上添加一列来存储总和,并在每次更新表2时进行更新,或者是否每次需要该信息时对表2上的所有记录进行总和


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

是的,我们将其反规范化为一个数据库字段,并随着时间的推移进行更新。我们过去常常通过执行join/sum来执行recalc(它偶尔会漂移),但这会造成伤害——我们不喜欢它一开始就不同步。所以现在,我们为声誉随时间的变化保留了一个特定的存储—更直接、更准确的历史。

是的,我们将其反规范化为一个数据库字段,并随时间更新。我们过去常常通过执行join/sum来执行recalc(它偶尔会漂移),但这会造成伤害——我们不喜欢它一开始就不同步。因此,现在,我们为信誉随时间的变化保留了一个特定的存储—更直接、更准确的历史记录。

您的情况并不取决于帖子、回复和代表之间的关系。您有一个完全通用的数据库情况,您需要对与标题记录相关的值求和

您已经了解了解决此需求的两种常用方法

  • 当需要值时,使用SQL可用的聚合方法对值求和
  • 添加新行时求和这些值,并将其存储在标题中
  • 两者都有优点和缺点,但主要有一个权衡需要考虑

  • 数据完整性保持(pro),性能受阻(con)
  • 数据可能损坏(con),性能不受影响(pro)
  • 您的情况并不是由帖子、回复和代表之间的关系来定义的。您有一个完全通用的数据库情况,需要对与标题记录关联的值求和

    您已经了解了解决此需求的两种常用方法

  • 当需要值时,使用SQL可用的聚合方法对值求和
  • 添加新行时求和这些值,并将其存储在标题中
  • 两者都有优点和缺点,但主要有一个权衡需要考虑

  • 数据完整性保持(pro),性能受阻(con)
  • 数据可能损坏(con),性能不受影响(pro)

  • 看看右边:或者这里:@Tim SEDE与运营数据并不完全相同。是的,那是什么?上面说我的最后访问日期是2012-03-13看看右边:@Tim SEDE与运营数据并不完全相同,总是一样是的,那是什么?据说我的最后访问日期是2012-03-13,很酷,但是刷新速度非常快,我的意思是刷新间隔应该只有几秒钟。。我不认为你每次都为每个用户运行。例如,您是否有一种机制可以为较小的用户组运行?比如只刷新“登录”用户?很酷,但是刷新速度非常快,我的意思是刷新间隔应该只有几秒钟。。我不认为你每次都为每个用户运行。例如,您是否有一种机制可以为较小的用户组运行?比如说只刷新“登录”用户?谢谢Jamiec,我知道这些用户的优点和缺点,而且是正确的,但我的问题是S.O.是如何做到的?因为它看起来做得很好。谢谢Jamiec,我知道它的优点和缺点,而且你是对的,但我的问题是S.O.是如何做到的?因为它似乎做得很好。