及时保存实体状态

时间:2017-09-05 07:41:16

标签: database-design

我们有一个打印系统,可以创建文档(发票等),然后打印它们。 因为文件大约是4kb,我们不想实际存储它们。 我们希望及时创建它们,但是用于创建文档的一些变量可能会在以后更改,但我们仍然需要能够像过去那样查看文档。例如,如果公司更改银行,地址或甚至名称,我们不希望这些更改反映过去的文档。

因此,我们正在寻找一种节省空间的解决方案,方法是在需要查看时创建文档。

我想出了一些想法。

1)在第一次创建时将所有需要的变量保存到一行(银行详细信息等),并使用此行创建报告。缺点:大量重复数据(银行详细信息不经常更改)

2)像疯了一样标准化,并且有大约5个额外的表,引用存储在主行中的数据片段。缺点:非常......凌乱而且工作量很大。

3)及时存储所有历史记录,按日期查找。因此,通过在行更改时创建所有数据的副本,使用创建日期在某个时间点查找其他表中的变量。每当有人做出改变时,Con仍然会浪费一些数据。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

准确性和性能需要成为您的主要关注点。存储是遥远的第三个。

存储所有值以填充文档中的变量(不要忘记包含文档的版本)

OR版本变量的所有源,并指向文档中使用的每个版本。这实际上是一个缓慢变化的维度。

最佳选择取决于文档与源数据更改的比率。我的假设是,您将拥有的银行文件远远多于您对银行数据的更改。在这种情况下,我认为第二种选择是最具扩展性的,将具有最佳性能,并且可能使用最少的空间长期。