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

标签 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

有人可以建议哪种格式更理想,并引用数据结构标准和理论进行支持和推理。

提前致谢!

最佳答案

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

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

  • 0.0

将该数据添加到第一个表中很简单。将约束添加到第一个表中,即 PWT 必须在 0 到 1500 之间,这是一个不同的故事。

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

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

关于mysql - 以下哪种数据结构更容易被接受,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9222804/

相关文章:

MySQL-python:SELECT 返回 'long' 而不是查询

mysql - 构建一个发送电子邮件的交互式网站和数据库

sql - SQL 中带有停止条件的递归 SELECT?

mysql - 在 mysqlWB 中同步我的模型时出错

c# - 何时以及如何将任何状态设置为 "Expired"?

database-design - 挣扎于 nosql/Parse 数据模型设计

mysql - 如何使相似和不同

php - 我在我的 ubuntu 上安装了 phpmyadmin 但它不工作

MySQL查询效率建议

database - SQL Server 数据库架构