Как организовать хранение заявок и клиентов в БД?

Ссылка скопирована
1 ответ

На сайте есть функция (форма) оставить заявку на продукты и оставить заявку на обратный звонок (тоже форма). Для оставления заявки на продукты нужно ввести: Имя, электронную почту и какое-то сообщение, а для оставления заявки на обратный звонок нужно ввести только имя и номер телефона.
В данный момент к сайту подключена база с помощью phpmyadmin и заявки на обратный звонок и услуги записываются в две разных таблицы, а конкретно: application_back_call (таблица заявок на обратные звонки) с полями таблицы: id, name, phone_number и таблица application_product (таблица заявок на продукты) с полями таблицы: id, name, email, message.
Также на сайте существует таблица, в которую я вывожу эти заявки (по сути данные клиентов для заявки).
Теперь главный вопрос, подскажите пожалуйста максимально понятно насколько это возможно, как правильно организовать хранение клиентов и заявок в базе данных, если у меня 2 формы где пользователь может оставить либо номер телефона либо почту. Нужно ли создавать две таблицы для клиентов, которые оставляют заявки на продукты где требуется номер телефона и таблицу для клиентов где требуется электронная почта? Заранее извиняюсь если как-то криво или непонятно расписал, пытался максимально подробно разложить свой вопрос. Скрины таблицы базы данных прикрепляю к вопросу

Как организовать хранение заявок и клиентов в БД?

Как организовать хранение заявок и клиентов в БД?

Дополнительно:

Теперь главный вопрос, подскажите пожалуйста максимально понятно насколько это возможно, как правильно организовать хранение клиентов и заявок в базе данных, если у меня 2 формы где пользователь может оставить либо номер телефона либо почту.

Делаете таблицу для пользователей, в которой присутствуют поля для телефона и для эл.почты. И записываете либо телефон, либо эл. почту и потом выводите где нужно соответствующее поле. С таблицами по заявкам связываете пользователей по user_id.

Нужно ли создавать две таблицы для клиентов, которые оставляют заявки на продукты где требуется номер телефона и таблицу для клиентов где требуется электронная почта?

Нет, не нужно. Просто выводите там где нужно телефон, а в другом случае эл.почту.

Таблица users: id, name, phone_number, email;
Таблица application_product: id, user_id, message;

Потом вы можете делать запрос к базе данных, например, так:

SELECT u.name, u.email, ap.message FROM application_product ap     JOIN users u ON ap.user_id = u.id WHERE ...

SELECT u.name, u.email, ap.message FROM application_product ap JOIN users u ON ap.user_id = u.id WHERE ...

Для application_back_call соответственно выбираете u.phone_number вместо u.email.

  • Спасибо ваш ответ вроде понятен и подходит, подскажите тогда пожалуйста: достаточно ли будет связать id пользователя с необходимой таблицей, или надо связывать user_id и phone_nubmer (с таблицей на звонки) или userd_id и email (с таблицей на продукты)? надеюсь я понятно спросил
  • zitape, достаточно user_id, так как это уникальное поле. Только перед тем как добавлять в таблицу новых пользователей, нужно делать проверку на существование пользователя по телефону или email.
  • Благодарю за развернутый ответ

Ответы:

Я бы сделал одну таблицу
application_orders с полями
id, type, name, phone_number, email, message.
type - тип заявки - продукты или звонок

  • тут только что ответ был, но он почему то удалился, поэтому подскажите пожалуйста: в первом ответе предложили сделать 2 разные таблицы с заявками с полями: id, id_user, (email или phone_number в зависимости от типа заявки) и message (относится только к таблице с заявкой на продукты) и связать это внешним ключом с таблице пользователей.
    Просто мне нужно минимум 2 таблицы чтобы была возможность их связать между собой, и одной из них насколько я правильно понимаю должна быть таблица с пользователями.
  • zitape, а посетителям вашего сайта необходимо регистрироваться на нем, чтобы оставить заявку?
  • Сергей delphinpro, нет, не обязательно, есть отдельная страница чтобы заявку оставить
  • zitape, ну значит ни о каком поле user_id речи быть не может. К кому вы заявки привязывать будете?
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Роман IT Ответ

Для организации хранения заявок и клиентов в базе данных можно создать две таблицы: "clients" и "orders".

Таблица "clients" будет содержать информацию о клиентах, такую как идентификатор клиента, имя, фамилия, контактная информация и другие данные. Пример структуры таблицы "clients" в SQL:

CREATE TABLE clients (
    id INT AUTO_INCREMENT PRIMARY KEY,
    first_name VARCHAR(50),
    last_name VARCHAR(50),
    email VARCHAR(100),
    phone VARCHAR(20),
    address VARCHAR(255)
);

CREATE TABLE clients ( id INT AUTO_INCREMENT PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50), email VARCHAR(100), phone VARCHAR(20), address VARCHAR(255) );

Таблица "orders" будет содержать информацию о заявках, которые сделали клиенты. В этой таблице можно хранить данные о продуктах или услугах, которые были заказаны, статус заказа, дату заказа и другие дополнительные поля. Пример структуры таблицы "orders" в SQL:

CREATE TABLE orders (
    id INT AUTO_INCREMENT PRIMARY KEY,
    client_id INT,
    product_name VARCHAR(100),
    order_date DATE,
    status VARCHAR(20),
    FOREIGN KEY (client_id) REFERENCES clients(id)
);

CREATE TABLE orders ( id INT AUTO_INCREMENT PRIMARY KEY, client_id INT, product_name VARCHAR(100), order_date DATE, status VARCHAR(20), FOREIGN KEY (client_id) REFERENCES clients(id) );

Для связи между таблицами "clients" и "orders" используется внешний ключ client_id в таблице "orders", который ссылается на идентификатор клиента в таблице "clients".

Таким образом, при добавлении новой заявки в базу данных нужно сначала добавить информацию о клиенте в таблицу "clients", затем создать запись о заявке в таблице "orders", указав соответствующий client_id.

Такая структура базы данных позволит эффективно хранить информацию о клиентах и их заявках, а также упростит выполнение запросов для получения нужных данных, например, список всех заявок определенного клиента или общее количество заявок за определенный период времени.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно