1

我正在做一个项目,我必须处理存储电站仪表读数的大型列表。目前日期存储在下表中。

表 A

Date, Block No, Station 1, Station 2, ....... , Station N (N can go upto 650)
2013-05-21, 10, 23, -45,........ , 57

现在有另一个表 B,它具有从表 A 派生的字段。

表 B

Date, Block No, F1, F2, ....... , FX 
2013-05-21, 10, 23, -45,........ , 57

此处表 B 字段派生如下

  • F1= 站 1 + 站 3,
  • Fx = 站 p + 站 r + 站 w

现在我想改变这种为每个站点和派生字段设置一个字段的方法。我想制作如下表格。

我的表 A

Date, Block, Station_Name, Reading
2013-05-21, 10, Station 1, 23
2013-05-21, 10, Station 2, -45
.
.
.
2013-05-21, 10, Station N, 57

我的问题是:

  • 我提出的规范化设计是否会对处理产生影响?
  • 通常应该如何设计这样的表,最佳实践是什么?
  • 与以前的方法相比,在我更新表 B 的派生字段的方法中,SQL 会更复杂吗?
4

1 回答 1

3

我提议的标准化设计是否会对处理产生影响?

是的。插入和更新会快一点,而选择会慢一点。但是,规范化的数据库设计是关系数据库引擎旨在处理的内容。

一般来说应该如何设计这样的表格,最佳实践是什么?

无论您使用关系数据库还是某些 NoSQL 解决方案,数据库规范化总是合适的。

曾几何时,在关系数据库的古老时代,规范化和性能之间存在权衡。真正优秀的数据库分析师知道在哪里进行这些权衡。

今天,关系数据库引擎能够运行完全规范化的数据库。

与之前的方法相比,我更新表 B 的派生字段的方法中的 SQL 会更复杂吗?

它会有所不同。我不能说它会更复杂。不是每个块检索一行,而是每个块检索 650 行。

如果您总是每块有 650 行,则通过规范化不会获得太多收益。如果行数不定,最多 650 行,您将通过检索您所拥有的内容来获得一点处理。

于 2013-05-22T08:13:10.410 回答