2

我正在设计一个数据库,其中有一个Orders表。(显然这是一家网店)

Orders表也包含一个addressId,它指向一个Saved Addresses表(客户的保存地址)。但是,客户可以编辑他保存的地址,这意味着如果他这样做,订单中的地址也会更改,这是错误的,因为订单被运送到旧地址(在编辑之前)。

我想知道社区中处理此类事情的规范是什么?

我是硬记录吗?(不是指向地址,而是直接将地址详细信息写入订单

我是否禁止客户编辑/删除已保存的地址?(这看起来像是糟糕的用户体验,我觉得法律允许客户从我的数据库中删除个人信息)

这里的“最佳做法”是什么?

4

2 回答 2

1

对任何金融交易进行快照是一种很好的做法,包括交易完成后的相关参考数据。审计师希望被证明您的数据代表了您业务活动的准确图景。

出于实际目的,这通常意味着具有如下规则:“一旦确认交易数据(例如销售),您将不得更新或删除它们。”

更好的是,对金融交易数据使用复式记账法。这使您可以保留可信赖的金融交易记录,但仍允许您记录历史更改(例如签发贷记单或取消订单),而不会破坏数据库中的历史记录。

对于像地址这样的维度数据,最好保留所有记录地址的历史记录表,而不仅仅是当前地址,然后将您的订单与地址历史记录表中的适当地址版本相关联。

于 2013-10-28T02:01:49.673 回答
1

我通过更改客户编辑地址时发生的情况解决了类似的问题。无需更新已保存地址表中的现有记录,而是使用新地址创建新记录并将其链接到客户记录。旧地址保留在链接到订单的数据库中,但不再链接到客户。

于 2013-10-28T17:22:38.287 回答