我有一个遗留应用程序,我正在进行更新。数据库中的几个表保存月度信息。这些表基本上每年有一行,每个月有12个字段。我想知道这是否是存储月度数据的最佳方式。每个月有一个记录更好吗?虽然我认为从年度的角度来看会有更多的重复,并且每个月都会附加ID,但这可能是微不足道的。对于一种记录方法来说,编码似乎更容易。并不是说它有很大的不同,但我使用的是PHP / MYSQL。
这是最好的做法吗?
答案 0 :(得分:2)
我认为这取决于你想要对数据做什么。
如果你总是希望将数据拉回一整年,那么每月一个字段是有意义的。
如果您想加入月度数据(例如SELECT total_sales * monthly.tax),那么每月只需一行即可。
答案 1 :(得分:2)
您是否想要回答诸如“我们在2006年5月到2008年11月之间销售了多少个widgits?在这种情况下,每月记录(假设您存储月份和年份)远远,更容易查询,< / p>
答案 2 :(得分:2)
当您考虑创建和使用数据时,每月记录更有意义。
你愿意吗?
每月插入一行
OR
更新一行并编写代码以确定要设置哪一列?
你愿意吗?
SELECT sum(TotalSold)WHERE MonthColumn介于5和7之间
OR
......我没有那么多时间...... ;-)
答案 3 :(得分:1)
我认为您应该以更加规范化的方式存储数据 - 每月一条记录。对数据的要求可能会发生变化,但您始终可以通过SQL语句获取必要的数据。
答案 4 :(得分:0)
更好(更规范化)将有两个表,一个用于年度数据,每年一行,一个用于每月一行的月度数据,以及一年的列...
答案 5 :(得分:0)
我会总是去进行规范化的每行设计,除了......
有些应用程序适合于非规范化,特别是在关系数据集市中。如果企业对执行许多计算有浓厚的兴趣,例如“将1月份销售额超过2月销售额超过10%的项目”,那么非规范化数据集市将是合适的。
您可以侥幸成功,因为数据集市不是维护数据完整性的主要方法,并且不受跨区域更新的影响。