我正在为报告创建一个简单的数据库应用程序。根据数据库设计理论,您永远不应该两次存储相同的信息。对于大多数数据库应用程序来说,这是有道理的,但我需要一些东西,您可以简单地选择一个通用主题,然后保留通用主题的新实例副本不变或更改信息,但是不能通过修改实例副本来修改通用主题,但需要跟踪原始主题和主题实例副本之间的关系。
混乱,我知道。这里有一个可能有所帮助的图表:
我需要基于情况使报告是不可变的或可变的。一个快速的例子是您选择了一个客户,然后完成了报告。一个月后,客户的电话号码发生变化,因此您更新了数据库中的客户部分,但是您不希望打开已完成的报告并将新信息更新到其中。已经完成的报告中。
在这种情况下,最优雅的解决方案是什么?也许这个方案可以工作,但是使用循环语句和条件语句来识别通用、已选和报告之间的关系:
混乱,我知道。这里有一个可能有所帮助的图表:
我需要基于情况使报告是不可变的或可变的。一个快速的例子是您选择了一个客户,然后完成了报告。一个月后,客户的电话号码发生变化,因此您更新了数据库中的客户部分,但是您不希望打开已完成的报告并将新信息更新到其中。已经完成的报告中。
在这种情况下,最优雅的解决方案是什么?也许这个方案可以工作,但是使用循环语句和条件语句来识别通用、已选和报告之间的关系:
for (NSManagedObject *managedObject in checkedOffTaskObjects) {
if ([[reportObject valueForKeyPath:@"tasks"] containsObject:managedObject]) {
if ([[managedObject valueForKeyPath:@"tasks"] containsObject:genericTaskObjectAtIndexPath]) {
cell.backgroundView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cellbackground.png"]] autorelease];
}
}
}
我知道有更好的解决方案,但我看不到它。
谢谢您的时间。