核心数据结构 - 避免循环引用?

时间:2012-08-24 06:56:37

标签: iphone objective-c ios ipad core-data

我只是想验证我的数据结构 这对我来说似乎有点费解,也许它可以简化?

Snapshot from Core Data Model Editor

  • 问题分为章节。
  • 对于每个问题,每个会话只能有一个答案。
  • 目的是能够比较/分析相同问题的答案(由不同的用户或不同时间的相同用户,即具有不同的会话)。
  • 一个模板,是一个章节和一组的集合。如果章节和问题相同,则不应该复制问题。
  • (如果答案与会话没有关系,那将是必要的。)
  • 从回答会话的关系是正确的策略吗?
  • 为简化模型,您还有哪些改进措施?

谢谢!

修改

后续澄清:

  • 答案不是静态的(例如“正确”答案,“解决方案”),而是用户输入的一些文本。它更像是“问卷”而不是“问答”。答案具有可以分析的定量属性。
  • 如上所述,一个问题在一个会话中只能有一个答案。因为问题可以间接地属于多个会话(通过(NSSet*) question.chapter.template.sessions),所以它们可能有多个答案,因此需要一个多对多的关系。
  • 典型情况:用户使用特定模板启动新会话并填写答案。然后,他可以查看结果分析,并将其与使用相同模板的其他会话的结果进行比较。

编辑2

数据模型的快照,包括属性

Snapshot of data model including attributes

2 个答案:

答案 0 :(得分:1)

老实说,这就是我要做的而不是你的结构,但我不知道每个实体的目的是什么,因为我无法从他们简单的名字中找到。

这只是解决循环的一个想法

你仍然可以从会话中获取所有模板和所有答案,而不是直接,但它不会让你的生活更加艰难。< / p>

enter image description here


<强>更新

在第一眼和第二眼看来,对我而言,Session实体似乎只是一个额外的实体。老实说,如果你与Template(又名问卷调查)实体连接,你就不需要它。

您必须在TemplateUser之间添加多对多关系(您可以这样做,不用担心)。使用这种方式,您可以从每个模板中获得所有答案,并且您将不会有任何循环。

enter image description here

答案 1 :(得分:0)

尽管@holex真的很有帮助 - 最好的办法似乎仍然是坚持我的设计。我希望的简化没有实现。