Некоторые базы данных имеют рекурсивные запросы, например, конструкция CONNECT BY
в Oracle. В этом случае я бы, конечно, выбрал 1.
Но даже если нет, я думаю, что данные будут чище, если вы предоставите каждому своего менеджера, если это действительно структура данных. Вам нужно выполнить несколько запросов, чтобы все менеджеры добрались до генерального директора, или вы должны получить все данные и построить дерево на любом языке программирования, который вы используете. Но у вас та же проблема, если каждый человек получает список менеджеров. Вам понадобится некоторый программный интеллект, если вы хотите построить дерево из этих данных. Если у вас нет Oracle, то есть. ;)
Кстати, я бы предпочел составить список отделов и дать каждому отделу менеджера. Таким образом, вы можете легче поставить людей (даже менеджеров) на другую должность без необходимости обновлять сотрудников. Обычно менеджеры управляют отделом, поэтому они являются только менеджерами других людей, потому что эти люди работают в этом отделе.