跳到主要内容

核心表结构设计

目录

  1. 项目概述
  2. 系统架构概览
  3. 核心业务表结构
  4. 表关系与约束分析
  5. 数据流与业务场景
  6. 性能优化建议
  7. 故障排查指南
  8. 总结

项目概述

本项目是一个基于微服务架构的企业级管理系统,采用Spring Cloud微服务框架构建。系统包含多个业务模块,涵盖用户管理、权限控制、设备管理、任务调度、黑名单管理等多个核心功能领域。

项目采用MySQL作为主要关系型数据库,同时使用TDengine作为时序数据存储解决方案。整体架构遵循DDD(领域驱动设计)原则,通过清晰的模块划分实现业务解耦。

系统架构概览

Mermaid Diagram Code:

graph TB
subgraph "前端层"
UI[用户界面]
Admin[管理后台]
end
subgraph "网关层"
Gateway[API网关]
end
subgraph "业务服务层"
System[系统服务]
Device[设备服务]
Task[任务服务]
Blacklist[黑名单服务]
Launcher[启动器服务]
end
subgraph "数据存储层"
MySQL[(MySQL关系型数据库)]
TDengine[(TDengine时序数据库)]
Redis[(Redis缓存)]
end
UI --> Gateway
Admin --> Gateway
Gateway --> System
Gateway --> Device
Gateway --> Task
Gateway --> Blacklist
Gateway --> Launcher
System --> MySQL
Device --> MySQL
Device --> TDengine
Task --> MySQL
Blacklist --> MySQL
Launcher --> MySQL
Launcher --> TDengine

图表来源

核心业务表结构

用户表 (system_user)

用户表是系统的核心基础表,用于存储系统的用户信息和认证凭据。

Mermaid Diagram Code:

erDiagram
SYSTEM_USER {
bigint id PK
string username UK
string nickname
string avatar
tinyint sex
string email
string phone
tinyint status
bigint dept_id
string password
string remark
bigint creator
datetime create_time
bigint updater
datetime update_time
bit deleted
bigint tenant_id
}
SYSTEM_DEPT {
bigint id PK
string name
bigint parent_id
int sort
bigint leader_user_id
string phone
string email
tinyint status
bigint creator
datetime create_time
bigint updater
datetime update_time
bit deleted
bigint tenant_id
}
SYSTEM_USER ||--|| SYSTEM_DEPT : "所属部门"

图表来源

字段说明:

  • id: 用户唯一标识符,主键,自增
  • username: 用户名,唯一约束,用于登录
  • nickname: 昵称,用户显示名称
  • avatar: 头像URL地址
  • sex: 性别,字典值(1:男, 2:女)
  • email: 邮箱地址
  • phone: 手机号码
  • status: 用户状态,0:正常 1:停用
  • dept_id: 所属部门ID,外键关联部门表
  • password: 加密后的密码
  • remark: 备注信息
  • tenant_id: 租户编号,支持多租户隔离

业务含义: 该表承载了系统的身份认证和授权基础信息,是权限控制体系的核心数据源。

章节来源

角色表 (system_role)

角色表用于定义系统的角色权限体系,支持RBAC(基于角色的访问控制)模型。

Mermaid Diagram Code:

erDiagram
SYSTEM_ROLE {
bigint id PK
string name UK
string code UK
int sort
tinyint type
tinyint status
string data_scope
string data_scope_ids
string remark
bigint creator
datetime create_time
bigint updater
datetime update_time
bit deleted
bigint tenant_id
}
SYSTEM_MENU {
bigint id PK
string name
bigint parent_id
int sort
tinyint type
string permission
string path
string component
string icon
tinyint status
boolean visible
boolean keep_alive
boolean always_show
bigint creator
datetime create_time
bigint updater
datetime update_time
bit deleted
bigint tenant_id
}
SYSTEM_ROLE ||--o{ SYSTEM_MENU : "拥有权限"

图表来源

字段说明:

  • id: 角色唯一标识符
  • name: 角色名称,唯一约束
  • code: 角色编码,唯一约束,用于程序识别
  • sort: 显示排序
  • type: 角色类型,1:系统内置 2:自定义
  • status: 角色状态,0:正常 1:停用
  • data_scope: 数据范围,1:全部 2:指定部门 3:本部门 4:本部门及以下 5:仅本人
  • data_scope_ids: 数据范围ID集合
  • tenant_id: 租户编号

业务含义: 角色表定义了系统的权限边界,通过与菜单表的关联实现细粒度的权限控制。

章节来源

菜单表 (system_menu)

菜单表用于构建系统的导航结构和权限控制基础。

Mermaid Diagram Code:

erDiagram
SYSTEM_MENU {
bigint id PK
string name
bigint parent_id
int sort
tinyint type
string permission
string path
string component
string icon
tinyint status
boolean visible
boolean keep_alive
boolean always_show
bigint creator
datetime create_time
bigint updater
datetime update_time
bit deleted
bigint tenant_id
}
SYSTEM_ROLE_MENU {
bigint role_id PK
bigint menu_id PK
}
SYSTEM_USER_ROLE {
bigint user_id PK
bigint role_id PK
}
SYSTEM_MENU ||--o{ SYSTEM_ROLE_MENU : "授权"
SYSTEM_ROLE ||--o{ SYSTEM_ROLE_MENU : "拥有"
SYSTEM_USER ||--o{ SYSTEM_USER_ROLE : "拥有"
SYSTEM_ROLE ||--o{ SYSTEM_USER_ROLE : "分配给"

图表来源

字段说明:

  • id: 菜单唯一标识符
  • name: 菜单名称
  • parent_id: 父级菜单ID,支持多级菜单
  • sort: 排序字段
  • type: 菜单类型,1:目录 2:菜单 3:按钮
  • permission: 权限标识,用于接口级别的权限控制
  • path: 路由路径
  • component: Vue组件路径
  • icon: 图标类名
  • status: 状态,0:正常 1:停用
  • visible: 是否可见
  • keep_alive: 是否缓存
  • always_show: 是否总是显示

业务含义: 菜单表不仅定义了系统的导航结构,更重要的是通过permission字段实现了接口级别的权限控制。

章节来源

设备表 (device_info)

设备表用于存储设备的基本信息和状态管理。

Mermaid Diagram Code:

erDiagram
DEVICE_INFO {
bigint id PK
string sn UNIQ
string name
string model
string brand
string os_version
string cpu_model
string memory_size
string storage_capacity
string network_type
string ip_address
string mac_address
string location
tinyint status
bigint tenant_id
bigint creator
datetime create_time
bigint updater
datetime update_time
bit deleted
}
DEVICE_RUNTIME {
timestamp ts PK
string sn PK
json data
int frequency
timestamp create_time
}
DEVICE_ACTIVITY_DETAIL {
timestamp ts PK
string sn PK
string activity_name
string package_name
int duration
json extra_data
timestamp create_time
}
DEVICE_INFO ||--o{ DEVICE_RUNTIME : "产生"
DEVICE_INFO ||--o{ DEVICE_ACTIVITY_DETAIL : "产生"

图表来源

字段说明:

  • id: 设备唯一标识符
  • sn: 设备序列号,唯一约束
  • name: 设备名称
  • model: 型号
  • brand: 品牌
  • os_version: 操作系统版本
  • cpu_model: CPU型号
  • memory_size: 内存大小
  • storage_capacity: 存储容量
  • network_type: 网络类型
  • ip_address: IP地址
  • mac_address: MAC地址
  • location: 位置信息
  • status: 设备状态

业务含义: 设备表提供了设备的静态信息管理,配合时序数据表实现设备运行状态的实时监控。

章节来源

黑名单表 (blacklisted)

黑名单表用于管理需要限制访问或监控的设备或应用。

Mermaid Diagram Code:

erDiagram
BLACKLISTED_APP_KILL_RECORD {
timestamp ts PK
string data_key PK
string mac
string cpu_id
int frequency
timestamp create_time
int black_list_id
}
BLACKLISTED_CONFIG {
bigint id PK
string name
string type
string value
tinyint status
string remark
bigint creator
datetime create_time
bigint updater
datetime update_time
bit deleted
bigint tenant_id
}
BLACKLISTED_APP_KILL_RECORD }o--|| BLACKLISTED_CONFIG : "关联"

图表来源

字段说明:

  • ts: 时间戳,主键之一,格式为YYYY-MM-DD
  • data_key: 数据键,由mac+cpu_id组成,复合主键
  • mac: MAC地址
  • cpu_id: CPU ID
  • frequency: 杀死次数
  • create_time: 创建时间
  • black_list_id: 关联的黑名单配置ID

业务含义: 该表专门用于记录APP被杀死的明细信息,支持基于MAC地址和CPU ID的组合查询和统计分析。

章节来源

任务表 (task_info)

任务表用于管理系统中的各种任务和作业。

Mermaid Diagram Code:

erDiagram
TASK_INFO {
bigint id PK
string name
string type
string cron_expression
string executor_service
string executor_handler
json params
tinyint status
tinyint cycle_type
datetime start_time
datetime end_time
int version
string remark
bigint creator
datetime create_time
bigint updater
datetime update_time
bit deleted
bigint tenant_id
}
LAUNCHER_TASK_RESULT {
timestamp ts PK
string task_id PK
string device_sn
tinyint status
json result_data
int retry_count
timestamp create_time
}
TASK_INFO ||--o{ LAUNCHER_TASK_RESULT : "产生"

图表来源

字段说明:

  • id: 任务唯一标识符
  • name: 任务名称
  • type: 任务类型
  • cron_expression: Cron表达式,用于定时任务
  • executor_service: 执行服务名称
  • executor_handler: 执行处理器
  • params: 任务参数,JSON格式
  • status: 任务状态
  • cycle_type: 执行周期类型
  • start_time: 开始时间
  • end_time: 结束时间
  • version: 版本号,用于乐观锁

业务含义: 任务表实现了灵活的任务调度和执行机制,支持定时任务和一次性任务的统一管理。

章节来源

表关系与约束分析

主要关系图

Mermaid Diagram Code:

erDiagram
SYSTEM_USER {
bigint id PK
string username UK
bigint dept_id FK
}
SYSTEM_DEPT {
bigint id PK
bigint parent_id FK
}
SYSTEM_ROLE {
bigint id PK
string code UK
}
SYSTEM_MENU {
bigint id PK
bigint parent_id FK
string permission
}
SYSTEM_USER_ROLE {
bigint user_id PK
bigint role_id PK
}
SYSTEM_ROLE_MENU {
bigint role_id PK
bigint menu_id PK
}
SYSTEM_USER ||--o{ SYSTEM_USER_ROLE : "拥有"
SYSTEM_ROLE ||--o{ SYSTEM_USER_ROLE : "分配给"
SYSTEM_ROLE ||--o{ SYSTEM_ROLE_MENU : "拥有"
SYSTEM_MENU ||--o{ SYSTEM_ROLE_MENU : "授权"
SYSTEM_DEPT ||--o{ SYSTEM_DEPT : "父子关系"
SYSTEM_USER ||--|| SYSTEM_DEPT : "所属"

图表来源

外键约束分析

系统采用了严格的外键约束来保证数据完整性:

  1. 用户-部门关系: 用户表通过dept_id外键关联部门表
  2. 菜单层级关系: 菜单表通过parent_id自关联,形成树形结构
  3. 角色-用户关系: 通过中间表SYSTEM_USER_ROLE实现多对多关系
  4. 角色-菜单关系: 通过中间表SYSTEM_ROLE_MENU实现权限分配

索引策略

Mermaid Diagram Code:

flowchart TD
IndexStrategy[索引设计策略] --> UniqueIndex[唯一索引]
IndexStrategy --> NormalIndex[普通索引]
IndexStrategy --> CompositeIndex[复合索引]
UniqueIndex --> UsernameIndex[用户名唯一索引]
UniqueIndex --> SnIndex[设备序列号唯一索引]
UniqueIndex --> RoleCodeIndex[角色编码唯一索引]
NormalIndex --> DeptParentIndex[部门父ID索引]
NormalIndex --> MenuParentIndex[菜单父ID索引]
NormalIndex --> UserDeptIndex[用户部门索引]
NormalIndex --> TaskStatusIndex[任务状态索引]
CompositeIndex --> BlacklistComposite[黑名单复合主键]
CompositeIndex --> DeviceTimeSeries[设备时序复合键]

图表来源

数据流与业务场景

用户登录流程

Mermaid Diagram Code:

sequenceDiagram
participant Client as 客户端
participant Gateway as API网关
participant System as 系统服务
participant DB as MySQL数据库
Client->>Gateway : 用户登录请求
Gateway->>System : 验证用户凭据
System->>DB : 查询用户信息
DB-->>System : 返回用户数据
System->>System : 验证密码
System->>DB : 查询用户角色
DB-->>System : 返回角色信息
System->>DB : 查询角色权限
DB-->>System : 返回权限列表
System-->>Gateway : 返回登录结果
Gateway-->>Client : 返回Token和权限信息

图表来源

设备监控数据流

Mermaid Diagram Code:

flowchart LR
Device[设备] --> Collect[数据采集]
Collect --> Parse[数据解析]
Parse --> Store[数据存储]
Store --> MySQL[关系型数据]
Store --> TDengine[时序数据]
MySQL --> Business[业务处理]
TDengine --> Analytics[数据分析]
Business --> Report[报表生成]
Analytics --> Alert[告警通知]

图表来源

任务执行流程

Mermaid Diagram Code:

stateDiagram-v2
[*] --> Created : 创建任务
Created --> Waiting : 等待执行
Waiting --> Running : 开始执行
Running --> Success : 执行成功
Running --> Failed : 执行失败
Running --> Retry : 重试执行
Retry --> Running : 重新执行
Success --> [*] : 任务结束
Failed --> [*] : 任务结束
Retry --> MaxRetry : 达到最大重试次数
MaxRetry --> Failed : 标记失败

图表来源

性能优化建议

数据库层面优化

  1. 索引优化

    • 为高频查询字段建立适当索引
    • 避免过度索引影响写入性能
    • 定期分析索引使用情况
  2. 查询优化

    • 使用EXPLAIN分析慢查询
    • 优化复杂关联查询
    • 合理使用LIMIT限制结果集
  3. 分区策略

    • 对大表实施水平分区
    • 基于时间字段进行分区
    • 定期清理历史数据

缓存策略

Mermaid Diagram Code:

graph TB
subgraph "缓存层次"
L1[本地缓存]
L2[分布式缓存]
L3[数据库缓存]
end
subgraph "数据一致性"
CacheWrite[写缓存]
CacheRead[读缓存]
CacheInvalid[失效策略]
end
CacheWrite --> CacheInvalid
CacheRead --> CacheWrite
CacheInvalid --> CacheRead

异步处理

对于耗时操作,建议采用异步处理模式:

  1. 消息队列: 使用RabbitMQ或RocketMQ处理异步任务
  2. 批量处理: 对大量数据操作进行批量化处理
  3. 定时任务: 使用Quartz框架管理定时任务

故障排查指南

常见问题诊断

Mermaid Diagram Code:

flowchart TD
Problem[系统问题] --> Auth[认证问题]
Problem --> DB[数据库问题]
Problem --> Perf[性能问题]
Problem --> Data[数据问题]
Auth --> LoginFail[登录失败]
Auth --> PermFail[权限不足]
DB --> ConnFail[连接失败]
DB --> LockFail[锁冲突]
DB --> Deadlock[死锁]
Perf --> SlowQuery[慢查询]
Perf --> MemoryLeak[内存泄漏]
Perf --> Timeout[超时]
Data --> DupKey[重复键]
Data --> NullValue[空值]
Data --> DataMismatch[数据不一致]

监控指标

建议关注以下关键指标:

  1. 数据库指标

    • 连接数使用率
    • 查询响应时间
    • 锁等待时间
    • 缓存命中率
  2. 系统指标

    • CPU使用率
    • 内存使用率
    • 磁盘IO
    • 网络带宽
  3. 业务指标

    • 用户活跃度
    • 任务执行成功率
    • 设备在线率
    • 黑名单触发率

日志分析

Mermaid Diagram Code:

erDiagram
LOG_ACCESS {
bigint id PK
string trace_id
bigint user_id
string user_type
string application_name
string request_method
string request_url
int duration
int result_code
string result_msg
datetime create_time
}
LOG_ERROR {
bigint id PK
string trace_id
string error_code
string error_msg
string error_stack
string request_url
datetime create_time
}
LOG_ACCESS ||--o{ LOG_ERROR : "关联"

图表来源

总结

本核心业务表结构设计体现了现代企业级应用的最佳实践:

  1. 规范化设计: 采用第三范式设计,消除数据冗余
  2. 权限控制: 实现完善的RBAC权限管理体系
  3. 扩展性: 支持多租户和模块化扩展
  4. 性能优化: 合理的索引策略和数据分区
  5. 监控完善: 全面的日志记录和指标监控

通过合理的表结构设计和约束管理,系统能够有效支撑复杂的业务需求,同时保证数据的一致性和完整性。建议在实际部署中根据具体业务场景进一步优化索引和查询策略,确保系统在高并发场景下的稳定运行。

用户文档
AI 助手
Agent 列表
请选择一个 Agent 开始对话
AI 问答