Разработка базы данных для Программы заказа продуктового двора, которая может обновлять доступность - PullRequest
0 голосов
/ 07 декабря 2018

Я планирую сделать фуд-корт по заказу.

Это архитектура, которую я планирую построить.(Сервер базы данных является локальным сервером, он не находится в облаке).

Architecture

В основном у меня будет локальный сервер базы данных, на котором работает сервер MySQL,У каждой продуктовой лавки есть компьютер, который подключается к серверу базы данных.Каждый продуктовый киоск может обновить свое меню и доступность.Например, каждый продавец может отметить, какое меню отсутствует на складе (недоступно).Кроме того, когда есть заказ, продавец может быть уведомлен.Когда он доставил заказ, он может обновить статус заказа как «Готово».Существует более одного компьютера для заказа, который подключается к серверу базы данных.Каждый покупатель будет вставлять свой номер таблицы при оформлении заказа.

Вот мой текущий дизайн базы данных.

Seller Table
Seller Username (Unique, Primary Key) | Seller Password | Name of the Stall

Menu Table
Menu ID (AutoIncrement, Primary Key) | Food Name | Price | Availability | Seller ID (Foreign Key) //Seller ID is used to indicate who sells the product

Order Table
Order ID (AutoIncrement, Primary Key) | Total Price | Table Number

Order Detail Table
Order ID (Foreign Key) | Food Name | Quantity | Table Number | Seller ID (Foreign Key) | Status //Status is used to determine whether the order has been delivered or not 

РЕДАКТИРОВАТЬ

Мои вопросы:

  • Правильно ли выполнен дизайн базы данных?
  • Как я могуизбежать покупателя, чтобы купить продукт, который не доступен?Например, вдруг продавец поменяет доступность бургера.Но машина для самостоятельного заказа сделала запрос, чтобы на экране машины для самостоятельного заказа появился бургер.Кто-то предположил, что, когда покупатель нажимает на заказ, машина сначала должна проверить его наличие, но как это сделать (каков запрос)?
  • Как немедленно уведомить продавца о наличии заказа?Должны ли мои приложения делать запросы каждую минуту, чтобы заказать таблицу подробностей?

1 Ответ

0 голосов
/ 07 декабря 2018

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

В частности: в Подробности заказа заменить поле Название еды внешним ключом для ID меню (из Меню таблица).Чтобы проверить доступность продукта при размещении заказа, вы можете использовать триггер , который использует это отношение, например:

DELIMITER $$

CREATE TRIGGER check_order_before_insert()
BEFORE INSERT ON order_detail FOR EACH ROW
BEGIN
    IF (SELECT availability FROM menu WHERE menu_id = = NEW.menu_id) = 0
    THEN
        SIGNAL SQLSTATE '45000'
            SET MESSAGE_TEXT = 'Cannot order : product not available';
    END IF;
END;
$$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...