Вообще, в реальной жизни у родителя и ребенка фамилии могут быть разные, мне кажется, что person, там фио и все такое (причем может быть стоит подумать о том, что будет, если человек поменяет фамилию, как организовать историю, если это надо).
Вместо child-parent можно сделать некую parentof(c полями parentId, childId).
Вместо employee - employementcontract - где employeeid - foreign key к person