智慧加油站小程序数据库设计文档

news2025/3/17 15:00:18

智慧加油站系统 - 数据库与API设计文档

1. 数据库设计

1.1 ER模型

系统的核心实体关系如下:

用户(User) ---< 订单(Order) ---< 加油记录(RefuelRecord)
   |               |                |
   |               |                v
   v               v            油枪(OilGun)
角色(Role)      油品(Oil)          |
   |               |                |
   v               v                v
权限(Permission)  价格历史(PriceHistory)  站点(Station)

1.2 数据库表结构

1.2.1 用户相关表
用户表(users)
字段名类型长度允许空主键默认值说明
idint11自增用户ID
usernamevarchar50用户名
passwordvarchar255密码(加密存储)
real_namevarchar50真实姓名
mobilevarchar20手机号码
emailvarchar100电子邮箱
role_idint11角色ID
avatarvarchar255头像URL
statustinyint11状态(1-正常,0-禁用)
last_login_timedatetime最后登录时间
last_login_ipvarchar50最后登录IP
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 唯一索引:username
  • 普通索引:role_idmobile
会员表(members)
字段名类型长度允许空主键默认值说明
idint11自增会员ID
user_idint11关联用户ID
member_novarchar30会员卡号
leveltinyint11会员等级(1-普通,2-银卡,3-金卡,4-钻石)
balancedecimal(10,2)0.00账户余额
pointsint110积分
join_timedatetimeCURRENT_TIMESTAMP加入时间
expire_timedatetime过期时间
statustinyint11状态(1-正常,0-冻结)
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 唯一索引:user_idmember_no
  • 普通索引:level
角色表(roles)
字段名类型长度允许空主键默认值说明
idint11自增角色ID
namevarchar50角色名称
codevarchar50角色编码
descriptionvarchar255角色描述
statustinyint11状态(1-启用,0-禁用)
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 唯一索引:code
权限表(permissions)
字段名类型长度允许空主键默认值说明
idint11自增权限ID
namevarchar50权限名称
codevarchar50权限编码
descriptionvarchar255权限描述
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 唯一索引:code
角色权限关联表(role_permissions)
字段名类型长度允许空主键默认值说明
idint11自增关联ID
role_idint11角色ID
permission_idint11权限ID
created_atdatetimeCURRENT_TIMESTAMP创建时间

索引:

  • 主键:id
  • 唯一索引:role_id, permission_id
1.2.2 订单相关表
订单表(orders)
字段名类型长度允许空主键默认值说明
idint11自增订单ID
order_novarchar50订单编号
member_idint11会员ID
station_idint11加油站ID
oil_idint11油品ID
oil_gun_idint11油枪ID
amountdecimal(10,2)0.00加油金额
quantitydecimal(10,2)0.00加油升数
unit_pricedecimal(10,2)0.00单价
discount_amountdecimal(10,2)0.00优惠金额
payment_methodtinyint11支付方式(1-余额,2-微信,3-支付宝,4-银行卡)
order_typetinyint11订单类型(1-加油,2-充值,3-商品)
statustinyint10状态(0-待支付,1-已支付,2-已完成,3-已取消,4-退款中,5-已退款)
remarkvarchar255备注
paid_timedatetime支付时间
refuel_start_timedatetime加油开始时间
refuel_end_timedatetime加油结束时间
transaction_idvarchar100三方支付交易ID
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 唯一索引:order_no
  • 普通索引:member_idstation_idoil_gun_idstatuscreated_at
支付记录表(payment_records)
字段名类型长度允许空主键默认值说明
idint11自增记录ID
order_idint11订单ID
transaction_novarchar100交易编号
member_idint11会员ID
payment_methodtinyint1支付方式(1-余额,2-微信,3-支付宝,4-银行卡)
amountdecimal(10,2)0.00支付金额
payment_timedatetimeCURRENT_TIMESTAMP支付时间
statustinyint10状态(0-处理中,1-成功,2-失败)
callback_datatext回调数据
external_payment_idvarchar100外部支付系统ID
refund_statustinyint10退款状态(0-无退款,1-部分退款,2-全额退款)
refund_amountdecimal(10,2)0.00退款金额
refund_timedatetime退款时间
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 唯一索引:transaction_noexternal_payment_id
  • 普通索引:order_idmember_idpayment_time
账户流水表(account_transactions)
字段名类型长度允许空主键默认值说明
idint11自增流水ID
transaction_novarchar50流水号
member_idint11会员ID
typetinyint1类型(1-充值,2-消费,3-退款,4-赠送)
amountdecimal(10,2)0.00金额
balancedecimal(10,2)0.00交易后余额
order_idint11关联订单ID
descriptionvarchar255交易描述
operator_idint11操作员ID
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 唯一索引:transaction_no
  • 普通索引:member_idtypeorder_idcreated_at
1.2.3 油品相关表
油品表(oils)
字段名类型长度允许空主键默认值说明
idint11自增油品ID
namevarchar50油品名称
codevarchar20油品编码
typetinyint1油品类型(1-汽油,2-柴油)
standardvarchar20油品标准(如92#,95#)
colorvarchar10颜色表示(十六进制颜色码)
statustinyint11状态(1-可用,0-不可用)
descriptionvarchar255描述
densitydecimal(10,4)密度(kg/L)
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 唯一索引:code
  • 普通索引:typestandard
油品价格表(oil_prices)
字段名类型长度允许空主键默认值说明
idint11自增价格ID
oil_idint11油品ID
station_idint11加油站ID(0表示总部定价)
pricedecimal(10,2)0.00零售价格
cost_pricedecimal(10,2)0.00成本价格
start_timedatetimeCURRENT_TIMESTAMP生效开始时间
end_timedatetime生效结束时间
statustinyint11状态(1-生效,0-历史)
creator_idint11创建人ID
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 唯一索引:oil_id, station_id, start_time
  • 普通索引:station_idstatusstart_time
会员折扣表(member_discounts)
字段名类型长度允许空主键默认值说明
idint11自增折扣ID
leveltinyint1会员等级
oil_idint11油品ID(0表示所有油品)
discount_typetinyint11折扣类型(1-折扣率,2-固定金额)
discount_valuedecimal(10,2)0.00折扣值(折扣率为0-1之间小数)
start_timedatetimeCURRENT_TIMESTAMP生效开始时间
end_timedatetime生效结束时间
statustinyint11状态(1-生效,0-过期)
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 普通索引:leveloil_idstatusstart_timeend_time
1.2.4 站点相关表
加油站表(stations)
字段名类型长度允许空主键默认值说明
idint11自增站点ID
namevarchar100站点名称
codevarchar20站点编码
addressvarchar255详细地址
provincevarchar50省份
cityvarchar50城市
districtvarchar50区县
longitudedecimal(10,6)经度
latitudedecimal(10,6)纬度
contact_personvarchar50联系人
contact_phonevarchar20联系电话
business_hoursvarchar50营业时间
statustinyint11站点状态(1-营业,0-停业,2-维护中)
is_self_servicetinyint10是否自助(1-是,0-否)
manager_idint11站长用户ID
open_datedate开业日期
descriptiontext站点描述
imagevarchar255站点图片
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 唯一索引:code
  • 普通索引:statusprovincecityis_self_service
油罐表(oil_tanks)
字段名类型长度允许空主键默认值说明
idint11自增油罐ID
station_idint11加油站ID
namevarchar50油罐名称
codevarchar20油罐编码
oil_idint11储存油品ID
capacitydecimal(10,2)0.00容量(升)
current_volumedecimal(10,2)0.00当前体积(升)
warning_leveldecimal(10,2)0.00警戒体积(升)
statustinyint11状态(1-正常,0-停用,2-维护中)
last_check_timedatetime最后检查时间
last_fill_timedatetime最后加注时间
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 唯一索引:station_id, code
  • 普通索引:station_idoil_idstatus
油枪表(oil_guns)
字段名类型长度允许空主键默认值说明
idint11自增油枪ID
station_idint11加油站ID
oil_tank_idint11油罐ID
numbervarchar10枪号
positionvarchar50位置描述
oil_idint11油品ID
statustinyint11状态(1-可用,0-不可用,2-维护中)
device_idvarchar50设备ID
flow_meter_idvarchar50流量计ID
is_self_servicetinyint10是否自助(1-是,0-否)
last_maintenance_timedatetime最后维护时间
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 唯一索引:station_id, number
  • 普通索引:station_idoil_tank_idoil_idstatusis_self_service
1.2.5 排班管理相关表
班次定义表(shift_definitions)
字段名类型长度允许空主键默认值说明
idint11自增班次ID
station_idint11加油站ID(0表示所有站点通用)
namevarchar50班次名称(如早班、中班、晚班)
start_timetime开始时间
end_timetime结束时间
durationdecimal(5,2)持续时长(小时)
is_next_daytinyint10是否跨天(0-否,1-是)
min_staffint41最少人数
statustinyint11状态(1-启用,0-禁用)
remarkvarchar255备注
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 普通索引:station_idstatus
排班计划表(shift_schedules)
字段名类型长度允许空主键默认值说明
idint11自增排班ID
station_idint11加油站ID
user_idint11员工用户ID
shift_idint11班次ID
schedule_datedate排班日期
schedule_typetinyint11排班类型(1-正常,2-加班,3-调休)
statustinyint11状态(1-正常,2-已替换,3-已取消)
replaced_byint11替班人ID
create_user_idint11创建人ID
remarkvarchar255备注
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 唯一索引:station_id, user_id, schedule_date, shift_id
  • 普通索引:user_idschedule_datestatusshift_id
考勤记录表(attendance_records)
字段名类型长度允许空主键默认值说明
idint11自增考勤ID
station_idint11加油站ID
user_idint11员工用户ID
shift_schedule_idint11关联排班ID
attendance_datedate考勤日期
check_in_timedatetime签到时间
check_out_timedatetime签退时间
check_in_locationvarchar100签到位置
check_out_locationvarchar100签退位置
check_in_photovarchar255签到照片URL
check_out_photovarchar255签退照片URL
statustinyint10状态(0-未签到,1-已签到未签退,2-已签退,3-迟到,4-早退,5-旷工,6-请假)
work_hoursdecimal(5,2)工作时长(小时)
verify_user_idint11审核人ID
verify_timedatetime审核时间
remarkvarchar255备注
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 普通索引:station_iduser_idattendance_datestatusshift_schedule_id
休假申请表(leave_applications)
字段名类型长度允许空主键默认值说明
idint11自增申请ID
station_idint11加油站ID
user_idint11申请人ID
leave_typetinyint1休假类型(1-事假,2-病假,3-年假,4-调休,5-其他)
start_timedatetime开始时间
end_timedatetime结束时间
durationdecimal(5,2)时长(天)
reasonvarchar255请假原因
attachmentvarchar255附件URL
statustinyint10状态(0-待审核,1-已批准,2-已拒绝,3-已取消)
approver_idint11审批人ID
approve_timedatetime审批时间
approve_commentvarchar255审批意见
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 普通索引:station_iduser_idstatusstart_timeend_time
换班申请表(shift_change_requests)
字段名类型长度允许空主键默认值说明
idint11自增申请ID
station_idint11加油站ID
requester_idint11申请人ID
original_schedule_idint11原排班ID
replacement_user_idint11替班人ID
replacement_shift_idint11替班班次ID(为空表示使用原班次)
request_reasonvarchar255申请原因
statustinyint10状态(0-待确认,1-已确认,2-已拒绝,3-已取消)
confirm_timedatetime确认时间
approve_user_idint11管理员审批人ID
approve_timedatetime管理员审批时间
approve_statustinyint1审批状态(0-待审批,1-已通过,2-已拒绝)
remarkvarchar255备注
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 普通索引:station_idrequester_idreplacement_user_idoriginal_schedule_idstatus
班组管理表(work_teams)
字段名类型长度允许空主键默认值说明
idint11自增班组ID
station_idint11加油站ID
namevarchar50班组名称
leader_idint11班组长ID
descriptionvarchar255描述
statustinyint11状态(1-启用,0-禁用)
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 普通索引:station_idleader_idstatus
班组成员表(team_members)
字段名类型长度允许空主键默认值说明
idint11自增记录ID
team_idint11班组ID
user_idint11成员用户ID
join_timedatetimeCURRENT_TIMESTAMP加入时间
positionvarchar50职位
is_leadertinyint10是否班组长(1-是,0-否)
statustinyint11状态(1-在职,0-离职)
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 唯一索引:team_id, user_id
  • 普通索引:user_idstatusis_leader

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

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

相关文章

Docker生存手册:安装到服务一本通

文章目录 一. Docker 容器介绍1.1 什么是Docker容器&#xff1f;1.2 为什么需要Docker容器&#xff1f;1.3 Docker架构1.4 Docker 相关概念1.5 Docker特点 二. Docker 安装2.1 查看Linux内核版本2.2 卸载老版本docker&#xff0c;避免产生影响2.3 升级yum 和配置源2.4 安装Dock…

Linux内核传输层UDP源码分析

一、用户数据包协议&#xff08;UDP&#xff09; 1.UDP数据报头 UDP 提供面向消息的不可靠传输&#xff0c;但没有拥塞控制功能。很多协议都使用 UDP&#xff0c;如用于 IP 网络传输音频和视频的实时传输协议 (Real-time Transport Protocol&#xff0c;RTP)&#xff0c;此类型…

FPGA学习(二)——实现LED流水灯

FPGA学习(二)——实现LED流水灯 目录 FPGA学习(二)——实现LED流水灯一、DE2-115时钟源二、控制6个LED灯实现流水灯1、核心逻辑2、代码实现3、引脚配置4、实现效果 三、模块化代码1、分频模块2、复位暂停模块3、顶层模块 四、总结 一、DE2-115时钟源 DE2-115板子包含一个50MHz…

Linux如何在设备树中表示和引用设备信息

DTS基本知识 dts 硬件的相应信息都会写在.dts为后缀的文件中&#xff0c;每一款硬件可以单独写一份xxxx.dts&#xff0c;一般在Linux源码中存在大量的dts文件&#xff0c;对于arm架构可以在arch/arm/boot/dts找到相应的dts&#xff0c;一个dts文件对应一个ARM的machie。 dtsi 值…

Matlab 汽车振动多自由度非线性悬挂系统和参数研究

1、内容简介 略 Matlab 169-汽车振动多自由度非线性悬挂系统和参数研究 可以交流、咨询、答疑 2、内容说明 略 第二章 汽车模型建立 2.1 汽车悬架系统概述 2.1.1 悬架系统的结构和功能 2.1.2 悬架分类 2.2 四分之一车辆模型 对于车辆动力学&#xff0c;一般都是研究其悬…

生活中的可靠性小案例11:窗户把手断裂

窗户把手又断了&#xff0c;之前也断过一次&#xff0c;使用次数并没有特别多。上方的图是正常的把手状态&#xff0c;断的形状如下方图所示。 这种悬臂梁结构&#xff0c;没有一个良好的圆角过渡&#xff0c;导致应力集中。窗户的开关&#xff0c;对应的是把手的推拉&#xff…

[oeasy]python074_ai辅助编程_水果程序_fruits_apple_banana_加法_python之禅

074_ai辅助编程_水果程序_fruits_加法 回忆上次内容 上次直接从模块中导入变量、函数 from my_file import pi 导入my_file.pi 并作为 pi 使用 from my_file import pi as my_pi 导入变量 并 重命名 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; …

【图论】并查集的学习和使用

目录 并查集是什么&#xff1f; 举个例子 组成 父亲数组&#xff1a; find函数&#xff1a; union函数&#xff1a; 代码实现&#xff1a; fa[] 初始化code: find code&#xff1a; 递归实现: 非递归实现: union code : 画图模拟&#xff1a; 路径压缩&#xff1a…

欢乐力扣:反转链表

文章目录 1、题目描述2、思路 1、题目描述 反转链表。  给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 2、思路 借助cur指针和pre双指针来调整链表的前后指向。 # Definition for singly-linked list. # class ListNode: # def __i…

什么是大带宽服务器

什么是大带宽服务器&#xff1f; 在深入探讨大带宽之前&#xff0c;让我们先明确带宽的概念。带宽与我们日常所说的宽带有所不同&#xff0c;宽带是运营商为满足家庭或商业上网需求所提供的服务&#xff0c;而带宽则特指数据的传输速度&#xff0c;尤其是上行速度。大带宽服务…

【TCP】三次挥手,四次挥手详解--UDP和TCP协议详解

活动发起人小虚竹 想对你说&#xff1a; 这是一个以写作博客为目的的创作活动&#xff0c;旨在鼓励大学生博主们挖掘自己的创作潜能&#xff0c;展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴&#xff0c;那么&#xff0c;快来参加吧&#xff01…

SSM基础专项复习4——Maven项目管理工具(1)

系列文章 1、SSM基础专项复习1——SSM项目整合-CSDN博客 2、SSM基础专项复习2——Spring 框架&#xff08;1&#xff09;-CSDN博客 3、SSM基础专项复习3——Spring框架&#xff08;2&#xff09;-CSDN博客 文章目录 系列文章 1. Maven 的概念 1.1. 什么是 Maven 1.2. 什…

使用c#进行串口通信

一、串口通信协议 1.串口通信协议简介 串口通信&#xff08;serial communication&#xff09;是一种设备间非常常用的串行通信方式&#xff0c;大部分电子设备都支持&#xff0c;电子工程师再调试设备时也经常使用该通信方式输出调试信息。讲到某一种通信协议&#xff0c;离…

Web开发-PHP应用鉴别修复AI算法流量检测PHP.INI通用过滤内置函数

知识点&#xff1a; 1、安全开发-原生PHP-PHP.INI安全 2、安全开发-原生PHP-全局文件&单函数 3、安全开发-原生PHP-流量检测&AI算法 一、演示案例-WEB开发-修复方案-PHP.INI配置 文章参考&#xff1a; https://www.yisu.com/ask/28100386.html https://blog.csdn.net/…

蓝桥模拟+真题讲解

今天谁一篇文章哈 &#xff01; 由于本篇文章有些的题目只有图片&#xff0c;因此还望各位见谅。 目录 第一题 题目解析 代码原理 代码编写 填空技巧---巧用python 第二题 题目解析 ​编辑 填空技巧---巧用python 第三题 题目链接 题目解析 必备知识 解题技巧 …

C语言【数据结构】:时间复杂度和空间复杂度.详解

引言 详细介绍什么是时间复杂度和空间复杂度。 前言&#xff1a;为什么要学习时间复杂度和空间复杂度 算法在编写成可执行程序后&#xff0c;运行时需要耗费时间资源和空间(内存)资源。因此衡量一个算法的好坏&#xff0c;一般是从时间和空间两个维度来衡量的&#xff0c;即时…

基于Python的selenium入门超详细教程(第2章)--单元测试框架unittest

学习路线 自动化测试介绍及学习路线-CSDN博客 ​自动化测试之Web自动化&#xff08;基于pythonselenium&#xff09;-CSDN博客 基于Python的selenium入门超详细教程(第1章)--WebDriver API篇-CSDN博客 目录 前言&#xff1a; 一、单元测试 1. 单元测试的定义 2. 单元测…

日志、类加载器、XML(配置文件)

目录 一、日志1.日志技术的概述2.日志技术的体系a. Logback 3.日志的级别 二、类加载器1.概述2.类加载时机3.类加载过程3.类加载器的分类4.常用方法 三、XML&#xff08;配置文件&#xff09;1.概述2.XML的基本语法3.XML的文档约束a.DTD约束b.schema约束 4.XML文档解析a.Dom4jb…

AI大白话(一):5分钟了解AI到底是什么?

&#x1f31f;引言&#xff1a; 在这个信息爆炸的时代&#xff0c;“人工智能”、“AI”、“机器学习”、"深度学习"等词汇频繁出现在我们的生活中。 从手机里的语音助手&#xff0c;到网购平台的个性化推荐&#xff0c;再到最近大火的AI绘画和ChatGPT&#xff0c;人…

蓝桥与力扣刷题(蓝桥 字符统计)

题目&#xff1a;给定一个只包含大写字母的字符出 S, 请你输出其中出现次数最多的字符。如果有多个字母均出现了最多次, 按字母表顺序依次输出所有这些字母。 输入格式 一个只包含大写字母的字等串 S. 输出格式 若干个大写字母&#xff0c;代表答案。 样例输入 BABBACAC样…