@null_object

Как спроектировать базу данных?

Здравствуйте! Сейчас пытаюсь спроектировать небольшую CRM. Есть следующие таблицы:
  • contacts - клиентская база
  • files - загруженные файлы
  • employees - список сотрудников
  • departments- список отделов, к которым привязаны сотрудники (по задумке тут должна быть древовидная структура подчинения)
  • employee_positions - справочник существующих должностей


Поля и связи приведены на скриншоте:
61312ceb07e04632366470.png

Собственно, вопросы вот в чем:
  1. Не избыточно ли делить таблицу клиентов и таблицу сотрудников, при том, что у них довольно много схожих атрибутов?
  2. Стоит ли делать доступ к аватарке или справочнику должностей через связь "один-к-одному", при условии, что у пользователя только 1 аватарка, либо 1 должность?
  3. Будет ли работать такая реализация дерева, как на скрине? Если нет, то как правильно такое можно реализовать? (чем-то это напоминает битрикс)61312fd6dfe3f167532761.png


Проект разрабатываю на Laravel 8 + PostgreSQL
  • Вопрос задан
  • 365 просмотров
Решения вопроса 1
@jazzus
Вместо contacts и employees таблицы users roles(там client, employee и тд)
связующие
user_role
user_department с pivot position_id
вместо avatar_id полиморфную связь images в документации прямой пример
если есть еще files то аналогично
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы