Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.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
Sql 具有相同结构和相似数据的表_Sql_Database_Database Design_Self Referencing Table - Fatal编程技术网

Sql 具有相同结构和相似数据的表

Sql 具有相同结构和相似数据的表,sql,database,database-design,self-referencing-table,Sql,Database,Database Design,Self Referencing Table,这是一个关于最佳实践的问题。 我正在开发一个系统,我将收集一些测量值(称为HR和RR),并计算这些测量值的平均值。现在对于用户界面,我们只对这些平均值感兴趣,但对于以后的深入数据分析,我们需要所有单独的测量值(导出到matlab)以及所有平均计算值(不要问-用户要求,如果需要,我只会保存单独的测量值并在以后计算平均值) 以下是有关平均计算等的详细信息: -HR:我们每500-1500ms获得一次读数(变量)。我们根据4-12个读数计算平均值(取决于读数之间的时间)。 -RR:我们每3-17秒获得

这是一个关于最佳实践的问题。
我正在开发一个系统,我将收集一些测量值(称为HR和RR),并计算这些测量值的平均值。现在对于用户界面,我们只对这些平均值感兴趣,但对于以后的深入数据分析,我们需要所有单独的测量值(导出到matlab)以及所有平均计算值(不要问-用户要求,如果需要,我只会保存单独的测量值并在以后计算平均值)

以下是有关平均计算等的详细信息:
-HR:我们每500-1500ms获得一次读数(变量)。我们根据4-12个读数计算平均值(取决于读数之间的时间)。
-RR:我们每3-17秒获得一次读数(变量)。我们根据2-3个读数计算平均值(取决于读数之间的时间)

对于两者,我们都保存:
-平均值(十进制)以及从用于平均计算的读数中首次读取的时间戳。
-每个读数(十进制)以及读取时间戳

正如你所见,平均计算和个别读数的数据是相同的。与HR/RR相同-数据相同,可以表示为:
----
|阅读|
----
|时间戳|
|值|
-————————————

由于我们在不同的时间间隔等计算数据,我们不能将HR+RR作为一行存储在数据库中,我们需要单独的行或表。
问题是:
1.为HR和RR创建单独的表格是更好的做法吗?或者最好将它们存储在与单独行相同的表中,并用一列指示给定行是HR还是RR?
2.为每个单独的读数创建单独的表格是否更好?还是创建自引用表更好,在该表中,每个单独的读取将引用同一表中的一行,并使用该行的平均计算值

我对DB设计不是很在行,我不确定在这种情况下使用的最佳实践是什么。
我还考虑使用MongoDB(而不是SQL数据库-可能是MSSQL,因为该项目是基于C#的),这可能会使生活更轻松,因为我可以在一个文档中嵌入一组单独的测量值,并进行平均计算等。据我所知,写入Mongo的速度非常快


有什么建议吗?谢谢。

听起来像是软弱无力的,这要看情况了。对于你的第一个问题,你可以非常合理地将其视为一个阅读表或两个更具体的表。这就是说,几年前我会说一张桌子,但多年来我一直倾向于两张桌子。首先,您的键值变得更加具体——(读取)与(读取+类型)。否则,您会发现自己在睡眠中添加了“And ReadType=…”。当有人决定某个读数需要达到不同的精度或存储技师所穿衬衫的颜色时,它还为您提供了更大的灵活性

关于第二个问题,观点也会有所不同,但我倾向于阅读集的父表和个人阅读的细节。自我参照表感觉它赢得了一些风格点,但根据您试图获得的答案,重新加入自己可能会变得棘手。此外,您最终选择的DB平台可能包括,也可能不包括一些专门的选项,如MSSQL的CTE,它们可以解决这些复杂性

总的来说,您可能有:

  • ReadingSet(ReadingSetID[,需要的其他信息])
  • ReadingR(ReadingRID、ReadingSetID、值、时间戳)
  • ReadingH(ReadingHID、ReadingSetID、值、时间戳)

我想你的论点是有道理的,这也正是我所想的。谢谢