Суть следующая, нужно сделать БД учета звонков клиентов и учета заказов.Манипулирования с БД будет происходить через PHP.
Клиенты звонят и спрашивают цену на выполнения строительных работ.
Менеджер фиксирует все эти заявки(звонки) от клиента в таблицу слудующей стуктуры.
--Таблица заявки --
-id
-Имя
-Фамилия
-Телефон
-адрес
-тип работы (id_type - внешний ключ с таблици типы)
-Статус(Принято,отказано,заказано,дорого,клиент думает)
-Дата заявки
Нужно сделать так, когда статус будет "Заказано" то создавать, нового клиента (в таблице клиентов) на основе данных из таблици заявки (ФИО, телефон, адресс, и еще пару данных). Пока статус другой, нечего не делать. Проблема заключается в следующем, клиент через время может опять позвонить, и эту заявку нужно зафиксировать, соотвественно если статус клиента будет опять "Заказано" то мы его будем заносить в таблицу клиентов, и получится дублирования одного и того клиента.
Как это лучше всех с проектировать. И еще если статус заявки будет "Заказано", то еще будут вносится некоторые данные, вплоть до расчета стоимости работы. И я думаю нужно ли заносить их в таблицу заявки (по умолчанию заполнять нулями поля), или создать новую.
Вопрос лежит не столько в области дизайна, сколько в области администрирования. Поясню: таблица клиентов это т.н. мастер данные, которые критичны к дублям. Какую бы систему проверок ни организовывать, зловредные юзеры найдут способ завести что-нибудь типа:
Более-менее проверенный паттерн здесь такой:
tmp_customer
tmp_customer
в customer
с соответствующей проверкой на наличие дублей.и получится дублирования одного и того клиента.
Эту проблему проще всего решить созданием клиента при первом обращении, как составную часть процедуры фиксации обращения. При этом по мере ввода информации оператором вводимые данные сверяются с существующей базой клиентов, и если введённой информации достаточно для отбора небольшого (навскидку - не более 4-5) количества записей о клиентах, то выводятся сведения о них с предложением выбрать из существующих (что не исключает продолжения заполнения формы и ввода клиента как нового). Возможно, что после выбора ещё придётся и корректировать (скажем, у клиента со времени прошлых заказов сменился номер телефона). Если же соответствий много - выводится только количество совпадений.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Добрый день! Есть MySQL сервер, расположенный на хостингуК нему создается подключение из програмы написаной на Java + Hibernate
Ребят, нужно что бы объект передвигался и оставлял за собой след
Разбираясь с принципами SOLID возникли некоторые вопросы в пониманииА именно, нормально ли изменяеть конструктор класса, если появилась необходимость...