MySQL 實現點餐系統的優惠活動管理功能
引言:
隨著互聯網的發展,餐飲行業也逐漸邁入了數字化的時代。點餐系統的出現,極大地方便了餐廳的經營和顧客的用餐體驗。而在點餐系統中,優惠活動是吸引和留存顧客的重要手段之一。本文將介紹如何使用MySQL數據庫實現點餐系統的優惠活動管理功能,并提供具體的代碼示例。
一、設計數據庫表結構
在MySQL中創建一個名為”discount”的數據庫,然后創建以下三張表:
- activity 表:用于存儲優惠活動的信息。
CREATE TABLE activity (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
start_date DATE NOT NULL,
end_date DATE NOT NULL,
discount DECIMAL(5, 2) NOT NULL
);
- dish 表:用于存儲菜品的信息。
CREATE TABLE dish (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
price DECIMAL(5, 2) NOT NULL,
category VARCHAR(50) NOT NULL
);
- activity_dish 表:用于存儲優惠活動與菜品之間的關系。
CREATE TABLE activity_dish (
activity_id INT NOT NULL,
dish_id INT NOT NULL,
PRIMARY KEY (activity_id, dish_id),
FOREIGN KEY (activity_id) REFERENCES activity(id),
FOREIGN KEY (dish_id) REFERENCES dish(id)
);
二、插入數據
在activity表中插入一條優惠活動數據的示例:
INSERT INTO activity (name, start_date, end_date, discount)
VALUES (‘周末特惠’, ‘2022-09-01’, ‘2022-09-30’, 0.8);
在dish表中插入一條菜品數據的示例:
INSERT INTO dish (name, price, category)
VALUES (‘宮保雞丁’, 28.00, ‘川菜’);
在activity_dish表中插入菜品與優惠活動之間的關系的示例:
INSERT INTO activity_dish (activity_id, dish_id)
VALUES (1, 1);
三、查詢數據
以下是查詢特定日期內有效的優惠活動及其對應菜品的示例代碼:
SELECT a.name AS activity_name, d.name AS dish_name
FROM activity a
INNER JOIN activity_dish ad ON a.id = ad.activity_id
INNER JOIN dish d ON ad.dish_id = d.id
WHERE CURDATE() BETWEEN a.start_date AND a.end_date;
四、更新數據
以下是更新優惠活動折扣的示例代碼:
UPDATE activity
SET discount = 0.6
WHERE id = 1;
五、刪除數據
以下是刪除優惠活動及其關聯的菜品的示例代碼:
DELETE FROM activity_dish
WHERE activity_id = 1;
DELETE FROM activity
WHERE id = 1;
六、總結
通過使用MySQL數據庫,我們可以很方便地實現點餐系統的優惠活動管理功能。通過創建并操作activity、dish和activity_dish三張表,我們可以實現優惠活動的插入、查詢、更新和刪除等功能。這些功能能夠幫助餐廳靈活地制定優惠活動,并與菜品進行關聯,提升顧客的用餐體驗。
提示:
在實際的點餐系統中,為了提高查詢效率和保證數據一致性,建議給相關字段添加索引,并使用事務來操作數據庫。