2

将 CoreData 与 UIManagedDocument 一起使用,持久存储是文档中保存文件路径的 SQLite 数据库。我读到 CoreData 产生自己的主键(整数值)。

关于 CoreData 中的关系,我有两个问题:

  1. 由于 CoreData 是一个面向对象的关系数据库,我想知道实体中对象之间的关系是如何保存的?CoreData 是否使用外键(例如实体一使用实体二的主键作为外键)?
  2. 关系如何保存到持久存储文档中?如果您保存例如 NSString 或 NSDictionary(到二进制数据),您可以在打开持久存储文档时看到这些对象。
4

1 回答 1

1

这取决于。

对于一对一关系,目标实体的主键作为外键存储在实体的表(行)中。

对于一对多关系,会创建一个单独的连接表,其中存储源实体和目标实体的主键。

FWIW 这很容易通过在命令行中使用 sqlite3 来探索。

$ sqlite3 cd.sqlite
$ (SQLite) .schema

这将显示您的一对多关系的连接表,您将能够看到您的一对一关系的外键列。

数据/字符串列也是如此。SQLite 允许数据和字符串(varchar)存储。

于 2013-02-01T10:35:03.490 回答