口罩预约管理系统——数据库设计(前端+PHP+MySQL)

目录

一、背景

二、口罩预约管理系统介绍

1、功能模块及特点

2、系统结构

三、数据库设计

1、数据字典

2、口罩预约数据库关系模式(数据模型)

3、E-R图(概念模型)

四、MySQL创建数据库以及数据表

五、数据库设计总结


①本系统项目源码已经上传CSDN资源啦,有需要可以下载!传送门 (MaskOrder完整项目.zip-MySQL文档类资源-CSDN下载

②微信公众号获取(推荐):关注文章最后的公众号,发送“预约管理系统”获取

一、背景

2020年的疫情影响了我们的生产生活,政府不断加大力度联防联控,遏制疫情的蔓延势头,全国人民共同加入抗击疫情的战“疫”队伍。疫情信息发布、物资调配保障显得尤其重要,信息越详细,物资保障越充分,公众的疑虑就越少。“疫情地图”、“实时信息”、“口罩预约”的各种 APP、小程序和系统应运而生,不断规范化,纳入疫情发布的官方渠道。这些举措让公众能全方位获取疫情防控进展的信息,及时、准确、全面显得至关重要。

另外,这个小项目也是过去许久,疫情期间也有在市政官方系统预约口罩的经历,(・。・)没有中签过。不过因此对它的预约系统感兴趣,考虑自己可以简单做一个web网站版本的预约管理系统,实现基本功能,也正好课程需要完成一个数据库设计,然后做一个相对完整的应用系统,所以,这个小项目就此开始。

二、口罩预约管理系统介绍

1、功能模块及特点

本系统主要任务是实现用户口罩预约、市政人员(管理员)分配以及快递员接单配送的比较完整的功能。市政人员(管理员),普通用户,快递员这三种用户权限,功能明确,各自独立,而又存在着一定地联系,让政府更方便地管理、更高效地分配。

具体模块解析如下:

  1. 普通用户模块:创建账号,登录系统填写预约信息确认提交,查看订单状态,修改订单预约信息,修改个人注册信息。
  2. 市政人员(管理员)模块:查询已注册用户信息,修改或删除用户信息,对用户的预约订单进行合理分配,包括审核以及分配快递员。管理每种类型口罩,查询库存数量,合理分配用户预约的口罩数量,按需求查看订单的配送状态。
  3. 快递员模块:查看分配到的订单,选择接单配送,完成配送选择关单,按订单状态查看订单,统计完成的订单数量。

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 as

        select order_id,mask_type,allocate_num,phone,addresss,statue,re_date

        from 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博客

  • 140
    点赞
  • 914
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 60
    评论
主要界面预览:http://blog.csdn.net/xiaozaq/article/details/78399316 系统主要功能介绍: 实验室预约管理系统主要有2个使用角色:管理员和学生 管理员模块: 1.学生信息管理。添加了学生用户,学生才能使用工号和初始密码登录系统。首次登录系统后需要修改密码。 实体主要属性:学生id,学号,学生姓名,性别,班级。 2.教师信息管理。添加教师信息,与实验项目批次关联。教师与实验项目批次是一对多的关系。 实体主要属性:教师id,教师姓名,性别,所属院系。 3.管理员信息管理。添加管理员用户。管理员用户有管理员模块的所有操作权限。 实体主要属性:管理员id,姓名,性别,所属院系。 4.学期管理。学期和实验项目是一对多的关系。 实体主要属性:学期名称,开始时间,结束时间,是否可用。 5.课程管理。课程和实验项目是一对多的关系。 实体主要属性:课程id,课程名称。 6.实验项目管理。与课程是多对一关系,与学期是多对一关系 实体主要属性:实验项目id,实验项目名称,所属课程id,所属学期。 7.实验项目批次管理。一个实验项目可能有多个批次,由不同的老师指导。每个批次对应一个老师。 实体主要属性:实验批次id,实验项目id,教师id,实验地点,容纳人数,实验日期,节次,是否确认。 8.学生预约申请管理。管理员审核学生预约申请,如容纳人数已满等情况则拒绝学生的预约申请,并填写相应的原因告知学生。 实体主要属性:学生id,实验批次id,申请时间,审核结果,原因,考勤签到。 9.考勤管理。学生预约成功后,管理员根据实验批次学生参与情况进行考勤。便于以后统计。 学生模块: 1.预约实验室。学生预约已确认的项目批次。申请后添加一条学生预约申请记录。 2.取消预约。学生预约申请后,如管理员还未审核,则可以取消预约。审核成功后不能取消。 3.查看我的预约。查看自己的预约申请记录。 说明: 1.该系统是基于ofbiz 16.11.02版本开发的。 2.系统使用的数据库mysql。(可以使用其他数据库,只要根据搭建ofbiz系统时配置决定。) 安装运行步骤: 1.搭建好ofbiz系统。具体搭建步骤见:http://blog.csdn.net/xiaozaq/article/details/72763123 2.将解压的文件夹booking复制到apache-ofbiz-16.11.02\hot-deploy目录下。 3.将解压的文件夹lib里的文件复制到apache-ofbiz-16.11.02\lib目录下。 常见问题解决办法: 1.中文乱码等问题解决办法可以查看:ofbiz实战——实验室预约系统导航页 http://blog.csdn.net/xiaozaq/article/details/78400088
评论 60
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

陆海潘江小C

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

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

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

打赏作者

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

抵扣说明:

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

余额充值