0

我有两个模型:

Card with has_many relation to Works

我的意思是我的数据库中有 7 个静态作品,我可以在创建卡片时选择其中的一些。

我定义了这样的 has_many 关系:

有很多关系

我的问题很奇怪......它似乎可以工作,但是当我浏览我的 sqlite 文件时,我看不到 Card 和 Work 之间的任何表关系。

我期待一张带有 card_id 和 work_id 的表。

核心数据存储有多少关系?

4

1 回答 1

2

首先,我要提醒您不要打开 Core Data 吐出的 sqlite 文件并试图从中推断出一些东西。它意味着一种不透明的格式:您只应该通过 Core Data API 与 Core Data 持久存储交互。

但是,要回答您的问题:通常在数据库设计中,您不会像描述的那样将链接表用于一对多关系,而仅用于多对多。对于一对多,您将在“一”端的表中有一个外键字段,并且该字段的内容是另一个表的主键。例如(对不起,我在 Google 上找到的随机示例):

一对多

tblOrder与 是一对多的关系tblOrderDetails。这是通过Order#在关系的多对多方中有一个字段来实现的,该字段是引用tblOrder表的主键的外键。如您所见,不需要链接表。

多对多关系需要链接表,但一对多不需要。

最后一点:我在您的屏幕截图中注意到,您没有为您的worksor关系设置反向customer关系。Core Data 要求所有关系都具有逆向关系,否则您的数据可能会损坏。(这有点简化了,因为还有其他方法可以解决它,但一般来说做逆是最简单的。)

于 2012-06-07T10:46:14.350 回答