|
|
# 战场探索系统数据库设计
|
|
|
|
|
|
## 设计概述
|
|
|
|
|
|
根据"战场探索系统"的实际需求,重新设计了数据库结构:
|
|
|
- **移除了伤员记录表** - 不符合战场探索的核心功能
|
|
|
- **合并设备表** - 无人机和地面机器人使用统一表结构,通过`device_type`字段区分
|
|
|
- **增加探索相关功能** - 添加了探索任务等战场探索核心功能
|
|
|
|
|
|
## 数据库表结构
|
|
|
|
|
|
### 1. devices (统一设备表) ⭐ 核心表
|
|
|
|
|
|
**用途**: 存储所有无人设备(无人机 + 地面机器人)
|
|
|
|
|
|
```sql
|
|
|
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 (探索任务表) 🎯 业务核心
|
|
|
|
|
|
**用途**: 管理战场探索任务
|
|
|
|
|
|
```sql
|
|
|
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 (系统配置表) ⚙️
|
|
|
|
|
|
**用途**: 存储系统配置参数
|
|
|
|
|
|
```sql
|
|
|
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 (设备操作日志表) 📝
|
|
|
|
|
|
**用途**: 记录所有设备操作日志
|
|
|
|
|
|
```sql
|
|
|
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 (用户会话表) 👤
|
|
|
|
|
|
**用途**: 管理用户登录会话
|
|
|
|
|
|
```sql
|
|
|
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`类继续工作,创建了兼容性视图:
|
|
|
|
|
|
```sql
|
|
|
-- 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` - 错误
|
|
|
|
|
|
### 示例数据
|
|
|
|
|
|
```sql
|
|
|
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. 获取所有在线设备
|
|
|
```sql
|
|
|
SELECT id, name, device_type, signal_strength, battery_level
|
|
|
FROM devices
|
|
|
WHERE state = 1
|
|
|
ORDER BY device_type, name;
|
|
|
```
|
|
|
|
|
|
### 2. 按设备类型分组统计
|
|
|
```sql
|
|
|
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. 查找信号弱的设备
|
|
|
```sql
|
|
|
SELECT id, name, device_type, signal_strength, last_heartbeat
|
|
|
FROM devices
|
|
|
WHERE state = 1 AND signal_strength < 50
|
|
|
ORDER BY signal_strength ASC;
|
|
|
```
|
|
|
|
|
|
### 4. 获取设备列表(用于界面显示)
|
|
|
```sql
|
|
|
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: 功能增强
|
|
|
- 实现探索任务管理
|
|
|
- 添加设备协同功能
|
|
|
- 完善日志记录系统
|
|
|
|
|
|
这个设计完全符合"战场探索系统"的定位,突出了设备管理和探索任务的核心功能,同时保持了与现有代码的兼容性。 |