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

ops/2025/3/19 21:06:14/

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

1. 数据库设计

1.1 ER模型

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

用户(User) ---< 订单(Order) ---< 加油记录(RefuelRecord)|               |                ||               |                vv               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.ppmy.cn/ops/167113.html

相关文章

Qt Graphics View

Graphics View框架是用来处理大量2D图形对象的&#xff0c;适合需要高效管理和交互的场景&#xff0c;比如绘图软件、地图编辑或者游戏。它和QPainter的区别在于&#xff0c;Graphics View提供了更高级别的对象管理&#xff0c;而QPainter更偏向于直接绘制。 一、核心组件 ‌Q…

Ubuntu24.04安装ROS2 Jazzy

ROS2有多个版本&#xff0c;Jazzy是Ubuntu24.04目前支持的ROS版本&#xff0c;而之前的humble,noetic等版本是不在该版本支持的&#xff0c;所以一定不能安装错版本。 1、版本介绍 1.1、支持的软硬件设备 Ubuntu 24.04 (Noble): amd64 和 arm64 Windows 10 (Visual Studio 2…

7种数据结构

7种数据结构 顺序表sqlite.hseqlite.c 单链表linklist.clinklist.h 双链表doulinklist.cdoulinklist.h 链式栈linkstack.clinkstack.h 队列SeqQueue.cSeqQueue.h 树tree.c 哈希表hash.c 顺序表 sqlite.h #ifndef __SEQLIST_H__ #define __SEQLIST_H__ typedef struct person…

(C语言)typedef 讲解

typedef 是 C 语言中的一个重要关键字&#xff0c;用于为已存在的数据类型、结构体或函数指针等创建别名&#xff0c;从而简化代码并提高可读性。 1. typedef 的基本概念 typedef 不会创建新的数据类型&#xff0c;而是为已有的类型提供一个别名。例如&#xff1a; typedef …

【004】deepseek本地化部署后,python的调用方式_#py

python调用本地deepseek 1 本地化部署deepseek2 python调用方式 1 本地化部署deepseek 已经有很多大佬们说了不少部署本地化部署deepseek的工作了&#xff0c;我就不过多重复了。 先安装Ollama软件&#xff0c;再通过Ollama获取deepseek的模型文件&#xff0c;大家根据电脑的配…

NLP高频面试题(四)——BN和LN的区别与联系,为什么attention要用LN

在深度学习模型中&#xff0c;Normalization是一种极为重要的技巧&#xff0c;Batch Normalization&#xff08;BN&#xff09;和Layer Normalization&#xff08;LN&#xff09;是其中最为常用的两种方法。然而&#xff0c;二者在实际应用中有着明显的区别与联系&#xff0c;尤…

vscode使用ssh同时连接主机CentOS:user和ubuntu20.04:docker

主机为CentOS docker为Ubuntu20.04 两者可以使用一个vscode远程链接 1.使用已拉取好的Ubuntu镜像建立docker容器 2.进入容器内,下载一些关于ssh的安装包 apt-get install vim apt-get install openssh-client apt-get install openssh-server apt-get install ssh passwd …

DeepSeek + Kimi 自动生成 PPT

可以先用deepseek生成ppt大纲&#xff0c;再把这个大纲复制到Kimi的ppt助手里&#xff1a; https://kimi.moonshot.cn/kimiplus/conpg18t7lagbbsfqksg 选择ppt模板&#xff1a; 点击生成ppt就制作好了。