库表设计(基础功能版)
users 表
CREATE TABLE users (
user_id VARCHAR(255) PRIMARY KEY,
role VARCHAR(255) NOT NULL, DEFAULT 'user', -- 默认值为“user”,可选值为“user、admin”
username VARCHAR(255) NOT NULL UNIQUE,
nickname VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
phone VARCHAR(255) NOT NULL UNIQUE,
avatar VARCHAR(1024) NOT NULL, -- 头像(文件上传到腾讯云对象存储 COS 获取链接)
bio TEXT, -- 个人简介
email VARCHAR(255),
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
plantations 表
CREATE TABLE plantations (
plantation_id VARCHAR(255) PRIMARY KEY,
user_id VARCHAR(255) NOT NULL, -- 管理者id
photo_url VARCHAR(1024) NOT NULL, -- 茶园图片(文件上传到腾讯云对象存储 COS 获取链接)
plantation_introduction VARCHAR(1024) NOT NULL,
plantation_name VARCHAR(1024) NOT NULL, -- 茶园名称
country VARCHAR(100) NOT NULL DEFAULT 'China', -- 国家
province VARCHAR(100) NOT NULL, -- 省份
city VARCHAR(100) NOT NULL, -- 城市
district VARCHAR(100) NOT NULL, -- 区/县
detail_address VARCHAR(1024) NOT NULL, -- 详细地址
latitude DECIMAL(10, 6) NOT NULL, -- 纬度
longitude DECIMAL(10, 6) NOT NULL, -- 经度
altitude DECIMAL(10, 2) NOT NULL, -- 海拔高度
drone_count INT NOT NULL DEFAULT 0, -- 无人机总数
drone_running INT NOT NULL DEFAULT 0, -- 运行中无人机数量
soil_sensors_count INT NOT NULL DEFAULT 0, -- 地面传感器总数
soil_sensors_running INT NOT NULL DEFAULT 0, -- 运行中地面传感器数量
insect_pests_status INT NOT NULL DEFAULT 0, -- 病虫害监测开启状态,默认值为0:“未部署”,可选值为“0:未部署、1:正在运行、2:就绪”
deployment_status INT NOT NULL DEFAULT 0, -- 默认值为0:“未部署”,可选值为“0:未部署、1:正在部署、2:已部署”
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
);
knowledge_bases 表
CREATE TABLE knowledge_bases (
knowledge_base_id VARCHAR(255) PRIMARY KEY,
plantation_id VARCHAR(255) NOT NULL DEFAULT 'all', -- 默认值为“all”,表示针对所有茶园适用,
user_id VARCHAR(255) NOT NULL, -- 创建者id
description TEXT NOT NULL,
status VARCHAR(255) NOT NULL DEFAULT 'ready', -- 默认值为“ready”,可选值为“ready、processing、damaging”
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
files 表
CREATE TABLE files (
file_id VARCHAR(255) PRIMARY KEY,
user_id VARCHAR(255) NOT NULL, -- 上传者id
knowledge_base_id VARCHAR(255) NOT NULL,
file_name VARCHAR(255) NOT NULL,
upload_time DATETIME NOT NULL,
processing_status VARCHAR(255) NOT NULL DEFAULT 'queued', -- 默认值为“queued”,可选值为“processing、queued、complete、fail”
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
crawl_jobs 表
-- 网络爬虫作业表
CREATE TABLE crawl_jobs (
crawl_job_id VARCHAR(255) PRIMARY KEY,
knowledge_base_id VARCHAR(255) NOT NULL,
user_id VARCHAR(255) NOT NULL, -- 创建者id
keywords JSON NOT NULL,
max_pages INT NOT NULL,
status VARCHAR(255) NOT NULL DEFAULT 'processing', -- 默认值为“processing”,可选值为“processing、queued、complete、fail”
estimated_completion DATETIME NOT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
reports 表
CREATE TABLE reports (
report_id VARCHAR(255) PRIMARY KEY,
plantation_id VARCHAR(255) NOT NULL,
user_id VARCHAR(255) NOT NULL, -- 创建者id
report_type VARCHAR(255) NOT NULL DEFAULT 'pdf', -- 默认值为“pdf”,可选值为“pdf、word、latex、markdown、excel”,
start_time DATETIME NOT NULL,
end_time DATETIME NOT NULL,
status VARCHAR(255) NOT NULL DEFAULT 'processing', -- 默认值为“processing”,可选值为“processing、queued、complete、fail”
download_url VARCHAR(1024) NOT NULL DEFAULT 'queued', -- 也是文件上传到腾讯云对象存储 COS 获取链接
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
embeddings 表
CREATE TABLE embeddings (
embedding_id VARCHAR(255) PRIMARY KEY,
knowledge_base_id VARCHAR(255) NOT NULL,
categories VARCHAR(255) NOT NULL, -- 知识类别(专家经验、灌溉施肥、病虫害防治、采摘窍门、传感数据、历史溯源)
user_id VARCHAR(255) NOT NULL, -- 上传者id
text TEXT NOT NULL,
vector VECTOR(1536) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
**drone**** 表**
CREATE TABLE drones (
drone_id VARCHAR(50) PRIMARY KEY,
plantation_id VARCHAR(50) NOT NULL,
plantation_name VARCHAR(1024) NOT NULL,
latitude DECIMAL(10, 6) NOT NULL, -- 纬度
longitude DECIMAL(10, 6) NOT NULL, -- 经度
altitude DECIMAL(10, 2) NOT NULL, -- 海拔高度
battery_level INT NOT NULL, -- 电量%(0~100)
flight_mode VARCHAR(255) NOT NULL DEFAULT 'auto', -- 默认值为“auto”,可选值为“auto、manual”,
connection_status VARCHAR(255) NOT NULL DEFAULT 'connected', -- 默认值为“connected”,可选值为“connected、miss_connection”,
health_check VARCHAR(255) NOT NULL DEFAULT 'health', -- 默认值为“health”,可选值为“health、damaging”,
timestamp DATETIME NOT NULL,
horizontal_accuracy VARCHAR(255) NOT NULL,
vertical_accuracy VARCHAR(255) NOT NULL,
status VARCHAR(255) NOT NULL DEFAULT 'processing', -- 默认值为“processing”,可选值为“processing、ready、damaging”,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
**drone_missions**** 表(**存储无人机的任务信息)
CREATE TABLE drone_missions (
mission_id VARCHAR(255) PRIMARY KEY, -- 任务唯一标识符(UUID或自定义编码)
drone_id JSON NOT NULL, -- 执行任务的无人机编号(多架无人机 JSON)
plantation_id VARCHAR(50) NOT NULL,
mission_type VARCHAR(255) NOT NULL, -- 任务类型(类别:inspection-巡检/mapping-测绘/monitoring-监控)
current_waypoint INT NOT NULL, -- 当前执行航点序号(从0开始)
total_waypoints INT NOT NULL, -- 任务总航点数量
current_waypoint_location JSON NOT NULL, -- 当前无人机所要经过的地点(经纬度)列表:[{"latitude": 31.2304, "longitude": 121.4737}, {"latitude": 31.2305, "longitude": 121.4738}]
passed_waypoints JSON NOT NULL, -- 已经经过的地点(经纬度列表)列表:[{"latitude": 31.2304, "longitude": 121.4737}, {"latitude": 31.2305, "longitude": 121.4738}]
elapsed_time INT NOT NULL, -- 已飞行时间(以秒为单位)
start_time DATETIME NOT NULL, -- 任务开始时间
planned_end_time DATETIME NOT NULL, -- 计划结束时间
estimated_completion_time INT NOT NULL, -- 预计完成时间(总时间)
status VARCHAR(255) NOT NULL DEFAULT 'computing', -- 默认值为“processing”,可选值为“processing、computing、completed”,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 记录创建时间
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -- 记录更新时间
);
**weather_stations**** 表**
CREATE TABLE weather_stations (
station_id VARCHAR(255) PRIMARY KEY, -- 气象站唯一标识符(建议使用UUID或机构编码)
plantation_id VARCHAR(255) NOT NULL, -- 所属种植园ID(关联plantations表)
station_name VARCHAR(1024) NOT NULL, -- 气象站名称(如"南山监测点")
station_type VARCHAR(100) NOT NULL, -- 气象站类型(预设值:standard-标准站/micro-微型站/agro-农业站/auto-自动站/manual-人工站)
location_name VARCHAR(1024) NOT NULL, -- 地理位置描述(如"园区西北角")
latitude DECIMAL(10, 6) NOT NULL, -- 纬度坐标(十进制,精度6位小数)
longitude DECIMAL(10, 6) NOT NULL, -- 经度坐标(十进制,精度6位小数)
altitude DECIMAL(10, 2) NOT NULL, -- 海拔高度(单位:米,精度2位小数)
status VARCHAR(50) NOT NULL DEFAULT 'active', -- 设备状态(预设值:active-运行中/inactive-未激活/maintenance-维护中/fault-故障)
last_calibration DATE NOT NULL, -- 上次校准日期(每年至少校准一次)
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 记录创建时间
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -- 记录更新时间
);
historical_weather 表
CREATE TABLE historical_weather (
record_id BIGINT AUTO_INCREMENT PRIMARY KEY, -- 天气记录唯一标识(自增主键)
station_id VARCHAR(255) NOT NULL, -- 数据来源气象站ID(关联weather_stations表)
plantation_id VARCHAR(255) NOT NULL, -- 所属种植园ID(关联plantations表)
timestamp DATETIME NOT NULL, -- 数据采集时间戳(精确到分钟级)
temperature DECIMAL(5, 2) NOT NULL, -- 温度(单位:摄氏度,范围-99.99~99.99)
humidity DECIMAL(5, 2) NOT NULL, -- 相对湿度(百分比,范围0.00~100.00)
light DECIMAL(10, 2) NOT NULL, -- 光照强度(单位:勒克斯,支持0~99999999.99)
wind_speed DECIMAL(5, 2) NOT NULL, -- 风速(单位:米/秒,范围0.00~99.99)
wind_direction DECIMAL(5, 2) NOT NULL, -- 风向(单位:度,范围0.00~359.99)
rainfall DECIMAL(5, 2) NOT NULL, -- 降雨量(单位:毫米,范围0.00~99.99)
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP -- 记录入库时间
);
**soil_sensors**** 表**
CREATE TABLE soil_sensors (
sensor_id VARCHAR(255) PRIMARY KEY, -- 土壤传感器唯一标识符(建议使用UUID或设备编码)
plantation_id VARCHAR(255) NOT NULL, -- 所属种植园ID(关联plantations表)
sensor_name VARCHAR(1024) NOT NULL, -- 传感器名称(如"1号地块水分仪")
sensor_type VARCHAR(100) NOT NULL, -- 传感器类型(预设值:moisture-水分/ec-电导率/ph-ph值/temperature-温度/nutrient-养分)
location_name VARCHAR(1024) NOT NULL, -- 安装位置描述(如"A区西北角")
latitude DECIMAL(10, 6) NOT NULL, -- 纬度坐标(十进制,精度6位小数)
longitude DECIMAL(10, 6) NOT NULL, -- 经度坐标(十进制,精度6位小数)
depth DECIMAL(5, 2) NOT NULL, -- 埋设深度(单位:厘米,范围0.00~999.99)
status VARCHAR(255) NOT NULL DEFAULT 'processing', -- 传感器状态(预设值:processing-处理中/ready-正常/damaging-损坏)
last_calibration DATE NOT NULL, -- 上次校准日期(建议每月校准一次)
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 记录创建时间
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -- 记录更新时间
);
historical_soil_data 表
CREATE TABLE historical_soil_data (
record_id BIGINT AUTO_INCREMENT PRIMARY KEY, -- 土壤数据记录唯一标识(自增主键)
sensor_id VARCHAR(255) NOT NULL, -- 数据来源传感器ID(关联soil_sensors表)
timestamp DATETIME NOT NULL, -- 数据采集时间戳(精确到分钟级)
soil_moisture DECIMAL(5, 2) NOT NULL, -- 土壤湿度(体积含水量,百分比,范围0.00~100.00)
soil_temperature DECIMAL(5, 2) NOT NULL, -- 土壤温度(单位:摄氏度,范围-99.99~99.99)
soil_ph DECIMAL(3, 2) NOT NULL, -- 土壤酸碱度(范围0.00~14.00)
nitrogen DECIMAL(5, 2) NOT NULL, -- 土壤氮含量(单位:mg/kg,范围0.00~9999.99)
phosphorus DECIMAL(5, 2) NOT NULL, -- 土壤磷含量(单位:mg/kg,范围0.00~9999.99)
potassium DECIMAL(5, 2) NOT NULL, -- 土壤钾含量(单位:mg/kg,范围0.00~9999.99)
electrical_conductivity DECIMAL(5, 2) NOT NULL, -- 土壤电导率(单位:mS/cm,范围0.00~99.99)
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP -- 记录入库时间
);
AI 管理建议与农事计划表
-- 建议表
CREATE TABLE ai_suggestions (
suggestion_id VARCHAR(255) PRIMARY KEY,
title VARCHAR(1024) NOT NULL,
content TEXT NOT NULL,
suggestion_type VARCHAR(100) NOT NULL, -- 建议类型:irrigation, fertilization, pest_control, picking
priority VARCHAR(50) NOT NULL DEFAULT 'medium', -- 优先级:high, medium, low
status VARCHAR(50) NOT NULL DEFAULT 'unread', -- 状态:unread, read, pending, executed, dismissed
plantation_id VARCHAR(255) NOT NULL,
plot_id VARCHAR(255),
sensor_data JSON NOT NULL,
recommendation JSON NOT NULL,
execution_data JSON,
supporting_charts JSON,
trigger_type VARCHAR(50) NOT NULL DEFAULT 'automatic', -- 触发类型:automatic, manual
created_by VARCHAR(255) NOT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (plantation_id) REFERENCES plantations(plantation_id)
);
-- 建议历史记录表
CREATE TABLE suggestion_history (
history_id BIGINT AUTO_INCREMENT PRIMARY KEY,
suggestion_id VARCHAR(255) NOT NULL,
status_change VARCHAR(50) NOT NULL,
change_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
change_by VARCHAR(255) NOT NULL,
notes TEXT,
FOREIGN KEY (suggestion_id) REFERENCES ai_suggestions(suggestion_id)
);
-- 农事任务表
CREATE TABLE farm_tasks (
task_id VARCHAR(255) PRIMARY KEY,
task_type VARCHAR(100) NOT NULL, -- 任务类型:irrigation, fertilization, pest_control, picking, inspection
title VARCHAR(1024) NOT NULL,
description TEXT,
plantation_id VARCHAR(255) NOT NULL,
plot_id VARCHAR(255),
status VARCHAR(50) NOT NULL DEFAULT 'pending', -- 状态:pending, in_progress, completed, failed, cancelled
priority VARCHAR(50) NOT NULL DEFAULT 'medium', -- 优先级:high, medium, low
scheduled_time DATETIME,
actual_start_time DATETIME,
actual_end_time DATETIME,
assigned_to VARCHAR(255), -- 分配给:user, drone, device
assigned_to_id VARCHAR(255),
suggestion_ids JSON, -- 关联的建议ID列表
execution_details JSON,
created_by VARCHAR(255) NOT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (plantation_id) REFERENCES plantations(plantation_id)
);
categories(知识分类表)
CREATE TABLE categories (
category_id VARCHAR(255) PRIMARY KEY,
name VARCHAR(255) NOT NULL,
description TEXT,
teas_count INT DEFAULT 0,
created_at TIMESTAMP NOT NULL,
updated_at TIMESTAMP NOT NULL
);
popular_questions(热门问题表)
CREATE TABLE popular_questions (
question_id VARCHAR(255) PRIMARY KEY,
question TEXT NOT NULL,
answer_count INT DEFAULT 0,
view_count INT DEFAULT 0,
created_at TIMESTAMP NOT NULL,
updated_at TIMESTAMP NOT NULL,
tags JSON, -- 使用JSON类型存储标签数组
last_answer_at TIMESTAMP
);
设备管理表(设备管理、维修请求和固件升级)
-- 设备表
CREATE TABLE devices (
device_id VARCHAR(50) PRIMARY KEY,
device_type VARCHAR(50) NOT NULL, -- 设备类型:drone, soil_sensor, weather_station等
model VARCHAR(100) NOT NULL,
firmware_version VARCHAR(20) DEFAULT NULL,
serial_number VARCHAR(100) UNIQUE NOT NULL,
plantation_id VARCHAR(50) NOT NULL,
location_latitude DECIMAL(10, 6) DEFAULT NULL,
location_longitude DECIMAL(10, 6) DEFAULT NULL,
status VARCHAR(20) NOT NULL DEFAULT 'active', -- active, inactive, maintenance, offline
purchase_date DATE DEFAULT NULL,
warranty_expire_date DATE DEFAULT NULL,
last_maintenance_date DATE DEFAULT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (plantation_id) REFERENCES plantations(plantation_id)
);
-- 维修请求表
CREATE TABLE maintenance_requests (
request_id VARCHAR(50) PRIMARY KEY,
device_id VARCHAR(50) NOT NULL,
fault_description TEXT NOT NULL,
fault_photos JSON DEFAULT NULL,
fault_time DATETIME DEFAULT NULL,
urgency_level VARCHAR(20) NOT NULL DEFAULT 'normal', -- low, normal, high, critical
status VARCHAR(20) NOT NULL DEFAULT 'pending', -- pending, in_progress, completed, cancelled
diagnosis TEXT DEFAULT NULL,
repair_solution TEXT DEFAULT NULL,
repair_parts JSON DEFAULT NULL,
repair_cost DECIMAL(10, 2) DEFAULT NULL,
reported_by VARCHAR(50) NOT NULL,
assigned_to VARCHAR(50) DEFAULT NULL,
completed_at DATETIME DEFAULT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (device_id) REFERENCES devices(device_id)
);
-- 维修请求评论表
CREATE TABLE maintenance_comments (
comment_id VARCHAR(50) PRIMARY KEY,
request_id VARCHAR(50) NOT NULL,
user_id VARCHAR(50) NOT NULL,
content TEXT NOT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (request_id) REFERENCES maintenance_requests(request_id)
);
-- 维修请求状态历史表
CREATE TABLE maintenance_status_history (
history_id INT AUTO_INCREMENT PRIMARY KEY,
request_id VARCHAR(50) NOT NULL,
status VARCHAR(20) NOT NULL,
change_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
changed_by VARCHAR(50) NOT NULL,
FOREIGN KEY (request_id) REFERENCES maintenance_requests(request_id)
);
-- 固件版本表
CREATE TABLE firmware_versions (
version_id VARCHAR(50) PRIMARY KEY,
device_type VARCHAR(50) NOT NULL,
version_number VARCHAR(20) NOT NULL,
release_notes TEXT DEFAULT NULL,
release_date DATETIME NOT NULL,
mandatory BOOLEAN NOT NULL DEFAULT FALSE,
download_url VARCHAR(255) NOT NULL,
checksum VARCHAR(64) NOT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- 固件升级记录表
CREATE TABLE firmware_upgrades (
upgrade_id VARCHAR(50) PRIMARY KEY,
device_id VARCHAR(50) NOT NULL,
firmware_version VARCHAR(20) NOT NULL,
status VARCHAR(20) NOT NULL DEFAULT 'scheduled', -- scheduled, in_progress, completed, failed
start_time DATETIME DEFAULT NULL,
end_time DATETIME DEFAULT NULL,
duration VARCHAR(50) DEFAULT NULL,
result TEXT DEFAULT NULL,
logs TEXT DEFAULT NULL,
created_by VARCHAR(50) NOT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (device_id) REFERENCES devices(device_id)
);
产量预测表
-- 预测模型表
CREATE TABLE yield_prediction_models (
model_id VARCHAR(50) PRIMARY KEY,
model_name VARCHAR(100) NOT NULL,
model_description TEXT,
model_version VARCHAR(20) NOT NULL,
model_type VARCHAR(50) NOT NULL, -- mlp, lstm, random_forest等
status VARCHAR(20) NOT NULL DEFAULT 'active', -- active, inactive, retired
accuracy DECIMAL(4, 2) NOT NULL,
training_data_size INT NOT NULL,
last_updated DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);
-- 预测模型参数表
CREATE TABLE model_parameters (
parameter_id VARCHAR(50) PRIMARY KEY,
model_id VARCHAR(50) NOT NULL,
parameter_name VARCHAR(100) NOT NULL,
parameter_value JSON NOT NULL,
parameter_description TEXT,
last_updated DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (model_id) REFERENCES yield_prediction_models(model_id)
);
-- 产量预测结果表
CREATE TABLE yield_predictions (
prediction_id VARCHAR(50) PRIMARY KEY,
model_id VARCHAR(50) NOT NULL,
plantation_id VARCHAR(50) NOT NULL,
prediction_period VARCHAR(20) NOT NULL, -- daily, weekly, monthly, quarterly, yearly
start_date DATE NOT NULL,
end_date DATE NOT NULL,
status VARCHAR(20) NOT NULL DEFAULT 'processing', -- processing, completed, failed
parameters JSON NOT NULL,
results JSON,
recommendations JSON,
accuracy DECIMAL(4, 2),
execution_time DECIMAL(10, 2) NOT NULL, -- 执行时间(秒)
created_by VARCHAR(50) NOT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (model_id) REFERENCES yield_prediction_models(model_id),
FOREIGN KEY (plantation_id) REFERENCES plantations(plantation_id)
);
-- 预测报告表
CREATE TABLE prediction_reports (
report_id VARCHAR(50) PRIMARY KEY,
prediction_id VARCHAR(50) NOT NULL,
report_type VARCHAR(20) NOT NULL DEFAULT 'pdf', -- pdf, excel, json
report_status VARCHAR(20) NOT NULL DEFAULT 'generating', -- generating, completed, failed
report_url VARCHAR(255),
file_size BIGINT,
generated_by VARCHAR(50) NOT NULL,
generated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (prediction_id) REFERENCES yield_predictions(prediction_id)
);
病虫害防控表
-- 病虫害识别表
CREATE TABLE pest_identifications (
identification_id VARCHAR(50) PRIMARY KEY,
plantation_id VARCHAR(50) NOT NULL,
plot_id VARCHAR(50),
photos JSON NOT NULL,
symptoms TEXT NOT NULL,
location_latitude DECIMAL(10, 6),
location_longitude DECIMAL(10, 6),
severity_level VARCHAR(20) NOT NULL, -- mild, moderate, severe
occurrence_time DATETIME NOT NULL,
pest_type VARCHAR(100),
pest_species VARCHAR(100),
confidence DECIMAL(4, 2) NOT NULL,
status VARCHAR(20) NOT NULL DEFAULT 'completed', -- completed, pending, failed
identified_by VARCHAR(50) NOT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (plantation_id) REFERENCES plantations(plantation_id)
);
-- 病虫害预警表
CREATE TABLE pest_warnings (
warning_id VARCHAR(50) PRIMARY KEY,
plantation_id VARCHAR(50) NOT NULL,
plot_id VARCHAR(50),
pest_type VARCHAR(100) NOT NULL,
severity_level VARCHAR(20) NOT NULL, -- mild, moderate, severe
warning_level VARCHAR(20) NOT NULL, -- low, medium, high, critical
affected_area DECIMAL(10, 2) NOT NULL, -- 受影响面积(m²)
location_latitude DECIMAL(10, 6) NOT NULL,
location_longitude DECIMAL(10, 6) NOT NULL,
radius DECIMAL(10, 2) NOT NULL, -- 半径(m)
predicted_spread DECIMAL(10, 2) NOT NULL, -- 预测扩散速度(m/周)
warning_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
effective_period INT NOT NULL, -- 有效周期(天)
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (plantation_id) REFERENCES plantations(plantation_id)
);
-- 病虫害趋势表
CREATE TABLE pest_trends (
trend_id VARCHAR(50) PRIMARY KEY,
plantation_id VARCHAR(50) NOT NULL,
pest_type VARCHAR(100) NOT NULL,
time_period VARCHAR(20) NOT NULL, -- weekly, monthly, quarterly, yearly
trend_data JSON NOT NULL,
start_date DATE NOT NULL,
end_date DATE NOT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (plantation_id) REFERENCES plantations(plantation_id)
);
-- 病虫害防治方案表
CREATE TABLE pest_control_plans (
plan_id VARCHAR(50) PRIMARY KEY,
plantation_id VARCHAR(50) NOT NULL,
plot_id VARCHAR(50),
pest_type VARCHAR(100) NOT NULL,
severity_level VARCHAR(20) NOT NULL, -- mild, moderate, severe
identification_id VARCHAR(50),
control_methods JSON NOT NULL, -- 包含生物防治、化学防治等方法
estimated_cost DECIMAL(10, 2) NOT NULL,
estimated_effect_time INT NOT NULL, -- 预计生效时间(天)
estimated_duration INT NOT NULL, -- 预计持续时间(天)
responsible_person VARCHAR(50) NOT NULL,
status VARCHAR(20) NOT NULL DEFAULT 'pending', -- pending, in_progress, completed, failed
progress INT NOT NULL DEFAULT 0, -- 进度百分比
start_time DATETIME,
end_time DATETIME,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (plantation_id) REFERENCES plantations(plantation_id),
FOREIGN KEY (identification_id) REFERENCES pest_identifications(identification_id)
);
-- 防治方案执行记录表
CREATE TABLE control_execution_records (
record_id VARCHAR(50) PRIMARY KEY,
plan_id VARCHAR(50) NOT NULL,
method_index INT NOT NULL, -- 对应control_methods中的索引
method_type VARCHAR(50) NOT NULL, -- biological, chemical, physical
agent_name VARCHAR(100) NOT NULL,
agent_quantity DECIMAL(10, 2) NOT NULL,
application_time DATETIME NOT NULL,
application_status VARCHAR(20) NOT NULL DEFAULT 'pending', -- pending, completed, failed
执行人 VARCHAR(50),
execution_notes TEXT,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (plan_id) REFERENCES pest_control_plans(plan_id)
);