核心数据关系

时间:2013-06-17 12:32:42

标签: iphone ios ipad core-data orm

在我的应用程序中,有N个用户。每个用户可以拥有N个类别。每个类别可以包含N个图书

我创建了以下实体 BookMetadata,用户,类别

BookMetadata实体是来自不同用户的书籍数据的唯一集合。

如何创建这些实体之间的关系。

用户与用户之间的关系类别。(一对多用户&书籍(一对多,一个用户可以有一本或多本书)。

之间的关系 - 类别&书籍。(一对多)。

enter image description here

我对实现这些关系的理解是否正确,我在CoreData中创建关系方面相对较新。 如果没有或更好的解决方案,请告诉我如何解决这个问题。

编辑:

考虑这种情况,

User 1 -> Category 1 -> Book1,Book2.
       -> Category 2 -> Book3, Book4.

User 2 -> Category 1 -> Book1,Book2,Book3.
       -> Category 3 -> Book4

这里在上面的场景中。同一本书(第3册)对不同的用户有不同的类别。 如何处理这种情况?

编辑2:

我正在附加一个示例sqlite数据库文件@dropbox https://www.dropbox.com/s/nlmdojkk64bkf1b/test.sqlite

1 个答案:

答案 0 :(得分:1)

作为惯例实体应命名为单数。关系应该相对于他们的关系命名为复数或单数。

根据给定的信息,假设用户创建类别以将书籍分组为播放列表或其他内容。类别对用户是唯一的,并且不在用户之间共享。一本书可以包含在任何类别中。

所以这将成为

用户< - >>分类

类别< - >>书籍

预订< - >>分类

关系应该有两面性。反向让你定义。如果用户可以拥有任意数量的类别,则类别只能拥有一个用户。类别的反转是用户。

enter image description here