2017-01-06 16 views
2

私は、Mac OSアプリケーションのコアデータにMySQLデータベースを移植しています。私はデータベースに2つ以上のテーブルを持っています。外部キーを格納することに加えて、いくつかのデータ列があります。コアデータの多対多関係に属性を追加することは可能ですか?それは私のようには見えません。私の欠点は、Core Dataのリンケージテーブルを複製することです。これに何か問題がありますか?コアデータリレーションシップにアトリビュートがある可能性があります

例: レコードには1人以上のアーティストが演奏しています。 アーティストは、0件以上のレコードを処理します。 リンケージテーブルの行には、レコードの外部キー、アーティストの外部キー、プレイヤーが演奏した楽器、アーティストが実行したトラックなどの追加情報を追加するメモ列が含まれています。

答えて

1

あなたは正しいです:関係自体は属性を持つことはできません。また、リンクテーブルを中間エンティティとしてモデル化するには正しい道があります。このアプローチは、「セマンティクスに基づいた関係のモデリング」のCoreData Programming Guideのセクションで言及されています。彼らのケースでは、PersonからPersonまでの(再帰的な)多対多関係を、ranking属性を持つ中間のFriendsInfoエンティティを使用してモデル化します。

例では、Recordエンティティ、Artistエンティティ、および中間のAppearanceエンティティがあります。 Appearanceエンティティは、InstrumentsとNotes、および(対1)の関係がRecordArtist(それぞれが多対多である)への属性を持ちます。

わずかな欠点は、あなたがいうだけで、関連する関係にそれらを追加するよりも、RecordオブジェクトとArtistオブジェクトをリンクするためにAppearanceオブジェクトを作成しなければならないことです。 Record/Artistの組み合わせが一意であるかどうかを監視する必要があります。デフォルトでは、とArtistの場合はAppearancesとなります。

関連する問題