设计核心数据模型以记住先前的对象状态

时间:2018-01-31 10:43:25

标签: ios design-patterns core-data database-design

假设我们有一个简单的核心数据模型,可以跟踪一堆客户所做的交易,但出于某种原因,当我们查看交易时,我们想知道交易时的客户地址。制成。

如果客户更改了他们的地址,那么存储旧客户状态的最佳方式是什么?

Data model design

一种方法可能是将客户的地址存储在交易中,但这并不适用于多对多关系,例如:如果先前交易中多个产品的价格发生变化,我们将如何记录?

另一种选择是复制对象,但我们需要一些方法来了解哪一个是当前的。创建与交易和客户/产品相关的中间实体会更好吗?

1 个答案:

答案 0 :(得分:1)

根据您的描述,我可能会这样做:

Data model

  • 每个Customer都有Address
  • 每个Transaction都有Address
  • 如果Customer获得新的Address,则不会影响现有的Transaction Address
  • 即使客户地址发生变化,您也可以随时查找地址的所有交易或任何交易的地址。
  • 如有必要,您可以通过查看客户的交易并获取客户的地址来获取客户的所有地址。如果需要,您还可以在pastAddressesCustomer之间添加Address关系。
相关问题