利用MySQL实现一个类似美团外卖的外卖订单的数据库管理系统

您所在的位置:网站首页 外卖省外订餐怎么定位店铺 利用MySQL实现一个类似美团外卖的外卖订单的数据库管理系统

利用MySQL实现一个类似美团外卖的外卖订单的数据库管理系统

2024-07-01 09:55:06| 来源: 网络整理| 查看: 265

利用MySQL实现一个类似美团外卖的外卖订单的数据库管理系统

本文的重点在于MySQL触发器的应用

1、数据库需求分析

​ 1)数据库实体:客户、商家、商品、订单。

​ 2)一个客户对应多个订单。

​ 3)一个商家对应多种商品和多个订单。

​ 4)一个订单对应一种商品。

2、系统功能分析

​ 1)客户注册:客户通过添加必要的信息到数据库来完成注册。

​ 2)客户信息修改:客户根据自己的编号来修改除编号外的其他信息。

​ 3)商家注册:商家通过添加必要的信息到数据库来完成注册。

​ 4)商家信息修改:商家根据自己的编号来修改除编号外的其他信息。

​ 5)商品录入:商家通过添加商品必要的信息到数据库来完成商品录入。

​ 6)商品信息修改:商家根据商品编号来修改商品除编号外的其他信息。

​ 7)客户下单:客户通过添加订单信息到数据库来提交订单。

​ 8)商家接单:商家通过修改订单状态来接受订单。

​ 9)客户确认收货:客户通过修改订单状态来确认收货。

​ 10)取消订单:客户通过修改订单状态来退款,但必须在商家接单之前退款。

​ 11)订单状态:“0”表示已支付,“1”表示已接单,“2”表示已送达,“3”表示已退款。

3、关系模式

​ 1)客户(客户编号,客户姓名,消费金额 ,客户电话,客户地址)

​ 2)商家(商家编号,商户名称,营业额 ,商户电话,商户地址)

​ 3)商品(商品编号,商品名称,商户编号,商品价格,限购数量)

​ 4)订单(订单编号,订购时间,客户编号,商品编号,数量,总额,状态)

​ 注:含下划线字段为主键或外键。

4、创建数据库及表

​ 1)创建数据库

CREATE DATABASE takeout;

​ 2)创建客户表

CREATE TABLE customers( id int NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(40) NOT NULL , consumption DOUBLE(16,2) NOT NULL DEFAULT 0, phone VARCHAR(16) NOT NULL , address VARCHAR(45) NOT NULL );

​ 3)创建商家表

CREATE TABLE businesses( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(40) NOT NULL , turnover DOUBLE(16,2) NOT NULL DEFAULT 0, phone VARCHAR(16) NOT NULL , address VARCHAR(45) NOT NULL );

​ 4)创建商品表

CREATE TABLE goods( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(40) NOT NULL , business_id INT NOT NULL , price DOUBLE(16,2) NOT NULL , limit_num INT , FOREIGN KEY (business_id) REFERENCES businesses(id) );

​ 5)创建订单表

CREATE TABLE orders( id INT NOT NULL AUTO_INCREMENT, order_time DATETIME NOT NULL , customer_id INT NOT NULL , goods_id INT NOT NULL , number INT NOT NULL , total_cost DOUBLE(16,2) NOT NULL , state INT NOT NULL DEFAULT 0 , PRIMARY KEY (id), FOREIGN KEY (customer_id) REFERENCES customers(id), FOREIGN KEY (goods_id) REFERENCES goods(id) ); 5、创建触发器

​ 1)创建触发器前修改sql语句结束符为#

DELIMITER #

​ 2)限购以及计算订单总额   创建之后,在客户订购的商品数量超过限购数量时,自动将订购的数量改为限购数量,然后计算出订单总额。

CREATE TRIGGER limit_buy BEFORE INSERT ON orders FOR EACH ROW BEGIN DECLARE p DOUBLE(16,2); /*商品单价*/ DECLARE lim INT; /*限购数量*/ SET p=(SELECT price FROM goods WHERE goods.id=NEW.goods_id); SET lim=(SELECT limit_num FROM goods WHERE goods.id=NEW.goods_id); if (lim IS NOT NULL AND NEW.number>lim) THEN SET NEW.number=lim; END IF ; SET NEW.total_cost=NEW.number*p; END #

​ 3)更新客户消费总额   在客户提交订单之后,自动将消费金额累加到客户总的消费金额里。

CREATE TRIGGER calculate_consumption AFTER INSERT ON orders FOR EACH ROW BEGIN UPDATE customers SET consumption=consumption+NEW.total_cost WHERE customers.id=NEW.customer_id; END #

​ 4)更新商家总营业额以及退款   商家接单后,自动将订单金额累加到商家的营业额里;客户取消订单,自动将客户总消费减去本次订单金额。

CREATE TRIGGER calculate_turnover BEFORE UPDATE ON orders FOR EACH ROW BEGIN IF (NEW.state=1 AND OLD.state=0) THEN UPDATE businesses SET turnover=turnover+OLD.total_cost WHERE id=(SELECT business_id FROM goods WHERE goods.id=NEW.goods_id); ELSEIF (NEW.state=3 AND OLD.state=0) THEN UPDATE customers SET consumption=consumption-OLD.total_cost WHERE id=OLD.customer_id; ELSEIF (NEW.state


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭