2012-08-24 76 views
1

我只是想驗證我的數據結構。
這似乎有點令我費解,也許它可以簡化?核心數據結構 - 避免循環引用?

Snapshot from Core Data Model Editor

  • 問題分爲五章。
  • 對於每個問題,每個會話只能有一個答案。
  • 目的是爲了能夠比較/分析相同問題的答案(不同用戶或不同時間的相同用戶,即不同會話)。
  • 如果章節和問題是相同的,則作爲章節&問題集合的模板不應該被複制。
  • (如果Answer與Session沒有關係,那麼這將是必要的。)
  • 從答覆到會話的關係是正確的策略嗎?
  • 您還有什麼可以改進以簡化模型?

謝謝!

編輯

後續澄清:

  • 答案是不是靜態的(例如, 「正確」 的答案, 「解決方案」),但一些文本的用戶輸入。這更像是一個「問卷」而不是「測驗」。答案有可以分析的量化屬性。
  • 如前所述,一個問題在會話中只能有一個答案。由於問題可以間接屬於多個會話(通過(NSSet*) question.chapter.template.sessions),因此問題可能有多個答案,因此需要一對多的關係。
  • 典型場景:用戶使用特定模板開始新會話並填寫答案。然後他可以查看結果分析,並將其與使用相同模板的其他會話的結果進行比較。

EDIT 2

包括屬性

Snapshot of data model including attributes

+0

如果不真正瞭解所有「遊戲規則」,但對初學者很難給出反饋:1.如果答案可能屬於多個問題,您如何獲得每個會話所問的問題? 2.假設你需要知道哪個答案對於某個問題(比如多選)可能是正確的 - 我不知道該映射到底有多精確3.是所有這些動態還是靜態的?因爲我根本沒有看到靜態的循環依賴問題。還需要知道最關鍵的訪問方案來優化此... – user387184

+0

我編輯了我的問題來澄清。感謝您看這個。 – Mundi

+1

如果**你**可以在你的代碼中處理你在處理數據時不會遇到無限循環,'Core Data'可以毫無問題地處理這樣的結構,所以你應該只關心你自己。 – holex

回答

0

儘管@holex的一部分,真正有用的努力 - 最好的辦法似乎仍然堅持我的設計。我希望的簡化還沒有實現。

1

誠實數據模型的快照,這是我會做什麼,而不是你的結構,但我不知道每個實體的目的是什麼,因爲我無法從他們簡單的名字中找到答案。

這只是一個想法來解決循環

你仍然可以到達所有模板和所有回答會議,不直接,但它不會讓你的生活更加困難。

enter image description here


UPDATE:

在第一和第二觀測,對我來說,似乎Session實體僅僅是一個額外的實體只有在這裏。老實說,你不需要它,如果你連接Template(又名問卷)實體。

必須添加之間的許多一對多關係TemplateUser(你可以做到這一點,不必擔心它)。使用這種方式,從每個模板你都可以得到所有的答案,而且你不會有任何循環。

enter image description here

+0

謝謝你這**美麗**答案。感謝您花時間做圖形!不幸的是,這不起作用,因爲*章節*需要重用。如果他們與* Session *有一對一的關係,我必須爲每個新的會話複製它們。這就是我現在所做的 - 導致大量重複和巨大的數據傳輸。 – Mundi

+0

看到「屬性」會很好,因爲它們可以清楚地說明導致循環的原因,並且我沒有看到「會話」實體的重點。 :( – holex

+0

這些屬性只會混淆圖片,循環只能由關係引起,而不能由屬性引起,* Session *實體是必需的,因爲你希望能夠通過所有問題,比如說每三個月所以你有四個數據點(*答案*),這是會議的目的(加上跟蹤日期,項目,語言等) – Mundi