2017-01-29 3 views
1

Это вопрос моделирования объекта.Realm.io и «Ссылочная целостность»

В моей модели есть объект «Песня», который связан с одним или несколькими объектами «ЖанрТаг».

GenreTag - это не только тип музыки («рок», «поп»), но также могут быть и другими типами дескрипторов («80s»).

Объекты песни связаны с объектами GenreTag в отношениях «один ко многим». Я понимаю, что для моделирования этого я должен иметь объект Song, содержащий поле, представляющее собой список объектов GenreTag.

Мой вопрос: если я изменил определение конкретного GenreTag, как изменение распространяется через все объекты Song, которые имеют этот элемент в их списке тегов? то есть, если бы я должен был изменить текст в объекте GenreTag, определяя тег «rock», чтобы «качаться», это изменение в эту строку передается всем объектам Song, которые имеют «рок» в их списке предметов GenreTag?

Если нет, то какова наилучшая практика для обеспечения этого типа «ссылочной целостности»?

+0

Я должен добавить в случае, если не ясно, что существует главный список объектов тега Genre. Подмножество этого главного списка - это то, что связано с конкретным объектом Песни. В мире SQL я использовал таблицу «многие-ко-многим», в которой содержались записи в ней, чтобы отображать таблицы «Песня» и «Жанр». По существу стандартное моделирование в реляционном мире, а также инструменты ORM для сборки полного объекта во время выполнения. – tfrysinger

+0

Но в базе данных реальных объектов я не вижу, как обновления объекта GenreTag распространяются на различные экземпляры Song, которые могут ссылаться на него. – tfrysinger

ответ

0

Да! Вы правы. Когда объект Realm содержит свойство, связанное со многими дочерними объектами Realm, этот объект не только контролирует их.

Все, что принадлежит родительскому объекту Realm, это сохранение списка указателей на соответствующие объекты GenreTag; они не являются копиями, и они не являются исключительными для родительского объекта.

Так что да. Если вы переименовали конкретный объект GenreTag, это изменение имен будет сразу же очевидным, если вы обратились к одному и тому же объекту через родительский объект Song.