市场调研小程序 - 数据库ER图

核心数据表结构与关系设计

🗄️ 实体关系图 (ER Diagram)
erDiagram user ||--o{ task_assignment : "分配任务" user ||--o{ task : "创建任务" user ||--o{ review_record : "审核" user ||--o{ geofence : "创建围栏" user ||--o{ form_template : "创建模板" task ||--o{ task_assignment : "包含" task }o--|| geofence : "关联" task }o--|| form_template : "使用" task_assignment ||--o| checkin_record : "打卡" task_assignment ||--o{ photo : "拍照" task_assignment ||--o| form_submission : "提交" form_submission ||--o{ review_record : "审核" form_submission }o--|| form_template : "基于" user { varchar id PK varchar openid UK varchar phone varchar name enum role tinyint status } geofence { varchar id PK varchar name enum type decimal center_lat decimal center_lng int radius json polygon } form_template { varchar id PK varchar name json fields tinyint status varchar created_by FK } task { varchar id PK varchar title varchar geofence_id FK varchar form_template_id FK enum status datetime deadline tinyint require_photo int max_assignees } task_assignment { varchar id PK varchar task_id FK varchar user_id FK enum status enum assign_type datetime assigned_at } checkin_record { varchar id PK varchar assignment_id FK decimal latitude decimal longitude decimal accuracy tinyint is_in_geofence } photo { varchar id PK varchar assignment_id FK varchar url varchar label json ocr_result } form_submission { varchar id PK varchar assignment_id FK varchar form_template_id FK json form_data tinyint is_draft } review_record { varchar id PK varchar submission_id FK varchar reviewer_id FK enum status varchar comment }
PK - 主键
FK - 外键
普通字段
📊 核心数据表详情
user
用户表 - 存储调研员、审核员、管理员信息
  • id PK VARCHAR(32)
  • openid VARCHAR(64) UNIQUE
  • phone VARCHAR(20)
  • name VARCHAR(50)
  • role ENUM
  • status TINYINT
task
任务表 - 调研任务信息
  • id PK VARCHAR(32)
  • title VARCHAR(200)
  • geofence_id FK VARCHAR(32)
  • form_template_id FK VARCHAR(32)
  • status ENUM
  • deadline DATETIME
geofence
电子围栏表 - 调研目标位置范围
  • id PK VARCHAR(32)
  • name VARCHAR(100)
  • type ENUM(circle/polygon)
  • center_lat DECIMAL(10,7)
  • center_lng DECIMAL(10,7)
  • radius / polygon INT / JSON
form_template
表单模板表 - 动态表单配置
  • id PK VARCHAR(32)
  • name VARCHAR(100)
  • fields JSON
  • status TINYINT
  • created_by FK VARCHAR(32)
task_assignment
任务分配表 - 任务与调研员关联
  • id PK VARCHAR(32)
  • task_id FK VARCHAR(32)
  • user_id FK VARCHAR(32)
  • status ENUM
  • assign_type ENUM
checkin_record
打卡记录表 - 位置打卡信息
  • id PK VARCHAR(32)
  • assignment_id FK VARCHAR(32)
  • latitude DECIMAL(10,7)
  • longitude DECIMAL(10,7)
  • is_in_geofence TINYINT
photo
照片表 - 调研照片信息
  • id PK VARCHAR(32)
  • assignment_id FK VARCHAR(32)
  • url VARCHAR(500)
  • label VARCHAR(50)
  • ocr_result JSON
form_submission
表单提交表 - 调研表单数据
  • id PK VARCHAR(32)
  • assignment_id FK VARCHAR(32)
  • form_template_id FK VARCHAR(32)
  • form_data JSON
  • is_draft TINYINT
review_record
审核记录表 - 审核历史
  • id PK VARCHAR(32)
  • submission_id FK VARCHAR(32)
  • reviewer_id FK VARCHAR(32)
  • status ENUM
  • comment VARCHAR(500)
数据库设计说明

核心表:9张核心业务表,覆盖用户、任务、围栏、表单、打卡、照片、审核全流程

主键策略:使用 UUID (VARCHAR(32)) 作为主键,便于分布式扩展

软删除:关键表支持 deleted_at 软删除,保留数据历史

JSON字段:表单配置、多边形坐标、OCR结果等使用 JSON 类型存储

← 返回文档总览