Как смоделировать выбранный экземпляр объекта из набора возможных экземпляров в Core Data?

У меня есть две сущности Core Data, скажем, Account и House. У каждой учетной записи может быть список домов, а дом может быть только в одной учетной записи, так что это обычное отношение «один ко многим» с обратным.

У учетной записи также есть «основное» свойство, которое указывает, какой из множества возможных домов является основным или равен нулю, если их нет. Идентификация основной собственности может измениться, и, конечно, может быть много учетных записей, каждая со своей собственной коллекцией домов.

Должен ли я моделировать это как отношение один к одному с обратным? Без?

Или мне следует смоделировать его с помощью атрибута, скажем, в котором хранится уникальная часть информации о доме, например, номер участка, и добавить его в объект House?

Каковы преимущества и недостатки любого метода и есть ли другой способ, на который я должен обратить внимание?


person Steve Weller    schedule 04.11.2009    source источник


Ответы (1)


Я бы смоделировал это как отношение один к одному с обратным. Хотя можно обойтись и без обратного.

Рекомендуется всегда иметь инверсию (отсюда предупреждение компилятора Xcode, когда в модели данных нет инверсии). Единственная причина, по которой я могу придумать, чтобы не было обратного, - это пространство. Если у вас есть огромное количество домов на учетную запись, было бы экономнее места в базе данных, если бы связь была односторонней (только от учетной записи к основному дому).

Ваш вариант использования атрибута в каждой сущности занял бы такое же количество места в базе данных и был бы менее полезен. С отношениями у вас будут указатели между управляемыми объектами, а не просто способ найти их через атрибут.

person gerry3    schedule 04.11.2009
comment
Одним из преимуществ отношения «к одному» является то, что если у меня есть дом, я могу узнать, является ли он первичным, просто взглянув на обратное первичное отношение. - person Steve Weller; 04.11.2009