实验四 数据库设计

【实验目的】

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

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

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

【实验内容】

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

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

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

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

(4)数据库说明

(5)创建表SQL语句

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

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

 

数据流字典:

名称来源去向所含数据结构说明
订单U1F1json类型数据格式,以键值对的形式存储用户提交的商品详情
订单信息F1

D2

json类型数据格式,以键值对的形式存储订单的是否合格信息
订单数目F2D3json类型数据格式,以键值对的形式存储处理后的订单数量
正常付款订单F2.1D4json类型数据格式,以键值对的形式存储包含了订单的付款状态信息
未正常付款订单F2.1D4json类型数据格式,以键值对的形式存储包含了订单的付款状态信息
准时处理D4F2.2json类型数据格式,以键值对的形式存储包含了订单的付款状态信息
即使处理D4F2.3json类型数据格式,以键值对的形式存储包含了订单的付款状态信息
发送订单D5S1json类型数据格式,以键值对的形式存储包含了订单完整信息

数据处理字典(F1~Fn):

编号名称来源处理逻辑概括输出数据流说明
F1订单检查订单+菜单目录判断订单的金额与价格与实体是否一致订单信息
F2数目统计 订单信息计算订单的数目订单数目
F2.1订单分类订单数目根据是否付款把的订单分类正常付款订单&未付款订单
F2.2准时处理正常订单判断金额把数据返回给客户准时处理
F2.3  即使处理待付款倒计时的订单如果订单超时删除该订单,返回交易关闭,如果在规定时间内付款,则发送订单给商家即使处理
F2.4发送订单待发送订单把的订单发送给客户发送订单

数据存储字典(D1~Dn):

编号名称插入数据流输出数据流内容说明
D2合格订单F1F2订单用于存储合格的订单
D3订单数目F2F2.1订单数量用于存储订单数量和价格
D4正常付款订单F2.1F2.2订单详情价格金额已付款金额用于存储正常付款的订单
D4未付款订单F2.1F2.3订单详情价格金额需要付款的时间,订单时间用于存储未付款或未正常付款的订单
D5转发订单F2.1+F2.3F2.4所有与订单的相关信息用于存储所有与订单相关的信息

数据项字典:

给出数据描述的部分内容,对数据流图中的各个存储文件中的记录字段予以逐个定义

编号名称类型长度说明备注
I1Order_Idint  
l2Order_Namevarchar50
l3Order_Amountfloat支付金额
l4Order_PayTimeDateTIme时间
l5Order_TimeDateTIme
l6Order_Merchant_IDint  
l7OrderDetail_Statusvarchar50支付状态是否支付,支付异常信息等

 E-R图

 

 将上述E-R图转换为关系模式模型

下划线为主码,删除线为外码,

订单(订单编号,订单名称,订单金额,付款时间,下单时间,商家编号)对应的实体订单,包含联系”属于“

商家(商家编号,商家名称,商家电话,商家地址,店主,注册日期)对应实体商家

菜单(菜单编号,菜名,类别,味道,重量,单价)

订单详情(订单编号菜单编号,订单状态)对应联系”组成“

菜品列表(菜单编号商家编号)对应联系"包含"

数据库说明

表说明
表名内容
Order订单
Merchant商家
Menu 菜单
OrderDetail订单详情
MenuList菜品列表

1.Order:

字段名数据类型长度字段中文名约束
Order_Idint        订单编号Primary Key
Order_Namevarchar(50)订单名称Not Null
Order_Amountfloat订单金额
Order_PayTimeDateTime付款时间
Order_TimeDateTime下单时间
Order_Merchant_IDint     商家编号Foreign Key

2.Merchant

字段名数据类型长度字段中文名约束
Merchant_Idint        商家编号Primary Key
Merchant_Namevarchar(50)商家名称Not Null
Merchant_Telvarchar(50)商家电话Not Null
Merchant_Localvarchar(50)商家地址
Merchant_Mastervarchar(50)店主
Merchant_LoginTimetime     注册日期Not Null

3.Menu

字段名数据类型长度字段中文名约束
Menu_Idint        菜单编号Primary Key
Menu_Namevarchar(50)菜名Not Null
Menu_Typevarchar(50)类别Not Null
Menu_Tastevarchar(50)味道
Menu_Weightvarchar(50)重量
Menu_Pricefloat    单价Foreign Key

4.OrderDetail

字段名数据类型长度字段中文名约束
OrderDetail_Orderint        订单编号FOREIGN KEYPrimary Key
 
OrderDetail_Menuint菜单编号FOREIGN KEY
OrderDetail_Statusvarchar(50)订单状态

5.MenuList

字段名数据类型长度字段中文名约束
MenuList_Menu_IDint        菜单编号FOREIGN KEYPrimary Key
MenuList_Merchant_IDint商家编号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;

  • 23
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TECreate

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值