我希望进行多次不同的实验。在每次试验之后,我得到了一组“大”的输出统计数据--比方说,1000。我想将我的实验结果存储在一个表中,但是最好的方法是什么呢?
选项1
有一个包含1000列的表。看起来不是个好主意。如果某一天的统计数超过了最大列数怎么办?
选项2
有一个包含三列的表。假设ID、StatisticType和StatisticValue。这样,您就可以获得任意数量的统计数据。然而,读取单个实验的统计数据变得更加复杂。此外,如果不同的统计数据是不同的数据类型怎么办?
有什么建议吗?
发布于 2008-10-03 20:51:20
选项2,ID、TrialID、StatisticID、StatisticValue
有了正确的索引,它将执行得相当好(在SQL Server2005中,您可以使用PIVOT相当容易地获得列上的值)。
当统计数据是不同的数据类型时,问题就变得更加有趣了,但在许多情况下,我只是增大了数据类型(有时整数只是在钱字段中结束)。对于其他不兼容的类型,我认为最好的设计是为每种类型单独的表,但我也见过多列或自由格式的文本列。
发布于 2008-10-03 21:07:08
我赞同科迪的回答(here),并补充了一些想法和解释。
表的关键字将是trialID,statisticType。每个试验的每个统计数据都有一行,每个试验有1000行。要获取单个实验的值,请选择特定trialID的行(如matli所示。
您可以添加一个“试验大师”表,每个试验只有一行(trialID作为关键字),其中包含相关信息(日期、时间、注释、人员...)关于那次特殊的审判。这将允许基于试验属性进行分组和分析。例如,上午的试验表现与下午的试验不同,还是泰山的试验与简的试验不同?
您还可以添加一个"Stat Master“表,该表为每个statisticType都有一行,并且包含有关统计信息的属性。如果不同的统计数据具有不同的属性,或者如果您想对某些统计数据进行分组,这可能很有价值。
玩得开心!
发布于 2008-10-03 20:55:35
关系数据库中的列是存储在搜索、排序和其他信息处理中引用的数据的好地方。如果要存储大量的值,可以使用其他一些格式,比如XML,并将它们全部存储在一个列中。在这种情况下,XML将为您提供可读性、可维护性、灵活性甚至一些可搜索性(SQL Server 2005+)。
https://stackoverflow.com/questions/168833
复制相似问题