3 форма нормализации БД MySQL

268
07 июля 2017, 05:15

Необходимо сделать таблицу с делами/задачами в БД для CRM-системы. Задача может быть привязана как к сделке, так и к клиенту, и к заявке, поставке и др.

Вопросы:

  1. Как правильно организовать структуру этой таблицы?
  2. Помимо столбцов для самой задачи (комментарий, срок и т.д.), добавить столбцы с client_id, lead_id, sale_id?
  3. Правильно ли будет, если, к примеру, задача привязана именно к клиенту, поля lead_id и sale_id сделать NULL?
  4. Или же лучше вынести в отдельную таблицу связи задачи с другими сущностями?
Answer 1

Сделайте отдельно таблицу с задачами и отдельно таблицу связей (с клиентами, сделками, заявками, поставками и т.д.). Для последней достаточно всего 3 колонки:

  1. id задачи
  2. тип, к какой сущности привязываем таблицу (к клиенту, сделке, заявке и т.д.)
  3. id сущности (клиента, сделки и т.д.)

Правильно ли будет, если, к примеру, задача привязана именно к клиенту, поля lead_id и sale_id сделать NULL?

используйте вышеуказанный вариант, а поля client_id, lead_id и sale_id объединяйте в одно поле id сущности (саму сущность будем определять по полю тип, его можно сделать smallint или tinyint).

READ ALSO
Поиск по первому вхождению в поисковый запрос

Поиск по первому вхождению в поисковый запрос

Допустим, есть таблица с полем title и с записями

281
Mysql консоль время выполнения запроса

Mysql консоль время выполнения запроса

К примеру есть запрос вида

367
Сложение строк по дате

Сложение строк по дате

Добрый деньИмеется таблица с 4 столбцами- ActiveTime,Operation,Date,User, в которой на первом месте пишется активное время работы, на втором вид работы,...

370
Теория 6-ти рукопожатий. VK, список друзей

Теория 6-ти рукопожатий. VK, список друзей

Решил как минимум помечтать, как максимум сделать программу

252