【实验目的】
1、掌握规范化数据库设计包括步骤及其任务、方法、结果等。
2、掌握数据库设计过程中关键文档的写法。
3、了解数据库辅助设计工具。
【实验内容】
请按下面大纲书写实验报告(请自行附页)。
(1)需求分析,给出数据字典与数据流图
(2)数据分析,设计E-R模型
(3)E-R模型转换为关系模型
(4)数据库说明
(5)创建表SQL语句
要求:其中,E-R图中至少3个以上实体,每个实体5个以上属性,至少2种以上联系。
用户下订单后发下订单后给系统处理,系统首先根据订单判断价格信息等是否有误,然后接着除用户订单数量等等,然后将订单分类为是否付款,如果付款就准时发送订单,如果在规定时内付款则即时发订单发送给商家
数据流字典:
名称 | 来源 | 去向 | 所含数据结构 | 说明 |
---|---|---|---|---|
订单 | U1 | F1 | json类型数据格式,以键值对的形式存储 | 用户提交的商品详情 |
订单信息 | F1 | D2 | json类型数据格式,以键值对的形式存储 | 订单的是否合格信息 |
订单数目 | F2 | D3 | json类型数据格式,以键值对的形式存储 | 处理后的订单数量 |
正常付款订单 | F2.1 | D4 | json类型数据格式,以键值对的形式存储 | 包含了订单的付款状态信息 |
未正常付款订单 | F2.1 | D4 | json类型数据格式,以键值对的形式存储 | 包含了订单的付款状态信息 |
准时处理 | D4 | F2.2 | json类型数据格式,以键值对的形式存储 | 包含了订单的付款状态信息 |
即使处理 | D4 | F2.3 | json类型数据格式,以键值对的形式存储 | 包含了订单的付款状态信息 |
发送订单 | D5 | S1 | json类型数据格式,以键值对的形式存储 | 包含了订单完整信息 |
数据处理字典(F1~Fn):
编号 | 名称 | 来源 | 处理逻辑概括 | 输出数据流 | 说明 |
---|---|---|---|---|---|
F1 | 订单检查 | 订单+菜单目录 | 判断订单的金额与价格与实体是否一致 | 订单信息 | |
F2 | 数目统计 | 订单信息 | 计算订单的数目 | 订单数目 | |
F2.1 | 订单分类 | 订单数目 | 根据是否付款把的订单分类 | 正常付款订单&未付款订单 | |
F2.2 | 准时处理 | 正常订单 | 判断金额把数据返回给客户 | 准时处理 | |
F2.3 | 即使处理 | 待付款倒计时的订单 | 如果订单超时删除该订单,返回交易关闭,如果在规定时间内付款,则发送订单给商家 | 即使处理 | |
F2.4 | 发送订单 | 待发送订单 | 把的订单发送给客户 | 发送订单 |
数据存储字典(D1~Dn):
编号 | 名称 | 插入数据流 | 输出数据流 | 内容 | 说明 |
---|---|---|---|---|---|
D2 | 合格订单 | F1 | F2 | 订单 | 用于存储合格的订单 |
D3 | 订单数目 | F2 | F2.1 | 订单数量 | 用于存储订单数量和价格 |
D4 | 正常付款订单 | F2.1 | F2.2 | 订单详情价格金额已付款金额 | 用于存储正常付款的订单 |
D4 | 未付款订单 | F2.1 | F2.3 | 订单详情价格金额需要付款的时间,订单时间 | 用于存储未付款或未正常付款的订单 |
D5 | 转发订单 | F2.1+F2.3 | F2.4 | 所有与订单的相关信息 | 用于存储所有与订单相关的信息 |
数据项字典:
给出数据描述的部分内容,对数据流图中的各个存储文件中的记录字段予以逐个定义
编号 | 名称 | 类型 | 长度 | 说明 | 备注 |
---|---|---|---|---|---|
I1 | Order_Id | int | |||
l2 | Order_Name | varchar | 50 | ||
l3 | Order_Amount | float | 支付金额 | ||
l4 | Order_PayTime | DateTIme | 时间 | ||
l5 | Order_Time | DateTIme | |||
l6 | Order_Merchant_ID | int | |||
l7 | OrderDetail_Status | varchar | 50 | 支付状态是否支付,支付异常信息等 |
E-R图
将上述E-R图转换为关系模式模型
下划线为主码,删除线为外码,
订单(订单编号,订单名称,订单金额,付款时间,下单时间,商家编号)对应的实体订单,包含联系”属于“
商家(商家编号,商家名称,商家电话,商家地址,店主,注册日期)对应实体商家
菜单(菜单编号,菜名,类别,味道,重量,单价)
订单详情(订单编号,菜单编号,订单状态)对应联系”组成“
菜品列表(菜单编号,商家编号)对应联系"包含"
数据库说明
表名 | 内容 |
---|---|
Order | 订单 |
Merchant | 商家 |
Menu | 菜单 |
OrderDetail | 订单详情 |
MenuList | 菜品列表 |
1.Order:
字段名 | 数据类型长度 | 字段中文名 | 约束 |
---|---|---|---|
Order_Id | int | 订单编号 | Primary Key |
Order_Name | varchar(50) | 订单名称 | Not Null |
Order_Amount | float | 订单金额 | |
Order_PayTime | DateTime | 付款时间 | |
Order_Time | DateTime | 下单时间 | |
Order_Merchant_ID | int | 商家编号 | Foreign Key |
2.Merchant
字段名 | 数据类型长度 | 字段中文名 | 约束 |
---|---|---|---|
Merchant_Id | int | 商家编号 | Primary Key |
Merchant_Name | varchar(50) | 商家名称 | Not Null |
Merchant_Tel | varchar(50) | 商家电话 | Not Null |
Merchant_Local | varchar(50) | 商家地址 | |
Merchant_Master | varchar(50) | 店主 | |
Merchant_LoginTime | time | 注册日期 | Not Null |
3.Menu
字段名 | 数据类型长度 | 字段中文名 | 约束 |
---|---|---|---|
Menu_Id | int | 菜单编号 | Primary Key |
Menu_Name | varchar(50) | 菜名 | Not Null |
Menu_Type | varchar(50) | 类别 | Not Null |
Menu_Taste | varchar(50) | 味道 | |
Menu_Weight | varchar(50) | 重量 | |
Menu_Price | float | 单价 | Foreign Key |
4.OrderDetail
字段名 | 数据类型长度 | 字段中文名 | 约束 | |
---|---|---|---|---|
OrderDetail_Order | int | 订单编号 | FOREIGN KEY | Primary Key |
OrderDetail_Menu | int | 菜单编号 | FOREIGN KEY | |
OrderDetail_Status | varchar(50) | 订单状态 |
5.MenuList
字段名 | 数据类型长度 | 字段中文名 | 约束 | |
---|---|---|---|---|
MenuList_Menu_ID | int | 菜单编号 | FOREIGN KEY | Primary Key |
MenuList_Merchant_ID | int | 商家编号 | FOREIGN KEY |
创建表sql语句
DROP TABLE IF EXISTS `menu`;
CREATE TABLE `menu` (
`Menu_Id` int(11) NOT NULL COMMENT '菜单编号',
`Menu_Name` varchar(50) NOT NULL COMMENT '菜名',
`Menu_Type` varchar(50) DEFAULT NULL COMMENT '类别',
`Menu_Taste` varchar(50) DEFAULT NULL COMMENT '味道',
`Menu_Weight` varchar(50) DEFAULT NULL COMMENT '重量',
`Menu_Price` float NOT NULL COMMENT '单价',
PRIMARY KEY (`Menu_Id`),
CONSTRAINT `menu_ibfk_1` FOREIGN KEY (`Menu_Id`) REFERENCES `menulist` (`MenuList_Menu_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `menu` */
/*Table structure for table `menulist` */
DROP TABLE IF EXISTS `menulist`;
CREATE TABLE `menulist` (
`MenuList_Menu_ID` int(11) NOT NULL COMMENT '菜单编号',
`MenuList_Merchant_ID` int(11) NOT NULL COMMENT '商家编号',
PRIMARY KEY (`MenuList_Menu_ID`,`MenuList_Merchant_ID`),
KEY `MenuList_Merchant_ID` (`MenuList_Merchant_ID`),
CONSTRAINT `menulist_ibfk_1` FOREIGN KEY (`MenuList_Merchant_ID`) REFERENCES `merchant` (`Merchant_Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `menulist` */
/*Table structure for table `merchant` */
DROP TABLE IF EXISTS `merchant`;
CREATE TABLE `merchant` (
`Merchant_Id` int(11) NOT NULL COMMENT '商家编号',
`Merchant_Name` varchar(50) NOT NULL COMMENT '商家名称',
`Merchant_Tel` varchar(50) NOT NULL COMMENT '商家电话',
`Merchant_Local` varchar(50) NOT NULL COMMENT '商家地址',
`Merchant_Master` varchar(50) DEFAULT NULL COMMENT '店主',
`Merchant_LoginTime` time DEFAULT NULL COMMENT '注册日期',
PRIMARY KEY (`Merchant_Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `merchant` */
/*Table structure for table `order` */
DROP TABLE IF EXISTS `order`;
CREATE TABLE `order` (
`Order_Id` int(11) NOT NULL COMMENT '订单编号',
`Order_Name` varchar(50) NOT NULL COMMENT '订单名称',
`Order_Amount` float DEFAULT NULL COMMENT '订单金额',
`Order_PayTime` datetime DEFAULT NULL COMMENT '付款时间',
`Order_Time` datetime DEFAULT NULL COMMENT '下单时间',
`Order_Merchant_ID` int(11) DEFAULT NULL COMMENT '商家编号',
PRIMARY KEY (`Order_Id`),
KEY `Order_Merchant_ID` (`Order_Merchant_ID`),
CONSTRAINT `order_ibfk_1` FOREIGN KEY (`Order_Merchant_ID`) REFERENCES `merchant` (`Merchant_Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `order` */
/*Table structure for table `orderdetail` */
DROP TABLE IF EXISTS `orderdetail`;
CREATE TABLE `orderdetail` (
`OrderDetail_Order` int(11) NOT NULL COMMENT '订单编号',
`OrderDetail_Menu` int(11) NOT NULL COMMENT '菜单编号',
`OrderDetail_Status` varchar(50) DEFAULT NULL COMMENT '订单状态',
PRIMARY KEY (`OrderDetail_Order`,`OrderDetail_Menu`),
KEY `OrderDetail_Menu` (`OrderDetail_Menu`),
CONSTRAINT `orderdetail_ibfk_1` FOREIGN KEY (`OrderDetail_Order`) REFERENCES `order` (`Order_Id`),
CONSTRAINT `orderdetail_ibfk_2` FOREIGN KEY (`OrderDetail_Menu`) REFERENCES `menu` (`Menu_Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;