评估系统 - 数据库ER图

概述

本文档包含评估系统的完整数据库实体关系图(ER图),展示了所有29个核心数据表之间的关系。

实体关系图

erDiagram
    User ||--o{ Client : creates
    User ||--o{ Project : creates
    User ||--o{ Plan : creates
    User ||--o{ Expert : creates
    User ||--o{ Hierarchy : creates
    User ||--o{ Problem : creates
    User ||--o{ Model : creates
    User ||--o{ SysModel : creates
    User ||--o{ DeviceModel : creates
    User ||--o{ MeasureModel : creates
    User ||--o{ Task : creates
    User ||--o{ Record : creates
    User ||--o{ EvalResult : creates
    User ||--o{ Device : creates
    User ||--o{ Car : creates
    User ||--o{ UserFile : creates
    User ||--o{ Role : creates
    User ||--o{ UserSession : creates
    User ||--o{ Contract : creates
    User ||--o{ Archive : creates
    User ||--o{ DeviceUsage : creates
    User ||--o{ ProjectInfo : creates
    User ||--o{ MeasureRule : creates
    User ||--o{ ByPassInfo : creates
    User ||--o{ ErrorReview : creates
    User ||--o{ MembershipMatrix : creates
    User ||--o{ SignRecord : creates
    User ||--o{ ReportTemplate : creates

    Client ||--o{ Project : owns
    Client ||--o{ Plan : commissions
    Client ||--o{ Contract : signs

    Project ||--o{ Plan : contains
    Project ||--o{ Device : has
    Project ||--o{ Task : includes
    Project ||--o{ DeviceUsage : uses
    Project ||--o{ ProjectInfo : details
    Project ||--o{ ProjectSignRecord : signs

    Plan ||--o{ Task : generates
    Plan ||--|| Expert : uses_system_fuzzy
    Plan ||--|| Expert : uses_system_score
    Plan ||--|| Expert : uses_device_fuzzy
    Plan ||--|| Expert : uses_device_score

    Hierarchy ||--o{ Problem : contains
    Hierarchy ||--o{ Model : contains
    Hierarchy ||--o{ MeasureRule : defines

    Model ||--o{ SysModel : extends
    Model ||--o{ DeviceModel : extends
    Model ||--o{ MeasureModel : extends

    Expert ||--|| MembershipMatrix : has
    Expert ||--o{ CompareMatrix : has
    Expert ||--|| SysModel : belongs_to_system
    Expert ||--|| DeviceModel : belongs_to_device

    Task ||--o{ Record : records
    Task ||--|| EvalResult : produces
    Task ||--|| ByPassInfo : bypasses

    Record ||--o{ ErrorReview : reviews

    Problem ||--o{ Record : referenced_by

    Device ||--o{ DeviceUsage : used_in

    UserFile ||--o{ Archive : archived_as
    UserFile ||--o{ Contract : attached_to

    User {
        int id PK
        string name UK
        string password
        string mobile UK
        enum state
        string department_path
        int role_id
        string avatar
        string email
        text remark
        datetime last_access_time
        boolean deleted
        int creator_id FK
        datetime create_time
        datetime update_time
    }

    Client {
        int id PK
        string name UK
        enum type
        string intention
        boolean deleted
        int creator_id FK
        datetime create_time
        datetime update_time
    }

    Project {
        int id PK
        string name UK
        enum type
        enum usage_type
        string department_path
        int client_id FK
        string construction_license
        string item_code
        string branch_company
        json construction_company_info
        json supervisor_company_info
        json address_info
        boolean deleted
        int creator_id FK
        datetime create_time
        datetime update_time
    }

    Plan {
        int id PK
        string name UK
        enum type
        int client_id FK
        int system_model_id FK
        int system_fuzzy_expert_id FK
        int system_score_expert_id FK
        int device_model_id FK
        int device_fuzzy_math_id FK
        int device_score_expert_id FK
        enum state
        datetime completed_time
        boolean deleted
        int creator_id FK
        datetime create_time
        datetime update_time
    }

    Hierarchy {
        int id PK
        string name UK
        json content
        boolean deleted
        int creator_id FK
        datetime create_time
        datetime update_time
    }

    Problem {
        int id PK
        string name UK
        int hierarchy_id FK
        string hierarchy_path
        text description
        json specific_terms
        json suggest_actions
        json incident_types
        json number_factors
        json scale_factors
        text review_paradigm
        string responsible_person
        string responsible_department
        int incident_case_file_id FK
        text correct_practice
        float num_value
        boolean deleted
        int creator_id FK
        datetime create_time
        datetime update_time
    }

    Expert {
        int id PK
        string name UK
        string type
        string contact
        float matrix_weight
        float membership_weight
        float expert_inquiry_weight
        json expert_funcs
        json weight_map
        int membership_matrix_id FK
        json compare_matrix_map
        boolean deleted
        int creator_id FK
        datetime create_time
        datetime update_time
    }

    Model {
        int id PK
        string name UK
        string type
        int hierarchy_id FK
        int version
        boolean deleted
        int creator_id FK
        datetime create_time
        datetime update_time
    }

    SysModel {
        int id PK
        string name UK
        string type
        int hierarchy_id FK
        int version
        json problem_ids
        json hierarchy_paths
        boolean deleted
        int creator_id FK
        datetime create_time
        datetime update_time
    }

    Car {
        int id PK
        string name UK
        string model
        string department_path
        int initial_mileage
        int driver_id FK
        boolean deleted
        int creator_id FK
        datetime create_time
        datetime update_time
    }

    Task {
        int id PK
        string name UK
        string task_type
        date date
        string assemble_place
        boolean deleted
        int creator_id FK
        datetime create_time
        datetime update_time
    }

    Record {
        int id PK
        string name UK
        string record_type
        int check_task_id FK
        int problem_id FK
        string hierarchy_name
        json hierarchy_names
        int device_id FK
        json images
        text remark
        boolean deleted
        int creator_id FK
        datetime create_time
        datetime update_time
    }

    EvalResult {
        int id PK
        string name UK
        string type
        int check_task_id FK
        float score
        float display_score
        json error_counts
        int plan_id FK
        int project_id FK
        int client_id FK
        boolean contain_system_res
        boolean contain_device_res
        boolean deleted
        int creator_id FK
        datetime create_time
        datetime update_time
    }

    Device {
        int id PK
        string name UK
        enum type
        string manufacturer_number
        boolean busy
        json properties
        boolean deleted
        int creator_id FK
        datetime create_time
        datetime update_time
    }

    UserFile {
        int id PK
        string name UK
        string original_name
        string file_path
        bigint file_size
        string file_type
        string mime_type
        datetime upload_time
        boolean deleted
        int creator_id FK
        datetime create_time
        datetime update_time
    }

关系说明

主要关系类型

  1. 一对多关系 (||--o{)
  • 用户创建各种业务实体
  • 委托方拥有多个项目
  • 项目包含多个计划
  • 层级包含多个问题
  1. 一对一关系 (||--||)
  • 计划与专家的一对一关联
  • 专家与隶属度矩阵的一对一关联
  1. 继承关系
  • SysModel、DeviceModel、MeasureModel 继承自 Model
  • ProjectSignRecord、WorkSignRecord 继承自 SignRecord

核心业务流程

  1. 用户管理流程:User → Role → UserSession
  2. 业务管理流程:Client → Project → Plan → Task
  3. 评估流程:Task → Record → EvalResult
  4. 标准体系流程:Hierarchy → Problem → Model → Expert

注意事项

  • 本ER图仅展示核心业务表,不包含JPA自动生成的多对多关系表
  • 所有表都包含软删除机制(deleted字段)
  • 所有表都包含审计字段(creator_id、create_time、update_time)
  • JSON字段用于存储复杂的数据结构