【问题标题】:Best method for storing monthly data in a database?在数据库中存储每月数据的最佳方法?
【发布时间】:2008-12-05 00:08:14
【问题描述】:

我有一个正在更新的旧版应用程序。数据库中的几个表保存月度信息。这些表基本上每年有一行,每个月有 12 个字段。我想知道这是否是存储每月数据的最佳方式。每个月都有记录会更好吗?虽然我认为从年份的角度来看会有更多的重复,并且每个月都会附加 id,但这可能可以忽略不计。对于单一记录方法,编码似乎更容易。并不是说它有很大的不同,但我使用的是 PHP/MYSQL。

对此有最佳实践吗?

【问题讨论】:

    标签: database-design


    【解决方案1】:

    当您考虑创建和使用数据时,每月记录更有意义。

    你愿意:

    每个月插入一行

    更新一行并编写代码以确定要设置哪一列?

    你愿意:

    SELECT sum(TotalSold) WHERE MonthColumn 介于 5 和 7 之间

    ...我没有那么多时间... ;-)

    【讨论】:

      【解决方案2】:

      我认为这取决于您想对数据做什么。

      如果您总是想拉回一整年的数据,那么每月一个字段是有意义的。

      如果您想加入月度数据(例如 SELECT total_sales *monthly.tax),那么每月一行就是要走的路。

      【讨论】:

        【解决方案3】:

        您是否要回答诸如“我们在 2006 年 5 月到 2008 年 11 月之间销售了多少个小工具?在这种情况下,月度记录(假设您存储月份和年份)要容易得多得多查询,

        【讨论】:

          【解决方案4】:

          我认为您应该以更规范的方式存储数据——每月一条记录。对数据的要求可能会发生变化,但您始终可以通过 SQL 语句获取必要的数据。

          【讨论】:

            【解决方案5】:

            更好(更规范化)将有两个表,一个用于年度数据,每年一行,一个用于每月数据,每个月一行,以及一年的列......

            【讨论】:

            • 复制数据不会导致标准化。
            • @derobert,你的意思是什么?它指的是什么?我的建议?我不是建议重复任何东西……恰恰相反,规范化数据(通过使用两个表)可以消除重复。还是你只是在强化我的建议?
            【解决方案6】:

            我会总是选择标准化的月/行设计,除了 ...

            有些应用程序适合进行非规范化,特别是在关系数据集市中。如果企业对执行许多计算有浓厚的兴趣,例如“找出 1 月销售额超过 2 月销售额 10% 以上的项目”,那么非规范化数据集市将是合适的。

            您可以避免这种情况,因为数据集市不是维护数据完整性的主要方法,并且不受事务更新的影响。

            【讨论】:

              猜你喜欢
              • 2012-12-21
              • 2012-03-07
              • 2011-06-26
              • 1970-01-01
              • 1970-01-01
              • 2021-02-11
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多