`customer_id` = NULL по умолчанию, внешний ключ на первую таблицу
`customer_name`, `customer_phone`,`customer_email` это временные данные, объясню:
Нужно, чтобы при добавлении задания клиент попадал в таблицу customers, а его номер присваивался в customer_id второй таблицы. Если же данные клиента не полные, то данные сохранять только в заданиях (таблице 2).
Единственное, что пришло в голову, это хранить временные значения, а при добавлении (или редактировании) задания, данные перемещались.
Может можно как-то проще реализовать в плане идеи? Посоветуйте если знаете. Именно идея нужна.
Если же данные клиента не полные, то данные сохранять только в заданиях (таблице 2).
Почему? Чем обусловлена такая хитропопая логика? Вам от клиента по сути нужен уникальный номер, дальше привязывать к нему какие-то данные или нет вообще вопрос вторичный. Данные во вторй таблице(`customer_name`, `customer_phone`, `customer_email`) вообще не нужны, это нарушает 3 нормальную форму.
У нас на фирме необходимо расширять базу клиентов. Менеджеры вручную добавляют ИНН название, телефон и email.
Но тк при добавлении задания также необходимо завести клиента, то вот такая логика и выросла. Главное условие, чтобы свести минимум действий менеджеру при этом чтобы данные все сохранялись.
:)
Max Ba, так как раз таким образом и делается- менеджер заполняет задание, данные относящиеся к клиенту уходят в таблицу клиент, после чего в таблицу заданий уходит ид клиента и все что относится к заданию. Это разные сущности, данные из клиента не должны храниться в задании, только ид связи с таблицей клиентов.
ThunderCat, да, верно, алгоритм именно такой.
Но каким образом хранить не полные данные о клиенте?
Например только телефон не даст система сохранить в таблицу клиентов. Туда только можно добавить полные данные (ИНН компании, название компании, имя, телефон, почта (только почта не обязательное)).
это что за система? Ваша или внешняя какая-то? Если там есть поля обязательные - проще заполнить их какими-то болванками а ля инн 00000000000000, и телефон +7000000000 или как позволяет, и потом добить верным когда надо. Если ваша система - поставьте поля необязательными для бд.
ThunderCat, а может быть сделать отдельную таблицу временных контактов и связать таблицы внешним ключом? Если инфа о клиенте не полная то хранить в ней, если же менеджер заполнил всё верно, то при обновлении пройдёт проверка и в случае успеха данные в клиенты добавятся, пропишется номер, а из временной удалятся.
гемор?)
Max Ba, думаю больше гемора, чем профита, внутри надо будет еще учитывать из какой таблицы брать, временные или постоянные данные, и сути это не меняет - в обращении будут такие же неполные данные, не важно из какой они таблицы - финал одинаков, по этому имхо нечего плодить таблицы. Просто на фронте можно их подсвечивать красным например, с подсказкой что желательно заполнить эти поля.