我正在将一些数据加载到关系数据库中,但我和我的同事正在争论哪种格式遵循关系理论和标准。由于我们不是专家,因此我们希望获得一些专家的意见。
(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
有人可以建议哪种格式更理想,并引用数据结构标准和理论进行支持和推理。
提前致谢!
最佳答案
第二个。第一个是 EAV 反模式的实现。
要了解为什么第一个表是一个问题,请假设我们对问题域一无所知。我们只知道目前有两种不同的浮点值,分别标记为GDP和GNP,并且我们想添加第三种,PWT,并且已知PWT的值被限制在范围内
- 0.0
将该数据添加到第一个表中很简单。将约束添加到第一个表中,即 PWT 必须在 0 到 1500 之间,这是一个不同的故事。
向第二个表添加列也很简单。添加检查约束来保证值在正确的范围内既简单又容易。
想象一下,我们现在想要添加第四种值,该值仅限于大于 0 的美元金额。您将如何管理第一个表中的定点值?但是在第二个表中添加该列及其约束非常简单。
关于mysql - 以下哪种数据结构更容易被接受,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9222804/