实验四 数据库设计

news2025/2/27 1:55:52

【实验目的】

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;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/501054.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MySQL】Mysql索引失效场景(15个必知)

文章目录 背景数据库及索引准备创建表结构初始化数据数据库版本及执行计划 1、联合索引不满足最左匹配原则2、 使用了select *3 、索引列参与运算4、 索引列参使用了函数5、 错误的Like使用6、 类型隐式转换7、使用OR操作8、 两列做比较9、 不等于比较10、 is not null11、 not…

ChatGPT实现stackoverflow 解释

stackoverflow 解释 ChatGPT 公开服务以来,程序员们无疑是最早深入体验和"测试"的一批人。出色的效果也引发了一系列知识产权上的争议。著名的 stackoverflow 网站,就宣布禁止用户使用 ChatGPT 生成的内容来回答问题,一经发现&…

系统分析师之系统设计(十五)

目录 一、软件流程设计 1.1 业务流程分析方法 1.2 业务流程建模 1.2.1 标杆瞄准 1.2.2 IDEF 1.2.3 DEMO 1.2.4 流程建模语言 1.2.5 基于服务的BPM 1.2.6 业务流程重组BPR 1.2.7 业务流程管理BPM 二、软件架构设计 2.1 概念 2.2 软件架构风格 三、 结构化设计 四…

这样的应急科普,你爱了吗?

“当我给救援队叔叔系上红领巾的时候,我特别的自豪,很开心!” “救援队的叔叔、阿姨们都很伟大,我长大了,也想和他们一样。” “我爸爸就是一名救援队队员,我很崇拜他!” 敬少先队员礼&#…

高通 Android 8/9/12/13 兼容U盘识别extfat模式

Android本身不支持extfat格式 需要通过nofuse 打kernel补丁方式去实现 Android 8/9 1、kernel/msm-4.9/arch/arm64/configs/sdm670-perf_defconfig 增加代码如下(需要提交编译kernel记得git add sdm670-perf_defconfig 不需要commit哈!否则编译会还原…

最强算法视频公开课!(内容硬核,完全免费!

和录友们汇报一下,代码随想录算法公开课已经更新完毕了。 由我亲自录制了140期算法视频,覆盖了 《代码随想录》纸质版上全部题目的讲解。 视频全部免费开放在B站:代码随想录 目录就在视频播放的右边,完全按照代码随想录的顺序讲…

利用Redis的SetNx一步步实现分布式锁并改进

文章目录 1 基本原理和实现方式对比2 Redis分布式锁的实现核心思路3 利用setnx方法实现分布式锁加锁逻辑释放锁逻辑修改业务代码 4 Redis分布式锁误删情况说明5 解决Redis分布式锁误删问题6 分布式锁的原子性问题7 Lua脚本解决多条命令原子性问题8 利用Java代码调用Lua脚本改造…

DevOps产品开发实践

背景 2022年11月,公司启动了智能运维产品的研发项目,该项目基于zabbix进行二次开发,对行业客户的数据中心的基础软硬件设施进行数据采集和分析,通过持续的数据采集和监控,及时发现数据中心软硬件的异常状态并预警&…

k8s集群部署 | 三节点(复用)高可用集群过程参考

文章目录 1. kubeadm 部署三节点(复用)高可用 k8s 集群1.1 环境规划阶段1.1.1 实验架构图1.1.2 系统版本说明1.1.3 环境基本信息1.1.4 k8s 网段划分 1.2 基础安装及优化阶段1.2.1 系统信息检查1.2.2 静态 IP 地址配置1.2.3 配置主机名1.2.4 配置/etc/hos…

open3d 源码阅读kd_tree_search.py

核心函数接口: search_radius_vector_3d search_knn_vector_3d # ---------------------------------------------------------------------------- # - Open3D: www.open3d.org - # ----------------------…

基于Html+css的图展示52

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

ubuntu脚本解释器踩坑:#!/bin/bash 与 #!/bin/sh

前言: 博主正在写linux的脚本的时候遇到:xx.sh: 3: Syntax error: "(" unexpected 查看shell脚本语法没有问题,后面发现是解释器的原因。 一、不同的解释器 #!是特殊的表示符,其后面根的是此解释此脚本的shell的路径…

【Linux】Linux安装Nexus(图文解说详细版)

文章目录 1.下载2.解压3.启动4.打开防火墙(云服务器)5.访问nexus 1.下载 https://help.sonatype.com/repomanager3/product-information/download/download-archives—repository-manager-3 新建nexus文件夹,上传到服务器中 2.解压 tar -zxvf nexus-3.…

Java序列化引发的血案

1、引言 阿里巴巴Java开发手册在第一章节,编程规约中OOP规约的第15条提到: **【强制】**序列化类新增属性时,请不要修改serialVersionUID字段,避免反序列失败;如果完全不兼容升级,避免反序列化混乱&#x…

【大数据之Hadoop】二十七、生产调优-HDFS多目录

1 NameNode多目录配置 NameNode本地目录可以配置多个&#xff0c;每个目录存放内容相同&#xff0c;增加可靠性。 在hdfs-site.xml中添加&#xff0c;每台服务器节点的磁盘不同&#xff0c;可以选择不分发。 <property><name>dfs.namenode.name.dir</name>…

All in AI,现在开始算不算太晚?

编者按&#xff1a;目前大模型近乎可以帮助人类处理方方面面的事情&#xff0c;如对话、写文章、写代码等等。在大模型“狂飙”趋势下&#xff0c;想要从事AI领域的小伙伴可能会犹疑&#xff1a;现在进入AI领域会不会已经太晚了&#xff1f; 本文作者结合自身转型经历和对AI市场…

蓝牙耳机哪个牌子好?无线蓝牙耳机前十排名

现如今&#xff0c;蓝牙耳机品牌越来越多&#xff0c;很多人都不知道怎么选。下面&#xff0c;我来给大家推荐十款很不错的蓝牙耳机&#xff0c;有需要的朋友可以参考一下。 一、南卡小音舱Lite2蓝牙耳机 参考价&#xff1a;239 蓝牙版本&#xff1a;5.3 南卡作为国产影音数码…

[数据库系统] 四、分组操作符与聚集函数

第1关&#xff1a;数据统计&#xff08;初级&#xff09; 使用 group by 语句结合聚集函数解决数据统计问题 数据统计 一般的数据统计关系代数表达式如下&#xff1a; 其中L是属性集。含义是在属性集L上分组&#xff0c;分组后用函数fun运算 &#xff0c;如 表示按性别sex的…

Android UI深度理解:Activity UI视图结构

Activity UI视图结构 每个Activity都会获得一个窗口&#xff0c;那就是Window&#xff0c;它用于绘制用户的UI界面 Window是一个抽象类&#xff0c;提供了绘制窗口的一组通用API&#xff0c;PhoneWindow是它的唯一实现类 DecorView是所有应用窗口的根节点。是FrameLayout的子类…

java 生产者消费者问题解决办法

Java的生产者消费者模式是 Java的核心之一&#xff0c;它可以提供很好的性能和扩展性。但是在 Java的生产环境中&#xff0c;生产者消费者模式并不是很稳定&#xff0c;因为如果出现网络问题、程序崩溃等情况&#xff0c;生产者消费者模式可能会不稳定&#xff0c;给业务带来影…