Сложность этой проблемы зависит от бизнес-домена и того, что вы подразумеваете под адресом. В большинстве систем это упрощается как объект-человек, который имеет отношение к адресному объекту, представляющему, где они находятся, и если два человека остаются на том же адресе, который они адресуют, будут дублированы.
Если вы хотите иметь более сложную модель реального мира, то рассмотрите возможность перехода к терминологии в местоположения (которые могут даже отображаться пространственно).
Соображение
- Человек может быть связан с нулем или более мест (считают летние и зимние дома)
- В местах существует независимо от наличия людей, связанных с ним
- Если человек двигается домой рассмотреть изменяя отношение (привычное для жизни), а не местоположение. Это обеспечивает большую гибкость в будущем
- Несколько человек могут быть связаны с одним и тем же местом. Это очень просто, чтобы найти всех, кто в настоящее время (или ранее) остался на месте.
Хранение местоположений и отношений обеспечивает большую гибкость, но в нем есть накладные расходы, поэтому вам нужно решить, нужен ли вашему дизайну этот уровень гибкость.
Где вы узнаете, что адрес должен знать о объектах Person? Вы можете определенно просто иметь односторонние отношения ... если объект Address не должен знать, кто на нем живет. –