🏢 展示站 🔐 登录编辑
🏠 首页 /📂 开发参考 /数据库表结构

🗄️数据库表结构

数据库表结构

📄 database.md 📂 开发参考 数据库 🕘 2 个历史版本

数据库表结构

SQLite 数据库,路径 data/safe_upload.db,共 28 张表。数据库是整个平台的"记忆中心",所有隐患、用户、台账数据都存在这里。


核心表关系图

erDiagram
    ORGANIZATIONS ||--o{ USERS : "拥有"
    ORGANIZATIONS ||--o{ EQUIPMENT : "拥有"
    ORGANIZATIONS ||--o{ HAZARDS : "发生"
    ORGANIZATIONS ||--o{ RISK_POINTS : "分布"
    ORGANIZATIONS ||--o{ TASKS : "派发"
    USERS ||--o{ HAZARDS : "上报"
    USERS ||--o{ TASKS : "负责"
    USERS ||--o{ LOGS : "操作"
    HAZARDS ||--o{ HAZARD_FLOW : "流转"
    HAZARDS ||--o{ HAZARD_PHOTOS : "附件"
    RISK_POINTS ||--o{ RISK_MEASURES : "措施"
    TRAINING_COURSES ||--o{ TRAINING_RECORDS : "学习"
    EMERGENCY_PLANS ||--o{ EMERGENCY_DRILLS : "演练"
    WORK_PERMITS ||--o{ PERMIT_FLOW : "审批"

    ORGANIZATIONS {
        int id PK
        string name
        int parent_id
    }
    USERS {
        int id PK
        string username
        string password_hash
        string role
        int org_id FK
    }
    HAZARDS {
        int id PK
        string title
        string level
        int org_id FK
        int reporter_id FK
        string status
    }
    TASKS {
        int id PK
        int hazard_id FK
        int assignee_id FK
        date deadline
        string status
    }
    LOGS {
        int id PK
        int user_id FK
        string action
        string ip
        datetime created_at
    }

表分类总览

分类 主要表 作用
基础台账 organizations equipment personnel related_parties materials 录入组织、设备、人员、合作方、物资
隐患管理 hazards hazard_flow hazard_photos tasks 隐患上报、流转、整改、闭环
风险管控 risk_points risk_measures 双重预防机制 - 风险点与管控措施
培训管理 training_courses training_records exam_papers 课程、记录、考试
应急管理 emergency_plans emergency_drills emergency_contacts 预案、演练、通讯录
作业许可 work_permits permit_flow 动火/高处等高风险作业审批
巡查管理 patrols patrol_records patrol_points 巡查计划、记录、点位
统计/考核 reports_cache assessments 报表缓存、考核评分
系统表 users roles logs settings 账号、权限、日志、配置

通用字段约定

每张表都包含以下基础字段:

  • id —— 自增主键
  • created_at —— 创建时间(ISO8601 字符串)
  • updated_at —— 更新时间(部分表)
  • org_id —— 经营主体关联(多租户隔离)

多租户隔离机制

平台采用经营主体(org_id)字段做多租户数据隔离:

  • 公司管理员可以看到所有数据
  • 子公司管理员只能看到本公司的数据
  • 普通员工只能看到自己上报或被指派的数据
  • 所有 SQL 查询自动追加 WHERE org_id IN (当前用户可见的 org 列表) 过滤

备份与维护

  • 自动备份:每日凌晨 2:00 自动备份到内网 Gitea
  • 保留策略:本地保留 7 天,Gitea 长期保留
  • 数据导出:管理员可在「导入导出」页面导出全量数据为 Excel