2011-01-26 9 views
5

私はSQLiteベースのテーブル構造からコアデータモデルへ移植しようとしているデータモデルを持っています。私のSQLite構造には、ZonesテーブルとTransitLogsテーブルがあります。 TransitLogは次のものを持つことができます(私のsqliteスキーマで) start_zone_id end_zone_idコアデータ同一エンティティへの複数の関係

それぞれがゾーンテーブルの外部キーです。これはSQLで正常に動作します。しかし、Core Dataに移行するとき、私はこれをモデル化する方法を理解することができません。

私の最初の試みは、私がstartZoneとendZone関係で私のTransitLogエンティティにおける2体の関係を持ってい

(申し訳ありませんが、これが私の最初の記事はここにあるとのXcodeのスクリーンショットを投稿することができませんでした)ゾーンにそのポイントを属性

私が持っている質問は、startZoneとendZoneの関係属性の逆関係を処理する方法です。私はそれらを必要としないのですか?このトピックで読んだドキュメントや書籍では、常に逆の関係を使用することをお勧めしますが、それが適用されない場合はこの特定の状況について疑問に思っています。あるいは、私はコアデータでこれを間違ってモデリングしています。

ありがとうございました。

マイク

答えて

3

あなたがstartLogsendLogsのようなものと呼ばれるTransitLogを指すゾーンエンティティ、2つの別々の対多の関係を持つことができます。それらはそれぞれstartZoneendZoneの逆です。

+1

コンパイル/シンタックスの意味では絶対必要ではないが逆関係は、CoreDataが多くのセットを削除したときに更新できるようにするために必要であることに注意してください。 –

+0

ゾーンからTransitLogに移動する必要がない場合は、逆の関係なく行うことができます。 TransitLogを削除するとstartZoneとendZoneに何らかの影響があるようには見えません。だから、あなたは逆の関係を省いても問題ありません。ただし、各ゾーンから送信された中継ログの数をカウントするとしたら、逆関係を追加して後で移行作業を省きたいと思うかもしれません。 – westsider

1

ありがとうございました - 両方の回答が多くの助けになりました。 Westsiderは正しいです。私は現在、ゾーンからTransitLogsまで横断する必要がないので、私が不思議に思っていた理由です。しかし、それは私がそれがある時点で(おそらく数千人のユーザーがそれを望んでいるかもしれない)可能性があると思うと言われています。

もう一度お返事ありがとうございます。

2

非常に重要なモデルのバージョン管理と移行はリアルタイムシンクになります。そのため、アップルがそれらの使用を推奨するのと同様に、逆の関係を追加することをお勧めします。

私は、少なくとも逆の関係を追加するのは意味がないというケースが少なくとも1つ見つかりました。すべてうまく動作します。しかし、その場合には逆の関係がでもとなるようなシナリオを見つけることは非常に難しい(そして残っている)。

関連する問題