iphone - 核心数据关系

标签 iphone ios ipad core-data orm

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

我创建了以下实体 BookMetadata、Users、Categories

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 .

最佳答案

作为惯例,实体应该被命名为单数。关系应根据其关系命名为复数或单数。

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

所以这会变成

用户 < -->> 类别

类别<-->>书籍

图书 < -->> 类别

关系应该有两个方面。逆让你定义它。如果一个用户可以有任意数量的类别,而一个类别只能有一个用户。类别的倒数是用户。

enter image description here

关于iphone - 核心数据关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17147571/

相关文章:

ios - 强制 UISplitViewController 始终(仅)横向显示 master(在 iPhone 6 Plus 上)

iphone - UIImagePickerController:视频压缩的奇怪结果

ios - 如何通知用户向下滚动tableview

ios - 从 POP 或 IMAP 服务器获取邮件

objective-c - copyWithZone错误-[DataObject setECGCount:]:无法识别的选择器已发送到实例

ios - 如何在 Swift 中限制文本字段中的数字?

javascript - $ ("form").submit 在 ipad 和 iphone 上不起作用

iphone - 使用 Tesseract OCR 进行汉字识别

iOS模拟器缺少版本?

php - Alamofire JSON 无法序列化