这是设计数据库时最佳实践的一个整体问题,我无法正确说出我的问题以在网上找到答案。
我有一个数据库,其中包含有关员工安全培训的信息。出于审计目的,需要存储有关需求的信息,但每年的需求可能会发生变化。我仍然需要记录员工需要做什么以及他们完成了多少。
我的第一反应是为历史数据创建一个表,并在每次员工完成一项操作或完成该操作所需的时间到期时基本上存储一个“快照”,这样如果需求在几年后发生变化,历史表将不会不要指向错误的信息。
我在实现时对此进行了更改并设置了应用程序,以便它不会更改现有需求,它会在每次需求更改时创建一个新需求,以便旧需求仍在数据库中并由历史表指向。在主表的需求表上,旧需求被标记为非活动的,并且永远不能通过应用程序删除。
我确信这个问题之前已经遇到过,但我无法清楚地表达它以自行搜索可行的答案。我的问题是在这种情况下进行的最佳方法是什么?我目前的实施是一个好的实施吗?我的第一反应更好吗?有没有比两者都更好的方法?
在旁注中,如果有此类问题的单词或短语(存储冗余数据、存储历史数据、存储审计数据,我不知道该怎么称呼它)请告诉我。