我有两个模型:
Card with has_many relation to Works
我的意思是我的数据库中有 7 个静态作品,我可以在创建卡片时选择其中的一些作品。
我这样定义了一个 has_many 关系:
我的问题很奇怪...它似乎有效,但是当我浏览我的 sqlite 文件时,我没有看到 Card 和 Work 之间的任何表关系。
我期待一张包含 card_id 和 work_id 的表格。
核心数据存储有多少关系?
最佳答案
首先,我要提醒您不要打开 Core Data 吐出的 sqlite 文件并试图从中推断出一些东西。它意味着一种不透明的格式:您只应该通过 Core Data API 与 Core Data 持久存储进行交互。
但是,要回答您的问题:通常在数据库设计中,您不会像您描述的那样为一对多关系使用链接表,而只会为多对多关系使用链接表。对于一对多,您在表中的“一”端有一个外键字段,并且该字段的内容是另一个表的主键。例如(抱歉我在 Google 上找到的随机示例):
tblOrder
与 tblOrderDetails
是一对多的关系。这是通过在关系的多对多方中有一个 Order#
字段来实现的,该字段是引用 tblOrder
表的主键的外键。如您所见,不需要链接表。
多对多关系会需要链接表,但一对多关系不需要。
最后一点:我在您的屏幕截图中注意到您没有为您的works
或customer
关系设置反向关系。 Core Data 要求所有关系都具有逆向关系,否则您的数据可能会损坏。 (这在某种程度上是一种简化,因为还有其他方法可以解决它,但通常进行逆运算是最简单的。)
关于objective-c - 使用核心数据在 ios 中建立一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10929989/