2

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

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

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

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

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

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

在此处输入图像描述

我对实现这些关系的理解是否正确,我在 CoreData 中创建关系方面相对较新。如果没有或有更好的解决方案,请让我知道如何去做。

编辑:

考虑这种情况,

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

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

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

编辑2:

我附上了一个示例 sqlite DB 文件 @dropbox https://www.dropbox.com/s/nlmdojkk64bkf1b/test.sqlite

4

1 回答 1

1

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

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

所以这将成为

用户 < -- >> 分类

分类 <-- >> 书籍

图书 < -- >> 分类

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

在此处输入图像描述

于 2013-06-17T13:03:52.313 回答