@entermix

Как реализовать правильную структуру таблицы сотрудников, работодателей?

Есть таблица пользователей, каждый пользователь может выступать как работодателем, так и сотрудником одновременно, какая структура таблиц правильная?

1. Использовать 1 таблицу:
- jobs = id, user_id, employer_id, post

2. Использовать 2 таблицы:
- jobs = id, user_id, post
- employers = user_id, job_id

3. Еще вариант?

Нужно будет выводить список сотрудников, работодателей, cотрудников всех своих работодателей
  • Вопрос задан
  • 2662 просмотра
Пригласить эксперта
Ответы на вопрос 2
kumaxim
@kumaxim
Web-программист
Для начала нужно определить сущности системы. У Вас я их вижу две: человек(user) и работа(job).

Теперь, Ваш юзер создает проект(project), выступая работодателем. Для проекта мы должны запомнить работодателя, для начала. Значит пока будет таблица job: id, id_user

Далее, на каждую работу работодатель назначает исполнителей. Не пихайте список исполнителей в таблицу project, замучаетесь потом обрабатывать данные по исполнителем. Создайте таблицу project_performer : id_project, id, id_user

Итого, у нас получается 3 таблицы:
1)Пользователи системы: user - id, логин, соль, пароль, мыло и т.п.
2)Работа(проекты): job: id, id_user, desc и т.д.
3)Исполнители работы: project_performer : id, id_project, id_user,

Теперь Ваши запросы
1)Отобразить всех работодателей. Работодателем будет юзер, если его id есть в таблице job
2)Отобразить всех сотрудников. Сотрудником будет юзер, если его id есть в таблице project_performer
3)Отобразить всех сотрудников конкретного работодателя.
select user.* from user, job, project_performer where job.id_user = id_пользователя_работодателя AND job.id = project_performer.id_project AND project_performer.id_user = user.id

4)Все работодатели, с которыми когда-либо работал исполнитель
select user.* from user, job, project_performer where project_performer.id_user = id_пользователя_исполнителя AND project_performer.id_project = job.id AND job.id_user = user.id

За корректность запросов на 100% не ручаюсь
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Грубо говоря, у вас есть люди и вакансии, занимаемые этими людьми. "сотрудники" и "работодатели" отображают связь между первой и второй сущностью.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы