以下哪种数据结构更容易接受?为什么?

时间:2012-02-10 04:44:15

标签: mysql sql database-design relational-database

我正在将一些数据加载到关系数据库中,但我的同事和我正在就关系理论和标准遵循哪种格式进行辩论。由于我们不是专家,我们希望得到一些专家意见。

(1)第一种格式:

Region Time   Variable       Value

  1      1      GDP      -0.46113508
  1      2      GDP       0.72478547
  1      3      GDP       0.66753244
  1      1      GNP       1.07924683
  1      2      GNP      -0.45020407
  1      3      GNP       0.25669344
  2      1      GDP       1.00576177
  2      2      GDP      -0.21365634
  2      3      GDP      -0.47925263
  2      1      GNP      -1.27190722
  2      2      GNP      -0.26071341
  2      3      GNP      -0.91423615
  3      1      GDP      -1.32393360
  3      2      GDP      -1.13996826
  3      3      GDP      -2.16641876
  3      1      GNP       1.19636349
  3      2      GNP      -0.22511481
  3      3      GNP       0.49509021
  4      1      GDP      -0.85892203
  4      2      GDP      -0.46614367
  4      3      GDP       0.81645666
  4      1      GNP      -0.45178976
  4      2      GNP       0.41263984
  4      3      GNP       0.26416377
  5      1      GDP       0.40089081
  5      2      GDP       0.14561550
  5      3      GDP       0.52636087
  5      1      GNP       0.64368706
  5      2      GNP       1.22117207
  5      3      GNP       0.06021922

(2)第二种格式:

Region Time        GDP         GNP

  1    1 -0.4611351  1.07924683
  1    2  0.7247855 -0.45020407
  1    3  0.6675324  0.25669344
  2    1  1.0057618 -1.27190722
  2    2 -0.2136563 -0.26071341
  2    3 -0.4792526 -0.91423615
  3    1 -1.3239336  1.19636349
  3    2 -1.1399683 -0.22511481
  3    3 -2.1664188  0.49509021
  4    1 -0.8589220 -0.45178976
  4    2 -0.4661437  0.41263984
  4    3  0.8164567  0.26416377
  5    1  0.4008908  0.64368706
  5    2  0.1456155  1.22117207
  5    3  0.5263609  0.06021922

有人可以参考数据结构标准和理论,通过支持和推理,更好地建议哪种格式更好。

提前致谢!

1 个答案:

答案 0 :(得分:5)

第二个。第一个是EAV反模式的实现。

要了解为什么第一个表存在问题,请想象我们对问题域一无所知。我们只知道目前有两种不同的浮点值,标记为GDP和GNP,我们想要添加第三种PWT,并且已知PWT的值仅限于范围

  • 0.0< PWT< = 1500.0

将该数据添加到第一个表格很简单。将约束添加到第一个表中,该PWT必须介于0到1500之间,这是另一回事。

向第二个表添加列也很简单。并且添加检查约束以保证值在正确的范围内既简单又容易。

想象一下,我们现在想要添加第四种价值,一种限于美元金额的价值> 0.您将如何在第一个表中管理定点值?但是在第二个表中添加该列及其约束很简单。