0

我正在设计一个存储实体及其关系的系统。

每个实体都有属性,每个属性都应该被版本化,所以当实体的属性发生变化时,会添加一个新的历史状态。复杂性来自这样一个事实,即我还需要对单独实体之间的关系进行版本控制。例如:当实体A从 parent 移动X到 parentY时,两个实体的关系也会获得新的历史状态。

我正在寻找有关如何在较低级别上进行设计的建议-是否有任何设计模式可用于此类事情,或任何其他最佳实践/经过验证的方法?

我正在使用 PostgreSQL 数据库在 PHP 中构建它,可选择使用 Doctrine 作为 ORM/DBAL。

4

1 回答 1

1

我建议为此查看table_log扩展名(https://github.com/psoo/table_log)。它确实需要编译,但它的优点是允许您将表恢复到以前的状态、审核更改等。

这里的一个重要细节是历史更改存储在其他表中,而不是您的主表中,因此您将其视为当前数据加上外部审计跟踪。如果您需要合并它们以进行查询,您可以创建一个视图。

于 2013-10-30T02:41:38.067 回答