You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
7.2 KiB
7.2 KiB
战场探索系统数据库设计
设计概述
根据"战场探索系统"的实际需求,重新设计了数据库结构:
- 移除了伤员记录表 - 不符合战场探索的核心功能
- 合并设备表 - 无人机和地面机器人使用统一表结构,通过
device_type
字段区分 - 增加探索相关功能 - 添加了探索任务等战场探索核心功能
数据库表结构
1. devices (统一设备表) ⭐ 核心表
用途: 存储所有无人设备(无人机 + 地面机器人)
CREATE TABLE devices (
id VARCHAR(50) PRIMARY KEY, -- 设备唯一ID
name VARCHAR(100) NOT NULL, -- 设备名称
device_type VARCHAR(20) NOT NULL, -- 设备类型: 'uav'=无人机, 'dog'=地面机器人
state INT DEFAULT 0, -- 设备状态: 0=离线, 1=在线, 2=工作中, 3=错误
ip VARCHAR(15), -- 设备IP地址
port INT, -- 通信端口
longitude DOUBLE, -- 经度坐标
latitude DOUBLE, -- 纬度坐标
signal_strength INT DEFAULT 0, -- 信号强度 (0-100)
last_heartbeat TIMESTAMP NULL, -- 最后心跳时间
battery_level INT DEFAULT 100, -- 电池电量 (0-100)
firmware_version VARCHAR(50), -- 固件版本
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
索引优化:
device_type
- 按设备类型快速筛选state
- 按状态查询在线设备(longitude, latitude)
- 地理位置查询(device_type, state)
- 复合索引,查询特定类型的特定状态设备
2. exploration_tasks (探索任务表) 🎯 业务核心
用途: 管理战场探索任务
CREATE TABLE exploration_tasks (
task_id VARCHAR(50) PRIMARY KEY,
task_name VARCHAR(200) NOT NULL,
task_type VARCHAR(50), -- 任务类型: patrol, reconnaissance, search
assigned_devices JSON, -- 分配的设备ID列表
task_status VARCHAR(20) DEFAULT 'created', -- 任务状态
start_time TIMESTAMP NULL,
end_time TIMESTAMP NULL,
target_area JSON, -- 目标区域坐标
task_priority INT DEFAULT 1, -- 优先级: 1=低, 2=中, 3=高, 4=紧急
created_by VARCHAR(50),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
3. system_config (系统配置表) ⚙️
用途: 存储系统配置参数
CREATE TABLE system_config (
config_key VARCHAR(100) PRIMARY KEY,
config_value TEXT,
config_type VARCHAR(20) DEFAULT 'string',
description VARCHAR(500),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
4. device_operation_logs (设备操作日志表) 📝
用途: 记录所有设备操作日志
CREATE TABLE device_operation_logs (
log_id BIGINT AUTO_INCREMENT PRIMARY KEY,
device_id VARCHAR(50),
device_type VARCHAR(20),
operation VARCHAR(50), -- 操作: connect, disconnect, control, move, takeoff, land
operation_result VARCHAR(20) DEFAULT 'success',
operator VARCHAR(50),
operation_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
details JSON,
FOREIGN KEY (device_id) REFERENCES devices(id)
);
5. user_sessions (用户会话表) 👤
用途: 管理用户登录会话
CREATE TABLE user_sessions (
session_id VARCHAR(100) PRIMARY KEY,
user_name VARCHAR(50),
login_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
last_activity TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
ip_address VARCHAR(45),
user_agent TEXT,
status INT DEFAULT 1
);
兼容性设计
视图映射 (保持现有代码工作)
为了确保现有的UAVDatabase
和DogDatabase
类继续工作,创建了兼容性视图:
-- UAV设备视图 (兼容UAVDatabase)
CREATE VIEW uavdatabase AS
SELECT id, state, ip, port, longitude as lon, latitude as lat
FROM devices WHERE device_type = 'uav';
-- Dog设备视图 (兼容DogDatabase)
CREATE VIEW dogdatabase AS
SELECT id, state, ip, port, longitude as lon, latitude as lat
FROM devices WHERE device_type = 'dog';
设备类型管理
device_type 枚举值
'uav'
- 无人机设备'dog'
- 地面机器人设备
state 状态值
0
- 离线1
- 在线2
- 工作中3
- 错误
示例数据
INSERT INTO devices VALUES
('UAV001', '侦察无人机-01', 'uav', 1, '192.168.1.101', 8001, 116.4074, 39.9042, 85, 95),
('DOG001', '地面机器人-01', 'dog', 1, '192.168.1.201', 8101, 116.4064, 39.9032, 92, 88);
数据库查询示例
1. 获取所有在线设备
SELECT id, name, device_type, signal_strength, battery_level
FROM devices
WHERE state = 1
ORDER BY device_type, name;
2. 按设备类型分组统计
SELECT
device_type,
COUNT(*) as total_count,
SUM(CASE WHEN state = 1 THEN 1 ELSE 0 END) as online_count,
AVG(battery_level) as avg_battery
FROM devices
GROUP BY device_type;
3. 查找信号弱的设备
SELECT id, name, device_type, signal_strength, last_heartbeat
FROM devices
WHERE state = 1 AND signal_strength < 50
ORDER BY signal_strength ASC;
4. 获取设备列表(用于界面显示)
SELECT
id,
name,
CASE device_type
WHEN 'uav' THEN '无人机'
WHEN 'dog' THEN '地面机器人'
END as type_name,
CASE state
WHEN 0 THEN '离线'
WHEN 1 THEN '在线'
WHEN 2 THEN '工作中'
WHEN 3 THEN '错误'
END as status_name,
signal_strength,
battery_level,
ip,
port
FROM devices
ORDER BY device_type, name;
优势分析
1. 统一管理
- ✅ 无人机和机器狗使用相同的数据结构
- ✅ 简化了数据库连接和管理代码
- ✅ 界面可以统一显示设备列表
2. 扩展性强
- ✅ 添加新设备类型只需增加
device_type
值 - ✅ 字段统一,便于添加通用功能(如电池监控)
- ✅ 便于实现设备间的协同任务
3. 性能优化
- ✅ 减少了表的数量,降低了JOIN操作
- ✅ 合理的索引设计提升查询性能
- ✅ JSON字段支持灵活的扩展信息存储
4. 兼容性保证
- ✅ 通过视图确保现有代码继续工作
- ✅ 渐进式迁移,降低风险
- ✅ 新老代码可以并存
迁移策略
Phase 1: 表结构迁移 ✅ 已完成
- 创建新的统一
devices
表 - 创建兼容性视图
- 插入示例数据
Phase 2: 代码适配
- 更新数据库访问类,支持统一设备管理
- 修改界面代码,实现统一设备列表
- 添加设备类型筛选功能
Phase 3: 功能增强
- 实现探索任务管理
- 添加设备协同功能
- 完善日志记录系统
这个设计完全符合"战场探索系统"的定位,突出了设备管理和探索任务的核心功能,同时保持了与现有代码的兼容性。