当前位置: 首页 > article >正文

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

智慧加油站系统 - 数据库与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.kler.cn/a/593027.html

相关文章:

  • K8s集群的环境部署
  • 视频对讲系统中,强插和强拆;视频分发功能
  • 汽车一键启动PKE无钥匙系统
  • 学习TensorFlow前的NumPy核心知识点
  • AI 时代,学习 Java 应如何入手?
  • Python pyqt+flask做一个简单实用的自动排班系统
  • Conda 虚拟环境创建:加不加 Python 版本的深度剖析
  • 十四、OSG学习笔记-事件响应
  • Qt 控件概述 QWdiget 1.1
  • 事件系统简介+Button组件+Toggle简介
  • 一次Linux下 .net 调试经历
  • 【C++】list(下):list类的模拟实现(含反向迭代器实现)
  • 2025赛逸展,消费电子企业角逐科技创新奖
  • 网络编程--服务器双客户端聊天
  • Java设计模式之享元模式
  • 【深度学习与大模型基础】第7章-特征分解与奇异值分解
  • Docker build 会在本地产生巨大的文件
  • vue3计算当前日期往前推一个月的日期,当前日期往前推7天
  • 用 C 语言理解封装、继承、多态
  • 单机 elasticsearch下载,安装,配置,启动,百度云链接提供