【发布时间】:2016-02-12 19:21:01
【问题描述】:
我正在尝试学习 SQL 和数据库设计,在这种情况下,我需要一些帮助来选择我的数据库的良好设计。我正在使用 C# 和 MySQL。
我在本课中的输入数据包括电表,所有电表都有唯一的标识号,每个电表每小时提供一个值。我有 2013 年及以后的数据,这将在未指定的未来继续。最好的猜测是提前 5 年。大约有 25 000 米,因此每天将有 25e3 * 24 = 600 000 个数据点。我每天通过文件获取一次这些数据。米的数量将缓慢变化,因此每年将有大约 500 次变化,增加和移除米。作为奖励,我想知道何时将值添加到数据库中以计算收集系统的某些性能指标。所以这是每个仪表的输入数据:
- Valuetime(日期时间)
- 值(十进制数据)
- 添加日期(日期时间)
每个仪表都提供一种类型的数据,因此我可以存储具有该数据类型的表格,因此数据本身将包含匿名十进制值。这就是我的问题开始的地方。我尝试了一些不同的设计方法:
- 一个大表,每行包含一小时数据,每米一列。由于大量列而失败,我需要一个单独的同样大的表,其中包含“Date_added”。
- 每米一个表,列 valuetime、value 和 date_added。由于 C# 程序的性能缓慢而失败。
- 分区表(即 table1 = 仪表以 1 开头,依此类推)。这仍然会导致很多列。
- 分区表,其中表 10 = 米以 10 开头,依此类推。这仍然导致许多列。
在向数据库添加数据时,上述所有解决方案都会导致性能相当缓慢。
如果我在 Stack Overflow 和其他地方搜索具有大量列的数据库设计,我总是会找到“标准化!”的答案,但由于我的新手经验,我不知道在我的情况下如何。我有一个唯一的值 (valuetime) 并且我有唯一的仪表 ID,这就是我称我的数据为矩形的原因。
有人可以引导我走向正确的道路吗?
【问题讨论】:
-
删除了
c#标签。试图保持与设计相关而不是离题,并且因为过于宽泛而被关闭
标签: mysql database database-design