【发布时间】:2018-01-31 10:43:24
【问题描述】:
假设我们有一个简单的 Core Data 模型来跟踪一群客户进行的交易,但出于某种原因,当我们查看交易时,我们想知道交易发生时客户的地址。
如果客户更改地址,存储客户旧状态的最佳方式是什么?
一种方法可能是将客户的地址存储在交易中,但这不适用于多对多关系,例如如果之前交易中多个产品的价格发生了变化,我们将如何记录?
另一种选择是只复制对象,但是我们需要一些方法来知道哪个是当前对象。创建与交易和客户/产品相关的中介实体会更好吗?
【问题讨论】:
-
我认为在事务中保存
address是正确的方法,我不明白你的意思。通常一笔交易与一个具体地址相关,客户可能有多个地址,但交易仍应与一个地址相关。 -
@Gonzalo 当然,但是产品价格示例呢,哪里有多个产品?
-
所以,你真正的问题是产品价格,因为地址可以这样解决。在关系模型中,您可以像历史一样保存对产品的每一次更改,并且交易将引用历史。我没有做过类似的事情,但我想到的是在无关系模型中进行交易。
-
@Gonzalo 你能在答案中提供更多细节吗?
标签: ios design-patterns core-data database-design