实验四 数据库设计

【实验目的】

1、掌握规范化数据库设计包括步骤及其任务、方法、结果等。

2、掌握数据库设计过程中关键文档的写法。

3、了解数据库辅助设计工具。

【实验内容】

请按下面大纲书写实验报告(请自行附页)。

(1)需求分析,给出数据字典与数据流图

(2)数据分析,设计E-R模型

(3)E-R模型转换为关系模型

(4)数据库说明

(5)创建表SQL语句

要求:其中,E-R图中至少3个以上实体,每个实体5个以上属性,至少2种以上联系。

 用户下订单后发下订单后给系统处理,系统首先根据订单判断价格信息等是否有误,然后接着除用户订单数量等等,然后将订单分类为是否付款,如果付款就准时发送订单,如果在规定时内付款则即时发订单发送给商家 

 实验四 数据库设计_第1张图片

数据流字典:

名称 来源 去向 所含数据结构 说明
订单 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图

 实验四 数据库设计_第2张图片

 

 将上述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;

实验四 数据库设计_第3张图片

你可能感兴趣的:(数据库)