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

口罩预约管理系统——数据库设计(前端+PHP+MySQL)口罩预约管理系统(数据库设计)基本功能实现,如何结合前端基础、后端PHP和MySQL数据库实现呢?手把手教你设计数据库,搭建口罩预约管理系统,实现基本需求功能!

大家好,又见面了,我是你们的朋友全栈君。

目录

一、背景

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

1、功能模块及特点

2、系统结构

三、数据库设计

1、数据字典

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

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

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

五、数据库设计总结


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

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

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

一、背景

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

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

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

1、功能模块及特点

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

具体模块解析如下:

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

2、系统结构

系统功能结构图:

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

三、数据库设计

在口罩预约管理系统初期阶段,我们需要设计好系统存取数据信息的一个数据库,数据库设计也是一个重点难点,完整的数据库基本满足设计基本要求,包括数据库关系模式分析,处理好函数依赖问题,还有关系模式至少满足第三范式等。学过数据库系统概论会基本了解这些知识以及它的重要性和难度。

以目前个人能力,这个系统数据库的建立暂时满足最基本的要求,初步进行了函数依赖分析,另外根据所需功能,关系模式不是很复杂,第三范式的满足只存在于部分关系模式中。

我使用的是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图能够更加直观的展示数据关系模式之间的联系,下面则是自己画的:

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

这个是建立数据库后系统生成的:

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

四、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下载

②微信公众号获取(推荐):也可以关注我的博客下方微信公众号,发送“预约管理系统”获取

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

本篇的口罩预约管理系统数据库maskOrder.txt已上传,可直接导入本地MySQL数据库。

系列文章:

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

(二)口罩预约管理系统——系统网站实现(前端+PHP+MySQL)


我的CSDN博客:口罩预约管理系统——数据库设计(前端+PHP+MySQL)_陆海潘江的博客-CSDN博客

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151587.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Redis的雪崩,击穿,穿透详解「建议收藏」

    Redis的雪崩,击穿,穿透详解「建议收藏」在今天的互联网里,高并发、大数据量、大流量已经成为了代言词,那么我们的系统也承受着巨大的压力,首当其冲的解决方案就是redis。那么redis使用不当就会产生雪崩、穿透、击穿等问题,这也是考验一个程序员技术能力的时刻。当然面试的时候,这也是高频面试题,几乎大厂都会问到。下面跟着贴心老哥一起来看看这些技术吧。缓存雪崩举例双十一期间,所有用户一打开淘宝就是进入首页,首页的压力非常大,为了提高并发,将网站首页数据都缓存到redis里,所有的rediskey失效时间都是3小时。双十一当天大量

    2022年9月14日
    0
  • ARM开发环境搭建

    ARM开发环境搭建1.下载E:\ARM开发\工具软件\ARM裸机开发工具\Yagarto工具包路径下两个程序2.下载E:\ARM开发\工具软件\USB转串口驱动\CH3403.下载E:\ARM开发\工具软件\ARM裸机开发工具\JRE4.打开设备管理器->右键->更新5.6.选择E:\ARM开发\工具软件\ARM裸机开发工具\DRIVER目录下的(注意:此操作win7环境下,win7以上还要有点其他步骤)选择好就点你下一步7.出现红色弹窗点8.完成9.在E:\ARM开发\工具

    2022年5月29日
    37
  • python resize函数怎么用_Python numpy.resize函数方法的使用

    numpy.resizenumpy.resize(a,new_shape)[source]返回具有指定形状的新数组。如果新数组大于原始数组,则新数组将填充a的重复副本。请注意,此行为与a.resize(new_shape)不同,后者用零而不是重复的a填充。参数:a:array_like要调整大小的数组。new_shape:int或int类型的tuple调整大小后的数组的…

    2022年4月7日
    398
  • 线性代数行列式方程求解(正交矩阵的行列式)

    线性代数行列式求值算的可真是让人CPU疼,但计算机是不累的,所以用一个c++程序帮助你验证求解行列式的值吧。本文介绍了三种算法,虽然还没有完成–.–

    2022年4月13日
    155
  • vhr环境配置

    vhr环境配置vhr 环境配置笔记 windows 需要安装 redis rabbitmq 简单附下载连接及安装地址 一 redis 安装比较简单 此处不做讲解 记录一下启动及设置查询密码 redis 启动 通过指定配置文件来启动 cmd 切换到 redis 安装目录 执行 redis server exeredis windows conf 修改密码 在 redis 安装目录下 找到 redis conf redis

    2025年7月23日
    1
  • 验证码暴力破解测试[通俗易懂]

    验证码暴力破解测试测试原理和方法找回密码功能模块中通常会将用户凭证(一般为验证码)发送到用户自己才可以看到的手机号或者邮箱中,只要用户不泄露自己的验证码就不会被攻击者利用,但是有些应用程序在验证码发送功能模块中验证码位数及复杂性较弱,也没有对验证码做次数限制而导致验证码可被暴力枚举并修改任意用户密码。在测试验证码是否可以被暴力枚举时,可以先将验证码多次发送给自己的账号,观察验…

    2022年4月11日
    228

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号