2017-01-29 22 views
1

これはオブジェクトモデリングの問題です。Realm.ioと "参照整合性"

私のモデルには、1つ以上の "GenreTag"オブジェクトに関連付けられた "ソング"オブジェクトがあります。

GenreTagは音楽の種類(「ロック」、「ポップ」)だけでなく、他のディスクリプタの種類(「80s」)でもかまいません。

ソングオブジェクトは、1対多の関係でGenreTagオブジェクトに関連付けられています。これをモデル化するために、SongオブジェクトにGenreTagオブジェクトのリストであるフィールドが含まれているはずです。

私の質問:特定のGenreTagの定義を変更すると、タグのリストにこのアイテムを持つすべてのSongオブジェクトを通じて変更がどのように伝播されますか?つまり、「ロック」タグを定義しているGenreTagオブジェクトのテキストを「ロック」に変更すると、この文字列への変更は、GenreTagアイテムのリストに「ロック」しているすべてのソングオブジェクトに適用されますか?

このタイプの「参照整合性」を保証するベストプラクティスは何ですか?

+0

Genreタグオブジェクトのマスターリストがあることが明確でない場合は、追加する必要があります。このマスターリストのサブセットは、特定のソングオブジェクトに関連付けられるものです。 SQL世界では、SongとGenreテーブルの間にマッピングするためのエントリを持つ多対多テーブルを使用しました。リレーショナル・ワールドにおける本質的に標準的なモデリングであり、実行時に完全なオブジェクトをアセンブルするためにORMツールを使用しました。 – tfrysinger

+0

しかし、真のオブジェクトデータベースでは、GenreTagオブジェクトの更新が、それを参照している可能性のあるさまざまなSongインスタンスにどのように伝播するかはわかりません。 – tfrysinger

答えて

0

あなたは正しい。 Realmオブジェクトに多くの子レルムオブジェクトにリンクするプロパティが含まれている場合、そのオブジェクトはそれらを排他的に制御しません。

親Realmオブジェクトが実行しているすべてのオブジェクトは、適切なGenreTagオブジェクトへのポインタのリストを保持しています。それらはコピーではなく、親オブジェクトに排他的ではありません。

はい。特定のGenreTagオブジェクトの名前を変更した場合、親オブジェクトSongで同じオブジェクトにアクセスした場合、その名前の変更は即座に明らかになります。

関連する問題