Как мне смоделировать выбранный экземпляр сущности из набора возможных экземпляров в Базовых данных?
У меня есть два основных объекта данных, скажем, Account и House. Каждая учетная запись может иметь список домов, а дом может быть только в одной учетной записи, так что это обычные отношения один-ко-многим с обратной.
У учетной записи также есть "первичное" свойство, которое указывает, какой из множества возможных домов является первичным или равен нулю, если таковых нет. Идентификация первичной собственности может измениться, и, конечно, может быть много учетных записей, каждая со своей коллекцией домов.
Должен ли я моделировать это как взаимно-однозначные отношения с обратным? Без?
Или мне следует смоделировать его с помощью атрибута, скажем, который хранит уникальную информацию о доме, например, номер участка, и добавить ее к объекту Дом?
Каковы преимущества и недостатки любого из этих методов, и есть ли другой способ, на который я должен обратить внимание?
1 ответ
Я бы смоделировал это как отношение один к одному с обратным. Хотя вы могли бы уйти без обратного.
Рекомендуется всегда иметь обратное (отсюда предупреждение компилятора Xcode, если в модели данных нет обратного). Единственная причина, по которой я могу думать об отсутствии обратного - это пространство. Если у вас есть огромное количество домов на одну учетную запись, это сэкономит место в базе данных, чтобы отношения были односторонними (только от учетной записи к основному дому).
Ваша альтернатива использования атрибута в каждой сущности будет занимать примерно столько же места в базе данных и будет менее полезной. С отношениями у вас будут указатели между управляемым объектом (ами), а не просто способ найти их через атрибут.