0

私は2つのモデルを持っています:

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 永続ストアとやり取りすることになっています。

ただし、質問に答えるには、一般にデータベース設計では、1対多の関係について説明したようなリンクテーブルを使用せず、多対多の場合にのみ使用します。一対多の場合、テーブルの「1」側に外部キー フィールドがあり、そのフィールドの内容が別のテーブルの主キーになります。例(Googleで見つけたランダムな例で申し訳ありません):

一対多

tblOrderは と 1 対多の関係にありtblOrderDetailsます。Order#これは、テーブルの主キーを参照する外部キーである、関係の対多側にフィールドを持つことによって実装されtblOrderます。ご覧のとおり、リンク テーブルは必要ありません。

多対多の関係にはリンク テーブル必要ですが、1 対多の関係には必要ありません。

works最後に 1 点: スクリーンショットで、またはの関係に逆の関係が設定されていないことに注意してくださいcustomer。Core Data では、すべてのリレーションシップが逆になる必要があります。そうしないと、データが破損する可能性があります。(他の方法で回避する方法があるため、多少単純化していますが、一般的には逆数を作成するのが最も簡単です。)

于 2012-06-07T10:46:14.350 に答える