Возможно, у вас есть веские причины для вашего дизайна в данном контексте.
Теоретически, вам часто лучше с более слабосвязанным, гибким, ролевым дизайном.
Под этим я подразумеваю, что человек - это «Сторона», а отец и мать - это «Роли», которые может сыграть человек (другие роли для «Стороны» могут быть сотрудником, клиентом, другом и т. Д.) .
Мне лично нравится шаблон DNC Питера Коада для решения этой конкретной проблемы проектирования. Статью можно найти здесь: http://edn.embarcadero.com/article/32543
Несколько лет назад я работал над большой ERP-системой, где я представил DNC в контексте C # + NHibernate, поэтому я знаю, что это работает и на практике; -)
Для подробного анализа образца / архетипа ролей взгляните на книгу Корпоративные шаблоны и MDA: создание лучшего программного обеспечения с шаблонами архетипов и UML .
Также ведутся исследования для решения этой проблемы на уровне языка, а не с использованием шаблона, называемого DCI: http://www.artima.com/articles/dci_visionP.html