Как бы вы организовали базу данных, исходя из следующих требований...

iguania
На сайте с 10.12.2010
Offline
72
456

Добрый вечер, уважаемые.

Проектирую базу данных MySQL и столкнулся с проблемой...

Есть таблица сотрудников компании (поля: имя, эл.почта, телефон, должность и т.д.).

У каждого из сотрудников могут быть подчиненные, т.к в данном случае сотрудник будет для них начальником. Начальник может иметь несколько подчиненных, а подчиненный лишь одного начальника.

Как бы вы спроеткировали БД?

Обдумывал уже вариант рекурсивных иерархических данных, т.к. одна таблица "employees", а в ней помимо основных полей создать поля, допустим "emp_id", "boss_id". Если данный сотрудник является начальником, то заполнять у него уникальное поле "emp_id" (например: "b1", "b2"), а поле "boss_id" выставлять в NULL. Если данный сотрудник является подчиненным, то заполнять его поле "boss_id", указывая уникальный идентификатор его босса ("b1", "b2), а поле "emp_id", также, как и для босса, заполнять уникальным идентификатором (например, "e1", "e2"). Т.е. поле "emp_id" будет обязательным, а "boss_id" будет только указывать начальников для подчиненных. У самих начальников они будут в нулл.

Все всегда заканчивается хорошо. Если все закончилось плохо, значит, это еще не конец…
[umka]
На сайте с 25.05.2008
Offline
456
#1
iguania:
Обдумывал уже вариант рекурсивных иерархических данных, т.к. одна таблица "employees", а в ней помимо основных полей создать поля, допустим "emp_id", "boss_id".

Я бы также и сделал. А-ля "древовидный каталог".

Лог в помощь!
LEOnidUKG
На сайте с 25.11.2006
Offline
1773
#2

ну как у меня в комментах сделано

Есть название root_id т.е. к кому привязан коммент

А так же level т.е. на каком уровне комментарий идёт

id|user|root_id|level

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
iguania
На сайте с 10.12.2010
Offline
72
#3

[umka], LEOnidUKG, спасибо Вам. Уже разобрался и вопрос исчерпан.

---------- Добавлено 22.08.2012 в 18:52 ----------

Кстати, если кто-то еще будет искать решение подобной ситуации, то в дополнение к ответам, предложенным выше, предлагаю к прочтению замечательную статью на эту тему http://www.opennet.ru/base/dev/hierarchy_sql.txt.html

Joker-jar
На сайте с 26.08.2010
Offline
171
#4

Еще зависит от того, какие отчеты и т.п. должны строиться по информации из этой базы. Потому что по идее, можно просто в таблице с сотрудниками создать поле, в котором хранить идентификатор начальника данного сотрудника

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий