智慧加油站小程序数据库设计文档
智慧加油站系统 - 数据库与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)
| 字段名 | 类型 | 长度 | 允许空 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|
| id | int | 11 | 否 | 是 | 自增 | 用户ID |
| username | varchar | 50 | 否 | 用户名 | ||
| password | varchar | 255 | 否 | 密码(加密存储) | ||
| real_name | varchar | 50 | 是 | 真实姓名 | ||
| mobile | varchar | 20 | 是 | 手机号码 | ||
| varchar | 100 | 是 | 电子邮箱 | |||
| role_id | int | 11 | 否 | 角色ID | ||
| avatar | varchar | 255 | 是 | 头像URL | ||
| status | tinyint | 1 | 否 | 1 | 状态(1-正常,0-禁用) | |
| last_login_time | datetime | 是 | 最后登录时间 | |||
| last_login_ip | varchar | 50 | 是 | 最后登录IP | ||
| created_at | datetime | 否 | CURRENT_TIMESTAMP | 创建时间 | ||
| updated_at | datetime | 否 | CURRENT_TIMESTAMP | 更新时间 |
索引:
- 主键:
id - 唯一索引:
username - 普通索引:
role_id,mobile
会员表(members)
| 字段名 | 类型 | 长度 | 允许空 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|
| id | int | 11 | 否 | 是 | 自增 | 会员ID |
| user_id | int | 11 | 否 | 关联用户ID | ||
| member_no | varchar | 30 | 否 | 会员卡号 | ||
| level | tinyint | 1 | 否 | 1 | 会员等级(1-普通,2-银卡,3-金卡,4-钻石) | |
| balance | decimal | (10,2) | 否 | 0.00 | 账户余额 | |
| points | int | 11 | 否 | 0 | 积分 | |
| join_time | datetime | 否 | CURRENT_TIMESTAMP | 加入时间 | ||
| expire_time | datetime | 是 | 过期时间 | |||
| status | tinyint | 1 | 否 | 1 | 状态(1-正常,0-冻结) | |
| created_at | datetime | 否 | CURRENT_TIMESTAMP | 创建时间 | ||
| updated_at | datetime | 否 | CURRENT_TIMESTAMP | 更新时间 |
索引:
- 主键:
id - 唯一索引:
user_id,member_no - 普通索引:
level
角色表(roles)
| 字段名 | 类型 | 长度 | 允许空 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|
| id | int | 11 | 否 | 是 | 自增 | 角色ID |
| name | varchar | 50 | 否 | 角色名称 | ||
| code | varchar | 50 | 否 | 角色编码 | ||
| description | varchar | 255 | 是 | 角色描述 | ||
| status | tinyint | 1 | 否 | 1 | 状态(1-启用,0-禁用) | |
| created_at | datetime | 否 | CURRENT_TIMESTAMP | 创建时间 | ||
| updated_at | datetime | 否 | CURRENT_TIMESTAMP | 更新时间 |
索引:
- 主键:
id - 唯一索引:
code
权限表(permissions)
| 字段名 | 类型 | 长度 | 允许空 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|
| id | int | 11 | 否 | 是 | 自增 | 权限ID |
| name | varchar | 50 | 否 | 权限名称 | ||
| code | varchar | 50 | 否 | 权限编码 | ||
| description | varchar | 255 | 是 | 权限描述 | ||
| created_at | datetime | 否 | CURRENT_TIMESTAMP | 创建时间 | ||
| updated_at | datetime | 否 | CURRENT_TIMESTAMP | 更新时间 |
索引:
- 主键:
id - 唯一索引:
code
角色权限关联表(role_permissions)
| 字段名 | 类型 | 长度 | 允许空 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|
| id | int | 11 | 否 | 是 | 自增 | 关联ID |
| role_id | int | 11 | 否 | 角色ID | ||
| permission_id | int | 11 | 否 | 权限ID | ||
| created_at | datetime | 否 | CURRENT_TIMESTAMP | 创建时间 |
索引:
- 主键:
id - 唯一索引:
role_id, permission_id
1.2.2 订单相关表
订单表(orders)
| 字段名 | 类型 | 长度 | 允许空 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|
| id | int | 11 | 否 | 是 | 自增 | 订单ID |
| order_no | varchar | 50 | 否 | 订单编号 | ||
| member_id | int | 11 | 否 | 会员ID | ||
| station_id | int | 11 | 否 | 加油站ID | ||
| oil_id | int | 11 | 否 | 油品ID | ||
| oil_gun_id | int | 11 | 否 | 油枪ID | ||
| amount | decimal | (10,2) | 否 | 0.00 | 加油金额 | |
| quantity | decimal | (10,2) | 否 | 0.00 | 加油升数 | |
| unit_price | decimal | (10,2) | 否 | 0.00 | 单价 | |
| discount_amount | decimal | (10,2) | 否 | 0.00 | 优惠金额 | |
| payment_method | tinyint | 1 | 否 | 1 | 支付方式(1-余额,2-微信,3-支付宝,4-银行卡) | |
| order_type | tinyint | 1 | 否 | 1 | 订单类型(1-加油,2-充值,3-商品) | |
| status | tinyint | 1 | 否 | 0 | 状态(0-待支付,1-已支付,2-已完成,3-已取消,4-退款中,5-已退款) | |
| remark | varchar | 255 | 是 | 备注 | ||
| paid_time | datetime | 是 | 支付时间 | |||
| refuel_start_time | datetime | 是 | 加油开始时间 | |||
| refuel_end_time | datetime | 是 | 加油结束时间 | |||
| transaction_id | varchar | 100 | 是 | 三方支付交易ID | ||
| created_at | datetime | 否 | CURRENT_TIMESTAMP | 创建时间 | ||
| updated_at | datetime | 否 | CURRENT_TIMESTAMP | 更新时间 |
索引:
- 主键:
id - 唯一索引:
order_no - 普通索引:
member_id,station_id,oil_gun_id,status,created_at
支付记录表(payment_records)
| 字段名 | 类型 | 长度 | 允许空 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|
| id | int | 11 | 否 | 是 | 自增 | 记录ID |
| order_id | int | 11 | 否 | 订单ID | ||
| transaction_no | varchar | 100 | 否 | 交易编号 | ||
| member_id | int | 11 | 否 | 会员ID | ||
| payment_method | tinyint | 1 | 否 | 支付方式(1-余额,2-微信,3-支付宝,4-银行卡) | ||
| amount | decimal | (10,2) | 否 | 0.00 | 支付金额 | |
| payment_time | datetime | 否 | CURRENT_TIMESTAMP | 支付时间 | ||
| status | tinyint | 1 | 否 | 0 | 状态(0-处理中,1-成功,2-失败) | |
| callback_data | text | 是 | 回调数据 | |||
| external_payment_id | varchar | 100 | 是 | 外部支付系统ID | ||
| refund_status | tinyint | 1 | 否 | 0 | 退款状态(0-无退款,1-部分退款,2-全额退款) | |
| refund_amount | decimal | (10,2) | 否 | 0.00 | 退款金额 | |
| refund_time | datetime | 是 | 退款时间 | |||
| created_at | datetime | 否 | CURRENT_TIMESTAMP | 创建时间 | ||
| updated_at | datetime | 否 | CURRENT_TIMESTAMP | 更新时间 |
索引:
- 主键:
id - 唯一索引:
transaction_no,external_payment_id - 普通索引:
order_id,member_id,payment_time
账户流水表(account_transactions)
| 字段名 | 类型 | 长度 | 允许空 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|
| id | int | 11 | 否 | 是 | 自增 | 流水ID |
| transaction_no | varchar | 50 | 否 | 流水号 | ||
| member_id | int | 11 | 否 | 会员ID | ||
| type | tinyint | 1 | 否 | 类型(1-充值,2-消费,3-退款,4-赠送) | ||
| amount | decimal | (10,2) | 否 | 0.00 | 金额 | |
| balance | decimal | (10,2) | 否 | 0.00 | 交易后余额 | |
| order_id | int | 11 | 是 | 关联订单ID | ||
| description | varchar | 255 | 是 | 交易描述 | ||
| operator_id | int | 11 | 是 | 操作员ID | ||
| created_at | datetime | 否 | CURRENT_TIMESTAMP | 创建时间 | ||
| updated_at | datetime | 否 | CURRENT_TIMESTAMP | 更新时间 |
索引:
- 主键:
id - 唯一索引:
transaction_no - 普通索引:
member_id,type,order_id,created_at
1.2.3 油品相关表
油品表(oils)
| 字段名 | 类型 | 长度 | 允许空 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|
| id | int | 11 | 否 | 是 | 自增 | 油品ID |
| name | varchar | 50 | 否 | 油品名称 | ||
| code | varchar | 20 | 否 | 油品编码 | ||
| type | tinyint | 1 | 否 | 油品类型(1-汽油,2-柴油) | ||
| standard | varchar | 20 | 否 | 油品标准(如92#,95#) | ||
| color | varchar | 10 | 是 | 颜色表示(十六进制颜色码) | ||
| status | tinyint | 1 | 否 | 1 | 状态(1-可用,0-不可用) | |
| description | varchar | 255 | 是 | 描述 | ||
| density | decimal | (10,4) | 是 | 密度(kg/L) | ||
| created_at | datetime | 否 | CURRENT_TIMESTAMP | 创建时间 | ||
| updated_at | datetime | 否 | CURRENT_TIMESTAMP | 更新时间 |
索引:
- 主键:
id - 唯一索引:
code - 普通索引:
type,standard
油品价格表(oil_prices)
| 字段名 | 类型 | 长度 | 允许空 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|
| id | int | 11 | 否 | 是 | 自增 | 价格ID |
| oil_id | int | 11 | 否 | 油品ID | ||
| station_id | int | 11 | 否 | 加油站ID(0表示总部定价) | ||
| price | decimal | (10,2) | 否 | 0.00 | 零售价格 | |
| cost_price | decimal | (10,2) | 否 | 0.00 | 成本价格 | |
| start_time | datetime | 否 | CURRENT_TIMESTAMP | 生效开始时间 | ||
| end_time | datetime | 是 | 生效结束时间 | |||
| status | tinyint | 1 | 否 | 1 | 状态(1-生效,0-历史) | |
| creator_id | int | 11 | 否 | 创建人ID | ||
| created_at | datetime | 否 | CURRENT_TIMESTAMP | 创建时间 | ||
| updated_at | datetime | 否 | CURRENT_TIMESTAMP | 更新时间 |
索引:
- 主键:
id - 唯一索引:
oil_id, station_id, start_time - 普通索引:
station_id,status,start_time
会员折扣表(member_discounts)
| 字段名 | 类型 | 长度 | 允许空 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|
| id | int | 11 | 否 | 是 | 自增 | 折扣ID |
| level | tinyint | 1 | 否 | 会员等级 | ||
| oil_id | int | 11 | 否 | 油品ID(0表示所有油品) | ||
| discount_type | tinyint | 1 | 否 | 1 | 折扣类型(1-折扣率,2-固定金额) | |
| discount_value | decimal | (10,2) | 否 | 0.00 | 折扣值(折扣率为0-1之间小数) | |
| start_time | datetime | 否 | CURRENT_TIMESTAMP | 生效开始时间 | ||
| end_time | datetime | 是 | 生效结束时间 | |||
| status | tinyint | 1 | 否 | 1 | 状态(1-生效,0-过期) | |
| created_at | datetime | 否 | CURRENT_TIMESTAMP | 创建时间 | ||
| updated_at | datetime | 否 | CURRENT_TIMESTAMP | 更新时间 |
索引:
- 主键:
id - 普通索引:
level,oil_id,status,start_time,end_time
1.2.4 站点相关表
加油站表(stations)
| 字段名 | 类型 | 长度 | 允许空 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|
| id | int | 11 | 否 | 是 | 自增 | 站点ID |
| name | varchar | 100 | 否 | 站点名称 | ||
| code | varchar | 20 | 否 | 站点编码 | ||
| address | varchar | 255 | 否 | 详细地址 | ||
| province | varchar | 50 | 否 | 省份 | ||
| city | varchar | 50 | 否 | 城市 | ||
| district | varchar | 50 | 否 | 区县 | ||
| longitude | decimal | (10,6) | 是 | 经度 | ||
| latitude | decimal | (10,6) | 是 | 纬度 | ||
| contact_person | varchar | 50 | 是 | 联系人 | ||
| contact_phone | varchar | 20 | 是 | 联系电话 | ||
| business_hours | varchar | 50 | 是 | 营业时间 | ||
| status | tinyint | 1 | 否 | 1 | 站点状态(1-营业,0-停业,2-维护中) | |
| is_self_service | tinyint | 1 | 否 | 0 | 是否自助(1-是,0-否) | |
| manager_id | int | 11 | 是 | 站长用户ID | ||
| open_date | date | 是 | 开业日期 | |||
| description | text | 是 | 站点描述 | |||
| image | varchar | 255 | 是 | 站点图片 | ||
| created_at | datetime | 否 | CURRENT_TIMESTAMP | 创建时间 | ||
| updated_at | datetime | 否 | CURRENT_TIMESTAMP | 更新时间 |
索引:
- 主键:
id - 唯一索引:
code - 普通索引:
status,province,city,is_self_service
油罐表(oil_tanks)
| 字段名 | 类型 | 长度 | 允许空 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|
| id | int | 11 | 否 | 是 | 自增 | 油罐ID |
| station_id | int | 11 | 否 | 加油站ID | ||
| name | varchar | 50 | 否 | 油罐名称 | ||
| code | varchar | 20 | 否 | 油罐编码 | ||
| oil_id | int | 11 | 否 | 储存油品ID | ||
| capacity | decimal | (10,2) | 否 | 0.00 | 容量(升) | |
| current_volume | decimal | (10,2) | 否 | 0.00 | 当前体积(升) | |
| warning_level | decimal | (10,2) | 否 | 0.00 | 警戒体积(升) | |
| status | tinyint | 1 | 否 | 1 | 状态(1-正常,0-停用,2-维护中) | |
| last_check_time | datetime | 是 | 最后检查时间 | |||
| last_fill_time | datetime | 是 | 最后加注时间 | |||
| created_at | datetime | 否 | CURRENT_TIMESTAMP | 创建时间 | ||
| updated_at | datetime | 否 | CURRENT_TIMESTAMP | 更新时间 |
索引:
- 主键:
id - 唯一索引:
station_id, code - 普通索引:
station_id,oil_id,status
油枪表(oil_guns)
| 字段名 | 类型 | 长度 | 允许空 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|
| id | int | 11 | 否 | 是 | 自增 | 油枪ID |
| station_id | int | 11 | 否 | 加油站ID | ||
| oil_tank_id | int | 11 | 否 | 油罐ID | ||
| number | varchar | 10 | 否 | 枪号 | ||
| position | varchar | 50 | 是 | 位置描述 | ||
| oil_id | int | 11 | 否 | 油品ID | ||
| status | tinyint | 1 | 否 | 1 | 状态(1-可用,0-不可用,2-维护中) | |
| device_id | varchar | 50 | 是 | 设备ID | ||
| flow_meter_id | varchar | 50 | 是 | 流量计ID | ||
| is_self_service | tinyint | 1 | 否 | 0 | 是否自助(1-是,0-否) | |
| last_maintenance_time | datetime | 是 | 最后维护时间 | |||
| created_at | datetime | 否 | CURRENT_TIMESTAMP | 创建时间 | ||
| updated_at | datetime | 否 | CURRENT_TIMESTAMP | 更新时间 |
索引:
- 主键:
id - 唯一索引:
station_id, number - 普通索引:
station_id,oil_tank_id,oil_id,status,is_self_service
1.2.5 排班管理相关表
班次定义表(shift_definitions)
| 字段名 | 类型 | 长度 | 允许空 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|
| id | int | 11 | 否 | 是 | 自增 | 班次ID |
| station_id | int | 11 | 否 | 加油站ID(0表示所有站点通用) | ||
| name | varchar | 50 | 否 | 班次名称(如早班、中班、晚班) | ||
| start_time | time | 否 | 开始时间 | |||
| end_time | time | 否 | 结束时间 | |||
| duration | decimal | (5,2) | 否 | 持续时长(小时) | ||
| is_next_day | tinyint | 1 | 否 | 0 | 是否跨天(0-否,1-是) | |
| min_staff | int | 4 | 否 | 1 | 最少人数 | |
| status | tinyint | 1 | 否 | 1 | 状态(1-启用,0-禁用) | |
| remark | varchar | 255 | 是 | 备注 | ||
| created_at | datetime | 否 | CURRENT_TIMESTAMP | 创建时间 | ||
| updated_at | datetime | 否 | CURRENT_TIMESTAMP | 更新时间 |
索引:
- 主键:
id - 普通索引:
station_id,status
排班计划表(shift_schedules)
| 字段名 | 类型 | 长度 | 允许空 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|
| id | int | 11 | 否 | 是 | 自增 | 排班ID |
| station_id | int | 11 | 否 | 加油站ID | ||
| user_id | int | 11 | 否 | 员工用户ID | ||
| shift_id | int | 11 | 否 | 班次ID | ||
| schedule_date | date | 否 | 排班日期 | |||
| schedule_type | tinyint | 1 | 否 | 1 | 排班类型(1-正常,2-加班,3-调休) | |
| status | tinyint | 1 | 否 | 1 | 状态(1-正常,2-已替换,3-已取消) | |
| replaced_by | int | 11 | 是 | 替班人ID | ||
| create_user_id | int | 11 | 否 | 创建人ID | ||
| remark | varchar | 255 | 是 | 备注 | ||
| created_at | datetime | 否 | CURRENT_TIMESTAMP | 创建时间 | ||
| updated_at | datetime | 否 | CURRENT_TIMESTAMP | 更新时间 |
索引:
- 主键:
id - 唯一索引:
station_id, user_id, schedule_date, shift_id - 普通索引:
user_id,schedule_date,status,shift_id
考勤记录表(attendance_records)
| 字段名 | 类型 | 长度 | 允许空 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|
| id | int | 11 | 否 | 是 | 自增 | 考勤ID |
| station_id | int | 11 | 否 | 加油站ID | ||
| user_id | int | 11 | 否 | 员工用户ID | ||
| shift_schedule_id | int | 11 | 是 | 关联排班ID | ||
| attendance_date | date | 否 | 考勤日期 | |||
| check_in_time | datetime | 是 | 签到时间 | |||
| check_out_time | datetime | 是 | 签退时间 | |||
| check_in_location | varchar | 100 | 是 | 签到位置 | ||
| check_out_location | varchar | 100 | 是 | 签退位置 | ||
| check_in_photo | varchar | 255 | 是 | 签到照片URL | ||
| check_out_photo | varchar | 255 | 是 | 签退照片URL | ||
| status | tinyint | 1 | 否 | 0 | 状态(0-未签到,1-已签到未签退,2-已签退,3-迟到,4-早退,5-旷工,6-请假) | |
| work_hours | decimal | (5,2) | 是 | 工作时长(小时) | ||
| verify_user_id | int | 11 | 是 | 审核人ID | ||
| verify_time | datetime | 是 | 审核时间 | |||
| remark | varchar | 255 | 是 | 备注 | ||
| created_at | datetime | 否 | CURRENT_TIMESTAMP | 创建时间 | ||
| updated_at | datetime | 否 | CURRENT_TIMESTAMP | 更新时间 |
索引:
- 主键:
id - 普通索引:
station_id,user_id,attendance_date,status,shift_schedule_id
休假申请表(leave_applications)
| 字段名 | 类型 | 长度 | 允许空 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|
| id | int | 11 | 否 | 是 | 自增 | 申请ID |
| station_id | int | 11 | 否 | 加油站ID | ||
| user_id | int | 11 | 否 | 申请人ID | ||
| leave_type | tinyint | 1 | 否 | 休假类型(1-事假,2-病假,3-年假,4-调休,5-其他) | ||
| start_time | datetime | 否 | 开始时间 | |||
| end_time | datetime | 否 | 结束时间 | |||
| duration | decimal | (5,2) | 否 | 时长(天) | ||
| reason | varchar | 255 | 否 | 请假原因 | ||
| attachment | varchar | 255 | 是 | 附件URL | ||
| status | tinyint | 1 | 否 | 0 | 状态(0-待审核,1-已批准,2-已拒绝,3-已取消) | |
| approver_id | int | 11 | 是 | 审批人ID | ||
| approve_time | datetime | 是 | 审批时间 | |||
| approve_comment | varchar | 255 | 是 | 审批意见 | ||
| created_at | datetime | 否 | CURRENT_TIMESTAMP | 创建时间 | ||
| updated_at | datetime | 否 | CURRENT_TIMESTAMP | 更新时间 |
索引:
- 主键:
id - 普通索引:
station_id,user_id,status,start_time,end_time
换班申请表(shift_change_requests)
| 字段名 | 类型 | 长度 | 允许空 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|
| id | int | 11 | 否 | 是 | 自增 | 申请ID |
| station_id | int | 11 | 否 | 加油站ID | ||
| requester_id | int | 11 | 否 | 申请人ID | ||
| original_schedule_id | int | 11 | 否 | 原排班ID | ||
| replacement_user_id | int | 11 | 否 | 替班人ID | ||
| replacement_shift_id | int | 11 | 是 | 替班班次ID(为空表示使用原班次) | ||
| request_reason | varchar | 255 | 是 | 申请原因 | ||
| status | tinyint | 1 | 否 | 0 | 状态(0-待确认,1-已确认,2-已拒绝,3-已取消) | |
| confirm_time | datetime | 是 | 确认时间 | |||
| approve_user_id | int | 11 | 是 | 管理员审批人ID | ||
| approve_time | datetime | 是 | 管理员审批时间 | |||
| approve_status | tinyint | 1 | 是 | 审批状态(0-待审批,1-已通过,2-已拒绝) | ||
| remark | varchar | 255 | 是 | 备注 | ||
| created_at | datetime | 否 | CURRENT_TIMESTAMP | 创建时间 | ||
| updated_at | datetime | 否 | CURRENT_TIMESTAMP | 更新时间 |
索引:
- 主键:
id - 普通索引:
station_id,requester_id,replacement_user_id,original_schedule_id,status
班组管理表(work_teams)
| 字段名 | 类型 | 长度 | 允许空 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|
| id | int | 11 | 否 | 是 | 自增 | 班组ID |
| station_id | int | 11 | 否 | 加油站ID | ||
| name | varchar | 50 | 否 | 班组名称 | ||
| leader_id | int | 11 | 是 | 班组长ID | ||
| description | varchar | 255 | 是 | 描述 | ||
| status | tinyint | 1 | 否 | 1 | 状态(1-启用,0-禁用) | |
| created_at | datetime | 否 | CURRENT_TIMESTAMP | 创建时间 | ||
| updated_at | datetime | 否 | CURRENT_TIMESTAMP | 更新时间 |
索引:
- 主键:
id - 普通索引:
station_id,leader_id,status
班组成员表(team_members)
| 字段名 | 类型 | 长度 | 允许空 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|
| id | int | 11 | 否 | 是 | 自增 | 记录ID |
| team_id | int | 11 | 否 | 班组ID | ||
| user_id | int | 11 | 否 | 成员用户ID | ||
| join_time | datetime | 否 | CURRENT_TIMESTAMP | 加入时间 | ||
| position | varchar | 50 | 是 | 职位 | ||
| is_leader | tinyint | 1 | 否 | 0 | 是否班组长(1-是,0-否) | |
| status | tinyint | 1 | 否 | 1 | 状态(1-在职,0-离职) | |
| created_at | datetime | 否 | CURRENT_TIMESTAMP | 创建时间 | ||
| updated_at | datetime | 否 | CURRENT_TIMESTAMP | 更新时间 |
索引:
- 主键:
id - 唯一索引:
team_id, user_id - 普通索引:
user_id,status,is_leader
相关文章:
智慧加油站小程序数据库设计文档
智慧加油站系统 - 数据库与API设计文档 1. 数据库设计 1.1 ER模型 系统的核心实体关系如下: 用户(User) ---< 订单(Order) ---< 加油记录(RefuelRecord)| | || | vv v …...
Docker生存手册:安装到服务一本通
文章目录 一. Docker 容器介绍1.1 什么是Docker容器?1.2 为什么需要Docker容器?1.3 Docker架构1.4 Docker 相关概念1.5 Docker特点 二. Docker 安装2.1 查看Linux内核版本2.2 卸载老版本docker,避免产生影响2.3 升级yum 和配置源2.4 安装Dock…...
Linux内核传输层UDP源码分析
一、用户数据包协议(UDP) 1.UDP数据报头 UDP 提供面向消息的不可靠传输,但没有拥塞控制功能。很多协议都使用 UDP,如用于 IP 网络传输音频和视频的实时传输协议 (Real-time Transport Protocol,RTP),此类型…...
FPGA学习(二)——实现LED流水灯
FPGA学习(二)——实现LED流水灯 目录 FPGA学习(二)——实现LED流水灯一、DE2-115时钟源二、控制6个LED灯实现流水灯1、核心逻辑2、代码实现3、引脚配置4、实现效果 三、模块化代码1、分频模块2、复位暂停模块3、顶层模块 四、总结 一、DE2-115时钟源 DE2-115板子包含一个50MHz…...
E1-最远距离(stl使用)
题目描述 给定一个数组,请你找出数组中相同元素之间的最远距离。若数组中不存在相同元素,则输出 null。 输入描述 输入一个数组,数组长度不超过 10000。格式请见用例。 输出描述 输出数组中相同元素的最远距离。 用例 输入 [3, 2, 3,…...
Linux如何在设备树中表示和引用设备信息
DTS基本知识 dts 硬件的相应信息都会写在.dts为后缀的文件中,每一款硬件可以单独写一份xxxx.dts,一般在Linux源码中存在大量的dts文件,对于arm架构可以在arch/arm/boot/dts找到相应的dts,一个dts文件对应一个ARM的machie。 dtsi 值…...
Matlab 汽车振动多自由度非线性悬挂系统和参数研究
1、内容简介 略 Matlab 169-汽车振动多自由度非线性悬挂系统和参数研究 可以交流、咨询、答疑 2、内容说明 略 第二章 汽车模型建立 2.1 汽车悬架系统概述 2.1.1 悬架系统的结构和功能 2.1.2 悬架分类 2.2 四分之一车辆模型 对于车辆动力学,一般都是研究其悬…...
Maven核心包:maven-resolver-api
在阅读 nexus-pubic 开源项目过程中,使用了大量的核心组件进行轻量化集成。它的这种构建方式,在阅读过程中不得不感概,节省成本从构建项目的方式上就遥遥领先了。但是 maven核心包,依然使用前几年的aether-spi,却没有更…...
生活中的可靠性小案例11:窗户把手断裂
窗户把手又断了,之前也断过一次,使用次数并没有特别多。上方的图是正常的把手状态,断的形状如下方图所示。 这种悬臂梁结构,没有一个良好的圆角过渡,导致应力集中。窗户的开关,对应的是把手的推拉ÿ…...
[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 导入变量 并 重命名 添加图片注释,不超过 140 字(可选) …...
【图论】并查集的学习和使用
目录 并查集是什么? 举个例子 组成 父亲数组: find函数: union函数: 代码实现: fa[] 初始化code: find code: 递归实现: 非递归实现: union code : 画图模拟: 路径压缩:…...
欢乐力扣:反转链表
文章目录 1、题目描述2、思路 1、题目描述 反转链表。 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 2、思路 借助cur指针和pre双指针来调整链表的前后指向。 # Definition for singly-linked list. # class ListNode: # def __i…...
1.8PageTable
页表的作用 虚拟地址空间映射:页表记录了进程的虚拟页号到物理页号的映射关系。每个进程都有自己的页表,操作系统为每个进程维护一个独立的页表。内存管理:页表用于实现虚拟内存管理,支持进程的虚拟地址空间和物理地址空间之间的…...
什么是大带宽服务器
什么是大带宽服务器? 在深入探讨大带宽之前,让我们先明确带宽的概念。带宽与我们日常所说的宽带有所不同,宽带是运营商为满足家庭或商业上网需求所提供的服务,而带宽则特指数据的传输速度,尤其是上行速度。大带宽服务…...
【TCP】三次挥手,四次挥手详解--UDP和TCP协议详解
活动发起人小虚竹 想对你说: 这是一个以写作博客为目的的创作活动,旨在鼓励大学生博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!…...
Compose 实践与探索十二 —— 附带效应
1、SideEffect Google 官方文档对 side effect 有两种翻译,简体中文翻译为附带效应,繁体中文翻译为副作用。这两个翻译我们用哪个都行,关键是如何理解它的含义。 1.1 什么是副作用 我们在日常生活中听到的副作用大多是医学领域中的&#x…...
Kubernetes 控制平面详解 —— 探秘 API Server、Controller Manager、Scheduler 与 etcd
文章目录 Kubernetes 控制平面详解 —— 探秘 API Server、Controller Manager、Scheduler 与 etcd控制平面概述API Server角色与职责工作原理 etcd角色与职责工作原理 Scheduler角色与职责工作原理 Controller Manager角色与职责工作原理 总结 Kubernetes 控制平面详解 —— 探…...
SSM基础专项复习4——Maven项目管理工具(1)
系列文章 1、SSM基础专项复习1——SSM项目整合-CSDN博客 2、SSM基础专项复习2——Spring 框架(1)-CSDN博客 3、SSM基础专项复习3——Spring框架(2)-CSDN博客 文章目录 系列文章 1. Maven 的概念 1.1. 什么是 Maven 1.2. 什…...
使用c#进行串口通信
一、串口通信协议 1.串口通信协议简介 串口通信(serial communication)是一种设备间非常常用的串行通信方式,大部分电子设备都支持,电子工程师再调试设备时也经常使用该通信方式输出调试信息。讲到某一种通信协议,离…...
Web开发-PHP应用鉴别修复AI算法流量检测PHP.INI通用过滤内置函数
知识点: 1、安全开发-原生PHP-PHP.INI安全 2、安全开发-原生PHP-全局文件&单函数 3、安全开发-原生PHP-流量检测&AI算法 一、演示案例-WEB开发-修复方案-PHP.INI配置 文章参考: https://www.yisu.com/ask/28100386.html https://blog.csdn.net/…...
蓝桥模拟+真题讲解
今天谁一篇文章哈 ! 由于本篇文章有些的题目只有图片,因此还望各位见谅。 目录 第一题 题目解析 代码原理 代码编写 填空技巧---巧用python 第二题 题目解析 编辑 填空技巧---巧用python 第三题 题目链接 题目解析 必备知识 解题技巧 …...
C语言【数据结构】:时间复杂度和空间复杂度.详解
引言 详细介绍什么是时间复杂度和空间复杂度。 前言:为什么要学习时间复杂度和空间复杂度 算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源。因此衡量一个算法的好坏,一般是从时间和空间两个维度来衡量的,即时…...
大模型的参数数量与学习的知识数量之间
大模型的参数数量与学习的知识数量之间 大模型的参数数量与学习的知识数量之间呈现非线性、条件依赖的复杂关系,其本质是**「表达能力」与「知识编码效率」的动态博弈**。以下从五个维度拆解核心逻辑: 一、参数是知识的「载体容量」,但非唯一决定因素 理论上限:参数数量决…...
基于Python的selenium入门超详细教程(第2章)--单元测试框架unittest
学习路线 自动化测试介绍及学习路线-CSDN博客 自动化测试之Web自动化(基于pythonselenium)-CSDN博客 基于Python的selenium入门超详细教程(第1章)--WebDriver API篇-CSDN博客 目录 前言: 一、单元测试 1. 单元测试的定义 2. 单元测…...
日志、类加载器、XML(配置文件)
目录 一、日志1.日志技术的概述2.日志技术的体系a. Logback 3.日志的级别 二、类加载器1.概述2.类加载时机3.类加载过程3.类加载器的分类4.常用方法 三、XML(配置文件)1.概述2.XML的基本语法3.XML的文档约束a.DTD约束b.schema约束 4.XML文档解析a.Dom4jb…...
Flutter中的const和final的区别
目录 一、核心区别对比表 二、初始化机制深度解析 1. const 的编译期特性 2. final 的运行时特性 三、内存管理差异 1. const 的内存优化 2. final 的独立内存 四、集合类型的本质区别 1. const 集合的完全不可变性 2. final 集合的引用不可变性 五、在 Flutter 中的…...
DAY34 贪心算法Ⅲ
134. 加油站 - 力扣(LeetCode) 这种环路问题要记一下。 class Solution { public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {int curSum0;int totalSum0;int start0;for(int i0;i<gas.size();i){curSumga…...
AI大白话(一):5分钟了解AI到底是什么?
🌟引言: 在这个信息爆炸的时代,“人工智能”、“AI”、“机器学习”、"深度学习"等词汇频繁出现在我们的生活中。 从手机里的语音助手,到网购平台的个性化推荐,再到最近大火的AI绘画和ChatGPT,人…...
(七)Spring Boot学习——Redis使用
有部分内容是常用的,为了避免每次都查询数据库,将部分数据存入Redis。 一、 下载并安装 Redis Windows 版的 Redis 官方已不再维护,你可以使用 微软提供的 Redis for Windows 版本 或者 使用 WSL(Windows Subsystem for Linux&a…...
蓝桥与力扣刷题(蓝桥 字符统计)
题目:给定一个只包含大写字母的字符出 S, 请你输出其中出现次数最多的字符。如果有多个字母均出现了最多次, 按字母表顺序依次输出所有这些字母。 输入格式 一个只包含大写字母的字等串 S. 输出格式 若干个大写字母,代表答案。 样例输入 BABBACAC样…...
