2

UIManagedDocumentでCoreDataを使用すると、永続ストアは、保存ファイルパスにあるドキュメント内のSQLiteデータベースになります。CoreDataが独自の主キー(整数値)を生成することを読みました。

CoreDataの関係について2つの質問があります。

  1. CoreDataはリレーショナルオブジェクト指向データベースであるため、エンティティ内のオブジェクト間の関係はどのように保存されるのでしょうか。CoreDataは外部キーを使用しますか(たとえば、エンティティ1はエンティティ2の主キーを外部キーとして使用します)?
  2. 関係は永続ストアドキュメントにどのように保存されますか?たとえば、NSStringまたはNSDictionaryを(バイナリデータに)保存すると、永続ストアドキュメントを開いたときにこれらのオブジェクトを確認できます。
4

1 に答える 1

1

場合によります。

to-one関係の場合、宛先エンティティの主キーは、エンティティのテーブル(行)に外部キーとして格納されます。

to-many関係の場合、ソースエンティティと宛先エンティティの主キーを格納する個別の結合テーブルが作成されます。

FWIWこれは、コマンドラインからsqlite3を使用することで簡単に調べることができます。

$ sqlite3 cd.sqlite
$ (SQLite) .schema

これにより、to-many関係の結合テーブルが明らかになり、to-one関係の外部キー列を確認できるようになります。

データ/文字列列についても同じことが言えます。SQLiteでは、データと文字列(varchar)の両方のストレージが可能です。

于 2013-02-01T10:35:03.490 に答える