口罩预约管理系统——数据库设计(前端+PHP+MySQL)
目录
一、背景
二、口罩预约管理系统介绍
1、功能模块及特点
2、系统结构
三、数据库设计
1、数据字典
2、口罩预约数据库关系模式(数据模型)
3、E-R图(概念模型)
四、MySQL创建数据库以及数据表
五、数据库设计总结
①本系统项目源码已经上传CSDN资源啦,有需要可以下载!传送门 (MaskOrder完整项目.zip-MySQL文档类资源-CSDN下载)
②微信公众号获取(推荐):关注文章最后的公众号,发送“预约管理系统”获取。
一、背景
2020年的疫情影响了我们的生产生活,政府不断加大力度联防联控,遏制疫情的蔓延势头,全国人民共同加入抗击疫情的战“疫”队伍。疫情信息发布、物资调配保障显得尤其重要,信息越详细,物资保障越充分,公众的疑虑就越少。“疫情地图”、“实时信息”、“口罩预约”的各种 APP、小程序和系统应运而生,不断规范化,纳入疫情发布的官方渠道。这些举措让公众能全方位获取疫情防控进展的信息,及时、准确、全面显得至关重要。
另外,这个小项目也是过去许久,疫情期间也有在市政官方系统预约口罩的经历,(・。・)没有中签过。不过因此对它的预约系统感兴趣,考虑自己可以简单做一个web网站版本的预约管理系统,实现基本功能,也正好课程需要完成一个数据库设计,然后做一个相对完整的应用系统,所以,这个小项目就此开始。
二、口罩预约管理系统介绍
1、功能模块及特点
本系统主要任务是实现用户口罩预约、市政人员(管理员)分配以及快递员接单配送的比较完整的功能。市政人员(管理员),普通用户,快递员这三种用户权限,功能明确,各自独立,而又存在着一定地联系,让政府更方便地管理、更高效地分配。
具体模块解析如下:
- 普通用户模块:创建账号,登录系统填写预约信息确认提交,查看订单状态,修改订单预约信息,修改个人注册信息。
- 市政人员(管理员)模块:查询已注册用户信息,修改或删除用户信息,对用户的预约订单进行合理分配,包括审核以及分配快递员。管理每种类型口罩,查询库存数量,合理分配用户预约的口罩数量,按需求查看订单的配送状态。
- 快递员模块:查看分配到的订单,选择接单配送,完成配送选择关单,按订单状态查看订单,统计完成的订单数量。
2、系统结构
系统功能结构图:
三、数据库设计
在口罩预约管理系统初期阶段,我们需要设计好系统存取数据信息的一个数据库,数据库设计也是一个重点难点,完整的数据库基本满足设计基本要求,包括数据库关系模式分析,处理好函数依赖问题,还有关系模式至少满足第三范式等。学过数据库系统概论会基本了解这些知识以及它的重要性和难度。
以目前个人能力,这个系统数据库的建立暂时满足最基本的要求,初步进行了函数依赖分析,另外根据所需功能,关系模式不是很复杂,第三范式的满足只存在于部分关系模式中。
我使用的是MySQL数据库,前期建立数据字典,然后以此进一步建立数据库及数据表,确定口罩预约管理数据库关系模式,分析关系模式的函数依赖和范式要求。接下来将具体介绍数据字典、数据模型和概念模型(E-R 图)。
1、数据字典
根据系统功能需求,系统数据库包含了8个数据表,详细内容(字段、数据类型、码)如下数据字典:
1、admin表
属性名 |
数据描述 |
数据类型 |
是否为空 |
备注 |
work_id |
管理员账号 |
varchar(32) |
不允许 |
主码 |
ad_name |
管理员名 |
varchar(32) |
不允许 |
|
pwd |
密码 |
varchar(32) |
不允许 |
|
phone |
电话 |
varchar(32) |
2、users表
属性名 |
数据描述 |
数据类型 |
是否为空 |
备注 |
user_id |
用户账号 |
varchar(32) |
不允许 |
主码 |
user_name |
姓名 |
varchar(32) |
不允许 |
|
ID |
身份证号 |
varchar(32) |
不允许 |
|
pwd |
密码 |
varchar(32) |
不允许 |
|
register_date |
注册时间 |
datetime |
3、deliver表
属性名 |
数据描述 |
数据类型 |
是否为空 |
备注 |
deliver_id |
账号 |
varchar(32) |
不允许 |
主码 |
deliver_name |
姓名 |
varchar(32) |
不允许 |
|
phone |
联系方式 |
varchar(32) |
||
pwd |
密码 |
varchar(32) |
不允许 |
4、mask表
属性名 |
数据描述 |
数据类型 |
是否为空 |
备注 |
mask_type |
类型号 |
varchar(32) |
不允许 |
主码 |
m_name |
名称 |
varchar(32) |
不允许 |
|
remain_num |
库存量 |
int(11) |
不允许 |
|
price |
价格 |
int(11) |
5、info表
属性名 |
数据描述 |
数据类型 |
是否为空 |
备注 |
order_id |
订单号 |
varchar(32) |
不允许 |
主码 |
user_id |
用户账号 |
varchar(32) |
不允许 |
外码,参照users |
user_name |
用户姓名 |
varchar(32) |
不允许 |
|
allocate_num |
分配数量 |
int(11) |
不允许 |
|
phone |
联系方式 |
varchar(32) |
不允许 |
|
address |
配送地址 |
varchar(32) |
不允许 |
|
status |
订单状态 |
varchar(32) |
不允许 |
|
re_date |
下单日期 |
datetime |
6、reserve表
属性名 |
数据描述 |
数据类型 |
是否为空 |
备注 |
user_id |
预约账号 |
varchar(32) |
不允许 |
主码,参照users |
re_date |
下单日期 |
datetime |
不允许 |
主码 |
mask_type |
类型 |
varchar(32) |
不允许 |
外码,参照mask |
ID |
身份证号 |
varchar(32) |
不允许 |
|
r_num |
预约数量 |
int(11) |
不允许 |
|
ex_date |
期望到货日 |
date |
||
phone |
联系方式 |
varchar(32) |
||
address |
地址 |
varchar(32) |
7、allocate表
属性名 |
数据描述 |
数据类型 |
是否为空 |
备注 |
work_id |
分配人 |
varchar(32) |
不允许 |
主码,参照admin |
order_id |
订单号 |
varchar(32) |
不允许 |
主码,参照order |
allocate_time |
分配日期 |
datetime |
||
deliver_id |
快递员 |
varchar(32) |
不允许 |
主码,参照deliver |
8、take表
属性名 |
数据描述 |
数据类型 |
是否为空 |
备注 |
deliver_id |
快递员账号 |
varchar(32) |
不允许 |
主码,参照deliver |
order_id |
订单号 |
varchar(32) |
不允许 |
主码,参照order |
take_date |
接单日期 |
datetime |
||
finish_date |
关单日期 |
datetime |
2、口罩预约数据库关系模式(数据模型)
各个数据表包含属性,红色表示该关系模式的主码。
管理员 (管理员账号, 密码, 管理员姓名, 电话)
用户 (用户账号, 密码, 用户姓名, 身份证号)
快递员 (快递员账号, 密码, 快递员姓名, 电话, 地址)
口罩 (口罩类型, 仓库, 存货量, 单位价格)
订单信息 (订单号, 用户账号, 用户姓名,口罩类型, 已分配数量, 联系方式, 配 送地址, 订单状态, 预约时间)
预约 (用户账号, 口罩类型, 预约时间, 期望到货日期, 预约数量, 电话, 地址)
分配 (管理员账号, 订单号, 快递员账号, 分配日期)
接关单 (快递员账号, 订单号, 快递员姓名, 接单时间, 关单时间)
3、E-R图(概念模型)
E-R图能够更加直观的展示数据关系模式之间的联系,下面则是自己画的:
这个是建立数据库后系统生成的:
四、MySQL创建数据库以及数据表
这个步骤开始对设计好的关系模式在MySQL上部署数据库以及建立各个数据表。建表代码如下:
- 建立数据库
create database maskorder;
- admin数据表(管理员表)
create table admin(work_id varchar(32) primary key not null,pwd varchar(32) not null,ad_name varchar(32),phone varchar(32));
- users数据表(用户表)
create table admin(work_id varchar(32) primary key not null,pwd varchar(32) not null,ad_name varchar(32),phone varchar(32));
- delivers数据表(快递员表)
create table delivers(deliver_id varchar(32) primary key not null,pwd varchar(32) not null,deliver_name varchar(32) not null,phone varchar(32));
- reserve数据表(用户预约表)
create table reserve(user_id varchar(32) not null,re_date datetime not null,foreign key (user_id) references users(user_id),primary key(user_id,re_date),ID varchar(32) not null,r_num int not null,ex_date date not null,phone varchar(32) not null,address varchar(32) not null);
- mask数据表(口罩信息表)
create table mask(mask_type varchar(32) primary key not null,store varchar(32) not null,remain_num int not null,price int not null);
- info数据表(订单表)
create table info(order_id varchar(32) primary key not null,user_id varchar(32) not null,foreign key (user_id) references users(user_id),user_name varchar(32) not null,allocate_num int not null,statue varchar(32) not null,re_date datetime not null,phone varchar(32) not null,address varchar(32) not null );
- allocate数据表(管理员分配表)
create table allocate(work_id varchar(32) not null,order_id varchar(32) not null,deliver_id varchar(32) not null,allocate_time datetime not null,primary key (work_id,order_id),foreign key (work_id) references admin(work_id),foreign key (order_id) references info(order_id) );
- take数据表(快递员接关单表)
create table take(deliver_id varchar(32) not null,order_id varchar(32) not null,deliver_name varchar(32) not null,take_time datetime not null,finish_time datetime not null,primary key (deliver_id,order_id),foreign key (deliver_id) references delivers(deliver_id),foreign key (order_id) references info(order_id) );
- deli_order视图(快递员查看订单表)
create view deli_order asselect order_id,mask_type,allocate_num,phone,addresss,statue,re_datefrom info;
五、数据库设计总结
在系统开发之前,数据库的设计是首要并且关键的一个步骤,对于此系统的数据表,上面介绍的是最后确定的数据表。数据库设计并不能一蹴而就,这里总结一下我不断修改的想法过程。
第一次根据系统所需要的数据建立关系模式,在保证函数依赖和无损连接的情况下,将属性phone、address放入reserve表中,users表和reserve的关系模式满足了第三范式的要求。起初设计表时候考虑是否将reserve和info合并,后来发现在物理设计和实际场景下,订单信息表info由用户预约后的reserve表生成,并且加入特有的属性订单状态status、口罩分配数量allocate_num和订单号order_id。
至此从reserve表脱离出来,后期用户、管理员、快递员对订单的查询的操作,实现了模块化的处理,不仅减少了表的连接,而且物理操作(前后端编程)更加容易,因为数据库设计中也要符合物理上的要求,所以关系模式分解为两个表,虽然增加了部分数据上的冗余,但是保证信息的模块化和实际应用的合理性。
在口罩预约管理系统数据库设计中遇到了这些问题,后来经过了理论上的分析和实际运用,解决了设计上的问题,认识到了数据模型建立的关键性。目前该数据库还可以进一步完善。
这一篇主要讲的是口罩预约管理系统定位的功能模块以及数据库设计的具体过程,这也是完成这个系统第一阶段的完整部分,下一篇将介绍系统前后端的搭建以及数据库连接,使用到的知识包括前端(HTML+CSS+Javascript)、后端(PHP)和MySQL数据库的操作,目的是建立简洁、包含基本功能的(口罩预约管理)应用系统。
①本系统项目源码已经上传CSDN资源啦,有需要可以下载!传送门 (MaskOrder完整项目.zip-MySQL文档类资源-CSDN下载)
②微信公众号获取(推荐):也可以关注我的博客下方微信公众号,发送“预约管理系统”获取。
本篇的口罩预约管理系统数据库maskOrder.txt已上传,可直接导入本地MySQL数据库。
系列文章:
(一)口罩预约管理系统——数据库设计(前端+PHP+MySQL)
(二)口罩预约管理系统——系统网站实现(前端+PHP+MySQL)
我的CSDN博客:口罩预约管理系统——数据库设计(前端+PHP+MySQL)_陆海潘江的博客-CSDN博客
口罩预约管理系统——数据库设计(前端+PHP+MySQL)相关推荐
- 口罩预约管理系统——系统网站实现(前端+PHP+MySQL)
口罩预约管理系统网站实现 一.前言 二.系统登陆逻辑及界面实现 三.用户模块 1.用户预约系统界面 2.用户查看我的订单界面 3.用户修改预约信息 四.管理员模块 1.管理员登陆界面 2.查看用户预约 ...
- 计算机毕业设计Java体检预约管理系统(源码+系统+mysql数据库+Lw文档)
计算机毕业设计Java体检预约管理系统(源码+系统+mysql数据库+Lw文档) 计算机毕业设计Java体检预约管理系统(源码+系统+mysql数据库+Lw文档) 本源码技术栈: 项目架构:B/S架构 ...
- php mysql预约_PHP+MySQL实验室预约管理系统的设计与实现
随着我国教育的改革在校学生人数的不断增加,在校大学生的数量也变的越来越多,同时面临的就是如何更加方便快捷和高效的管理高校实验室预约的问题,传统模式的实验室预约管理明显已经不能够满足当下的需求,于是我们 ...
- 基于PHP+MySQL实验室预约管理系统的设计与实现
随着我国教育的改革在校学生人数的不断增加,在校大学生的数量也变的越来越多,同时面临的就是如何更加方便快捷和高效的管理高校实验室预约的问题,传统模式的实验室预约管理明显已经不能够满足当下的需求,于是我们 ...
- 学生管理系统的mysql数据库设计_MySQL数据库--学生管理系统数据库设计
目录 学生管理系统数据库设计 学生管理系统功能介绍 数据库设计步骤 第1步: 找对象 第2步:找属性 第3步: 找关系 建表原则 第4步: 找特例: 等级明显而且不包含敏感数据的信息建议保持为1张表 ...
- 学生管理系统的mysql数据库设计_MySQL 数据库 -- 学生管理系统数据库设计
MySQL 数据库 -- 学生管理系统数据库设计 目录 学生管理系统数据库设计 学生管理系统功能介绍 数据库设计步骤 第 1 步: 找对象 第 2 步: 找属性 第 3 步: 找关系 建表遵守原则 第 ...
- 基于java校园新闻管理系统数据库模块的论文_基于JSP的校园新闻管理系统的设计与实现(MySQL)...
基于JSP的校园新闻管理系统的设计与实现(MySQL)(包含任务书,开题报告,中期报告,毕业论文,28000字,程序代码,数据库) 摘 要 本人从校园网建设的实际情况出发,经过对相关校园新闻资讯网站 ...
- 用Mysql做个人信息管理系统_个人信息管理系统数据库设计精选.doc
个人信息管理系统数据库设计精选 河海大学计算机及信息工程学院(常州) 数据库课程设计 学年学期 2012第二学期 项目名称 个人信息管理 项目组员 曹清云.陈天昊 指导教师 景雪琴 组号:8 目 录 ...
- 用mysql设计数据库管理系统_MySQL数据库--学生管理系统数据库设计
学生管理系统数据库设计 设计一套数据库首先要熟悉当前系统有哪些功能,具体的业务流程是什么 学生管理系统功能介绍 一套学校用的学生管理系统,最核心的功能如下 学生信息管理(增加学生,删除学生,修改学生, ...
- 餐饮管理系统 mysql数据库设计分析_终稿课程设计_餐饮管理系统数据库设计.docOK版(样例3)...
<课程设计_餐饮管理系统数据库设计.doc>由会员分享,可免费在线阅读全文,更多与<(终稿)课程设计_餐饮管理系统数据库设计.doc(OK版)>相关文档资源请在帮帮文库(www ...
最新文章
- 类似人手的手部假肢相关研究登上Science子刊封面
- SharpDevelop源码分析 (一、序+基本概念) 收藏
- javascript高级程序设计---Event对象二
- 怎么写字_写字楼外卖员不让进怎么办?写字楼外卖柜提供解决方案!
- 计算机视觉、机器学习相关领域论文和源代码大集合--持续更新……
- 深入理解C++中的RVO
- 信息学奥赛一本通 1229:电池的寿命 | OpenJudge NOI 4.6 2469:电池的寿命
- linux清缓存命令多节点,Liunx手动释放buffers/cache内存_linux,缓存,
- python用二维码共享文档_[源码和文档分享]基于Python的QR二维码的生成与识别程序...
- 打开文件对话框在xp和win7上的实现文件任意多选
- php 遍历文件夹下的所有文件名以及文件大小
- vs2019添加opencv目录和dlib目录
- Java学习笔记之设计模式(6)观察者模式
- 任意角度旋转图片(python)
- Java class文件反编译工具推荐以及Eclipse中查看/调试Jar包中的代码
- GCP Marker生成的刺点文件导入Pix4D教程
- 将ClearCase的客户端编码设置为UTF-8
- 中职学校计算机技能大赛总结,中职学校技能大赛总结
- unity2D学习笔记-角色动画
- u盘能不能给联想服务器做系统盘,u盘能当系统盘吗?怎么把U盘做成系统盘
热门文章
- Ajax传json对象(jQuery)
- 读书笔记:Sheldon.M.Ross:概率论基础教程:2014.01.22
- 积分简明笔记-第一类曲线积分的类型
- 微信小程序开发的学习资料收集
- 使用PLC编程(ST语言)开发的DES加密解密功能块
- seay代码审计mysql插件报错_Seay源代码审计系统2.1版本下载(附源码): 人人都是代码审计师...
- cmake安装及下载
- 远程设备运维云平台软件与常规组态软件的区别(V1.1)?
- SAP License:财务流程-新
- 信息架构、结构图、流程图