Sql 数据库体系结构:在一列中存储时间或距离

Sql 数据库体系结构:在一列中存储时间或距离,sql,database-design,decimal,Sql,Database Design,Decimal,这是另一个问题 想象一下,一张表格存储田径成绩。跑步项目的结果以秒为单位,野外项目的结果以米为单位。在数据库中构建这个的正确方法是什么 我们目前有运动员\u id INT事件\u id INT结果十进制(10,3)。我们将时间转换为秒,并将米存储为米。有更好的方法吗 我会为不同的度量使用单独的列:时间十进制(10,3)距离十进制(10,3)我会为不同的度量使用单独的列:时间十进制(10,3)距离十进制(10,3)这对我来说似乎很好,部分原因是任何比较或聚合--max,min,avg——无论如何,

这是另一个问题

想象一下,一张表格存储田径成绩。跑步项目的结果以秒为单位,野外项目的结果以米为单位。在数据库中构建这个的正确方法是什么


我们目前有
运动员\u id INT事件\u id INT结果十进制(10,3)
。我们将时间转换为秒,并将米存储为米。有更好的方法吗

我会为不同的度量使用单独的列:
时间十进制(10,3)距离十进制(10,3)
我会为不同的度量使用单独的列:
时间十进制(10,3)距离十进制(10,3)
这对我来说似乎很好,部分原因是任何比较或聚合--max,min,avg——无论如何,值的集合只在特定事件类型的上下文中有效

我假设会有另一个值来指示为该事件或事件类型存储该值的单位

我想,你可能还想存储分数、距离和时间


我也不相信显示一个漂亮的值,因为你可能想要国际化,或者以不同的格式或单位显示它。它可能是按需计算的。

这对我来说似乎很好,部分原因是任何值的比较或聚合(max、min、avg)都只在特定事件类型的上下文中有效

我假设会有另一个值来指示为该事件或事件类型存储该值的单位

我想,你可能还想存储分数、距离和时间


我也不相信显示一个漂亮的值,因为你可能想要国际化,或者以不同的格式或单位显示它。它可能是按需计算的。

构建此架构的正确方法是停止考虑输入数据,开始考虑如何使用数据。如果您要做的只是显示结果,那么将其存储在包含测量值的nvarchar字段中就可以了。在您认为可能需要计算时优化报告。如果向数据库添加额外信息以使报告更容易需要额外的四分之一毫秒,那就比每次查询数百万条记录表并对所有记录进行计算需要额外的分钟/小时要好得多

如果您想进行计算,或者比较不同比赛或项目的结果,那么您需要考虑存储数据的最简单方法,以便进行计算

在这种情况下,您不希望在报告中执行任何转换。您需要执行的任何转换都应该在插入记录时执行,而不是在查看大型记录表并执行报告或分析查询时执行

在这种情况下,在单独的字段中存储开始时间、结束时间、计算时间和距离通常是值得的。根据事件的不同,您可能需要每人存储多个记录。我会将计时外项目、距离项目以及任何基于裁判得分的项目(如盛装舞步或滑冰,但我不确定田径场是否有任何此类项目)从原始的偶数表中分离出来,分为单独的子表,因为您希望如何处理每种类型的信息是不同的


如果您想同时执行这两项操作,那么只需使用nvarchar或varchar字段查询结果,然后使用单独的字段以计算形式存储结果,这可能是值得的

正确的设计方法是停止考虑输入数据,开始考虑如何使用数据。如果您要做的只是显示结果,那么将其存储在包含测量值的nvarchar字段中就可以了。在您认为可能需要计算时优化报告。如果向数据库添加额外信息以使报告更容易需要额外的四分之一毫秒,那就比每次查询数百万条记录表并对所有记录进行计算需要额外的分钟/小时要好得多

如果您想进行计算,或者比较不同比赛或项目的结果,那么您需要考虑存储数据的最简单方法,以便进行计算

在这种情况下,您不希望在报告中执行任何转换。您需要执行的任何转换都应该在插入记录时执行,而不是在查看大型记录表并执行报告或分析查询时执行

在这种情况下,在单独的字段中存储开始时间、结束时间、计算时间和距离通常是值得的。根据事件的不同,您可能需要每人存储多个记录。我会将计时外项目、距离项目以及任何基于裁判得分的项目(如盛装舞步或滑冰,但我不确定田径场是否有任何此类项目)从原始的偶数表中分离出来,分为单独的子表,因为您希望如何处理每种类型的信息是不同的


如果您想同时执行这两项操作,那么只需使用nvarchar或varchar字段查询结果,然后使用单独的字段以计算形式存储结果,这可能是值得的

一旦数据被存储,您打算如何处理它?您是在执行可能会分析多个事件之间差异的查询,还是只显示一个字段?用于比较性能的查询-排序ASC、MAX等。返回结果后,通过计算将字段转换为漂亮的显示。我们目前还有一个字段我忘了包括
result\u display VARCHAR
,这是result的漂亮打印版本。您打算如何处理这些数据