我有一个数据库,可以跟踪当前年度和前几年的员工数据。 在下面的示例中,我将使用日历年(从1月开始到12月结束) - 情况并非总是如此,有些用户的年份从7月到6月或4月到3月等等。
有许多表格,通过一些繁重的计算,可以在此时查看员工的数据。
本年度的数据主要是用户看到的数据。但是,前几年的数据对今年产生了影响(因此,对2008年数据的改变将对2009年产生影响,然后到2010年产生影响,今年也会如此)。
显然,这会在查看报告时对性能产生负面影响,因为查看今年的数据将意味着在前几年中跋涉 - 计算和创建视图,直到找到最终结果。随着应用程序的老化,这个问题将变得越来越糟 - 比如在2015年,任何使用该系统从一开始(2008年)的人都将等待很长时间才能获得他们的数据。
我们计划冻结前几年的数据,而不是拥有2008年,2009年,2010年的数据和今年的数据 - 我们将有一个块与前一年的数据(所有计算完成前几年)和今年的数据
通过这种方式,我们可以获得前一年所有已计算的最终结果数据,我们只需要在今年添加以获得最终结果。
显然,我们必须阻止用户在过去几年中输入/更新数据。
我的问题是实现这一目标的最佳方法是什么?我认为你需要一些等到新的一年并进行一些计算的过程。
提前致谢,
ViperMAN。
答案 0 :(得分:1)
您描述的方法通常称为数据存档,您可以在新年派对之后的第一个工作日每年手动运行DBA,以便准备和存储计算出的数据。
此外,如果我做对了,你的应用程序需要拒绝用户修改前几年的数据。
答案 1 :(得分:1)
我想的一种方法如下:
显然,这是一个简化的版本 - 但我认为可以使用。
思想?
答案 2 :(得分:0)
如果您有不应编辑的数据,并且您可以定义该数据是什么,那么我将使用存储过程和安全设置的组合来确保旧数据保持准确。
如果您使用存储过程作为过滤器,则可以在存储过程中使用逻辑来检查当前DateTime的记录,并且只有在符合您要求的所有内容时才允许更新。