在我的应用程序中,有N个用户。每个用户可以拥有N个类别。每个类别可以包含N个图书。
我创建了以下实体 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。
最佳答案
按照惯例,实体应命名为单数。相对于其关系,关系应命名为复数或单数。
根据给定的信息,假定用户创建了类别以将书籍(如播放列表或类似内容)分组。类别对用户而言是唯一的,并且不会在用户之间共享。一本书可以包含在许多类别中。
所以这将成为
用户>类别
类别>书籍
图书>类别
关系应具有两个方面。相反,您可以定义它。如果一个用户可以有任意数量的类别,而一个类别只能有一个用户。类别的倒数是一个用户。