CostPrediction/src/schema.sql

209 lines
9.0 KiB
SQL

-- 如果数据库已存在则删除
DROP DATABASE IF EXISTS equipment_cost_db;
-- 创建数据库
CREATE DATABASE equipment_cost_db
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
-- 使用数据库
USE equipment_cost_db;
-- 装备基本信息表
CREATE TABLE equipments (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100), -- 名称
type VARCHAR(50), -- 类型(火箭炮/巡飞弹)
manufacturer VARCHAR(100), -- 制造商
manufacturer_id INT, -- 制造商ID
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 通用参数表
CREATE TABLE common_params (
id INT AUTO_INCREMENT PRIMARY KEY,
equipment_id INT,
length_m FLOAT, -- 总长(m)
width_m FLOAT, -- 宽度(m)
height_m FLOAT, -- 高度(m)
weight_kg FLOAT, -- 重量(kg)
FOREIGN KEY (equipment_id) REFERENCES equipments(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 火箭炮特有参数表
CREATE TABLE rocket_artillery_params (
id INT AUTO_INCREMENT PRIMARY KEY,
equipment_id INT,
firing_angle_horizontal FLOAT, -- 方向射界(度)
firing_angle_vertical FLOAT, -- 高低射界(度)
rocket_length_m FLOAT, -- 火箭弹长度(m)
rocket_diameter_mm FLOAT, -- 弹体直径(mm)
rocket_weight_kg FLOAT, -- 火箭弹重量(kg)
rate_of_fire FLOAT, -- 射速(发/分钟)
combat_weight_kg FLOAT, -- 战斗重量(kg)
speed_kmh FLOAT, -- 速度(km/h)
min_range_km FLOAT, -- 最小射程(km)
max_range_km FLOAT, -- 最大射程(km)
mobility_type VARCHAR(50), -- 行走方式
structure_layout VARCHAR(100), -- 结构布局
engine_model VARCHAR(100), -- 发动机型号
engine_params TEXT, -- 发动机参数
power_hp FLOAT, -- 功率(hp)
travel_range_km FLOAT, -- 行程(km)
-- 新增特征工程字段
fire_density FLOAT, -- 火力密度(发射次数/分钟/平方米)
range_ratio FLOAT, -- 射程比(最大射程/最小射程)
mobility_score INT, -- 机动性评分(1-10)
combat_readiness_score INT, -- 战备状态评分(1-10)
rocket_power_ratio FLOAT, -- 火箭弹功重比
platform_efficiency FLOAT, -- 平台效率(射速/战斗重量)
deployment_score INT, -- 部署评分(1-10)
terrain_adaptability_score INT, -- 地形适应性评分(1-10)
FOREIGN KEY (equipment_id) REFERENCES equipments(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 巡飞弹特有参数表
CREATE TABLE loitering_munition_params (
id INT AUTO_INCREMENT PRIMARY KEY,
equipment_id INT,
wingspan_m FLOAT, -- 翼展(m)
warhead_weight_kg FLOAT, -- 战斗部重量(kg)
max_speed_ms FLOAT, -- 最大速度(m/s)
cruise_speed_kmh FLOAT, -- 巡航速度(km/h)
endurance_min FLOAT, -- 续航时间(min)
max_range_km FLOAT, -- 最大航程(km)
max_payload_kg FLOAT, -- 最大载荷(kg)
ceiling_altitude_m FLOAT, -- 升限(m)
combat_radius_km FLOAT, -- 作战半径(km)
warhead_type VARCHAR(50), -- 战斗部类型
launch_mode VARCHAR(50), -- 发射方式
power_system VARCHAR(100), -- 动力装置
guidance_system VARCHAR(100), -- 制导体制
engine_power_kw FLOAT, -- 发动机功率(kw)
engine_thrust_n FLOAT, -- 发动机推力(N)
datalink_range_km FLOAT, -- 通信链路距离(km)
guidance_accuracy_m FLOAT, -- 制导精度(m)
min_altitude_m FLOAT, -- 最小作战高度(m)
max_altitude_m FLOAT, -- 最大作战高度(m)
-- 特征工程字段
length_width_ratio FLOAT, -- 长宽比
weight_range_ratio FLOAT, -- 重量/射程比
speed_weight_ratio FLOAT, -- 速度/重量比
guidance_system_score INT, -- 制导系统复杂度评分(1-10)
warhead_power_score INT, -- 战斗部威力评分(1-10)
-- 分类特征编码
warhead_type_code INT, -- 战斗部类型编码
launch_mode_code INT, -- 发射方式编码
power_system_code INT, -- 动力装置编码
guidance_system_code INT, -- 制导系统编码
FOREIGN KEY (equipment_id) REFERENCES equipments(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 分类特征编码表
CREATE TABLE feature_encoding (
id INT AUTO_INCREMENT PRIMARY KEY,
feature_type VARCHAR(50), -- 特征类型(warhead_type/launch_mode/power_system/guidance_system)
feature_value VARCHAR(100), -- 特征值
code INT, -- 编码值
UNIQUE KEY unique_feature (feature_type, feature_value)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 成本数据表
CREATE TABLE cost_data (
id INT AUTO_INCREMENT PRIMARY KEY,
equipment_id INT,
actual_cost DECIMAL(15,2), -- 实际成本(元)
predicted_cost DECIMAL(15,2), -- 预测成本(元)
prediction_date TIMESTAMP, -- 预测日期
FOREIGN KEY (equipment_id) REFERENCES equipments(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 特殊参数表
CREATE TABLE custom_params (
id INT AUTO_INCREMENT PRIMARY KEY,
equipment_id INT,
param_name VARCHAR(100), -- 参数名称
param_value VARCHAR(255), -- 参数值
param_unit VARCHAR(50), -- 参数单位
description TEXT, -- 参数说明
FOREIGN KEY (equipment_id) REFERENCES equipments(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 添加索引
CREATE INDEX idx_equipment_type ON equipments(type);
CREATE INDEX idx_equipment_name ON equipments(name);
CREATE INDEX idx_cost_data_equipment ON cost_data(equipment_id);
-- 数据集表
CREATE TABLE datasets (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL, -- 数据集名称
description TEXT, -- 数据集描述
equipment_type VARCHAR(50) NOT NULL, -- 装备类型
purpose VARCHAR(50) NOT NULL, -- 用途(训练/验证)
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- 数据集-装备关联表
CREATE TABLE dataset_equipments (
dataset_id INT NOT NULL,
equipment_id INT NOT NULL,
PRIMARY KEY (dataset_id, equipment_id),
FOREIGN KEY (dataset_id) REFERENCES datasets(id),
FOREIGN KEY (equipment_id) REFERENCES equipments(id)
);
-- 训练模型表
CREATE TABLE trained_models (
id INT AUTO_INCREMENT PRIMARY KEY,
model_name VARCHAR(100) NOT NULL, -- 模型名称
model_type VARCHAR(50) NOT NULL, -- 模型类型
equipment_type VARCHAR(50) NOT NULL, -- 装备类型
model_path VARCHAR(255) NOT NULL, -- 模型文件路径
scaler_path VARCHAR(255) NOT NULL, -- 标准化器路径
r2_score FLOAT, -- R²分数
mae FLOAT, -- 平均绝对误差
rmse FLOAT, -- 均方根误差
feature_importance JSON, -- 特征重要性
training_data_size INT, -- 训练数据量
training_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 训练时间
is_active BOOLEAN DEFAULT FALSE, -- 是否为当前活模型
created_by VARCHAR(50) -- 创建者
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 添加索引
CREATE INDEX idx_model_equipment_type ON trained_models(equipment_type);
CREATE INDEX idx_model_active ON trained_models(is_active);
-- 生产商表
CREATE TABLE manufacturers (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL, -- 生产商名称
country VARCHAR(50) NOT NULL, -- 所属国家
tech_level INT NOT NULL, -- 技术水平评分(1-10)
scale_level INT NOT NULL, -- 规模评分(1-10)
supply_chain_level INT NOT NULL, -- 供应链成熟度评分(1-10)
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY unique_name (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 添加生产商外键
ALTER TABLE equipments ADD FOREIGN KEY (manufacturer_id) REFERENCES manufacturers(id);
-- 添加索引
CREATE INDEX idx_manufacturer_country ON manufacturers(country);
CREATE INDEX idx_manufacturer_tech_level ON manufacturers(tech_level);
CREATE INDEX idx_manufacturer_scale_level ON manufacturers(scale_level);
CREATE INDEX idx_manufacturer_supply_chain_level ON manufacturers(supply_chain_level);
CREATE INDEX idx_equipment_manufacturer ON equipments(manufacturer_id);