Database design 在数据库中存储月度数据的最佳方法?

Database design 在数据库中存储月度数据的最佳方法?,database-design,Database Design,我有一个正在进行更新的遗留应用程序。数据库中有几个表保存每月的信息。这些表基本上每年有一行,每个月有12个字段。我想知道这是否是存储月度数据的最佳方式。每个月都有记录是不是更好?虽然我认为从一年的角度来看会有更多的重复,而且每个月都会附上id,但这可能是微不足道的。对于单记录方法来说,编码似乎更容易。这并不是说它有多大区别,但我使用的是PHP/MYSQL 是否有最佳做法?我认为这取决于您想对数据做什么 如果你总是想收回一整年的数据,那么每月一个字段是有意义的 如果您想加入月度数据(例如,选择to

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


是否有最佳做法?

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

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


如果您想加入月度数据(例如,选择total_sales*monthly.tax),那么每月一行就是最好的选择。

更好(更规范化)的方法是有两个表,一个表用于年度数据,一个表用于年度数据,一个表用于月度数据,一个表用于年度数据,一个表用于月度数据,一行表用于年度数据

您是否想回答诸如“2006年5月至2008年11月期间我们销售了多少WidGit?”之类的问题?在本例中,是月度记录(假设您存储月份和年份)我认为您应该以更规范的方式存储数据——每月一条记录。对数据的要求可能会改变,但您总是能够通过SQL语句获得必要的数据。

< P>当您考虑数据的创建和使用时,每月记录更为合理。

你愿意:

每月插入一行

更新行并编写代码以确定要设置的列

你愿意:

选择sum(TotalSeld),其中MonthColumn介于5和7之间

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

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

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


你可以这样做,因为数据集市不是维护数据完整性的主要方法,也不受事务性更新的影响。

复制数据不会导致正常化。@derobert,你的观点是什么?它指的是什么?我的建议?我不建议复制任何东西……恰恰相反y、 规范化数据(使用两个表),消除重复。或者你只是在强化我的建议?