Станислав Шендаков, интересно :) вы сначала поругали предыдущего разраба за то что он хранил строки с разделителями а сами храните строки с разделителями(json))))
Если у вас контакты и у людей и у организаций, тогда вам еще одну табличку запилить надо "contact_mapper" id - ид записи которая будет храниться у людей/орагнизаций и id_contact ид который можно засунуть в таблицу описанную вами. Но лучше контакты привязать строго к людям, а у контрагентов завести поле контактное лицо. всё сразу станет понятней.
иерархические таблицы? не?
ТС же не сказали для чего вам детей складировать и телефоны. для того что бы выйти на связь с сотрудником 2х телефонов более чем достаточно. Про детей мне вообще не ясно - узнать есть ли дети у сотрудника или нет - дак одно строковое поле с перечислением всех. Дети же не перемещаются между сотрудниками в общем случае.
Ну а так то если вам нужна архитектура ради архитектуры - то ваш ответ правильней да.
вы просто статистику собираете? если так то все мои нынешние проекты включают moxy, ничего удобней пока не встретил. Если есть какие то реальные современные альтернативы - дайте знать.
извините не удержался