Вот хитрый вопрос нормализации / SQL / проектирования баз данных, который нас озадачивал. Надеюсь, я смогу это правильно сформулировать.
У вас есть набор действий. Это то, что нужно сделать - прославленный список TODO. Любой данный вид деятельности может быть назначен сотруднику.
У каждого действия также есть объект, для которого это действие должно быть выполнено. Такими действиями являются либо контакт (личность), либо клиент (бизнес). Каждое действие будет иметь контакт или клиента, для которого будет выполнено действие. Например, действие может быть «Отправить карту благодарности Spacely Sprockets (клиент)» или «Отправить маркетинговую литературу Тони Алмейде (контакт)».
Из этой структуры нам нужно иметь возможность запрашивать все действия, которые должен выполнять данный сотрудник, перечисляя их в одном отношении, которое будет выглядеть примерно так в простейшей форме:
-----------------------------------------------------
| Activity | Description | Recipient of Activity |
-----------------------------------------------------
Идея здесь состоит в том, чтобы избежать двух столбцов для Контакта и Клиента с одним из них нулевым.
Надеюсь, я правильно это описал, поскольку это не так очевидно, как может показаться на первый взгляд.
Таким образом, вопрос заключается в следующем: каков «правильный» дизайн базы данных и как бы вы запросили ее для получения запрашиваемой информации?