78 lines
3.0 KiB
SQL
78 lines
3.0 KiB
SQL
-- 中国机车图鉴 · 数据底座 schema(SQLite,设计为可移植到 PostgreSQL)
|
||
-- 对应任务 T-1.1。三层模型:Category -> Model -> Unit,加 Model 关系表。
|
||
|
||
PRAGMA foreign_keys = ON;
|
||
|
||
CREATE TABLE IF NOT EXISTS category (
|
||
id INTEGER PRIMARY KEY,
|
||
name TEXT NOT NULL,
|
||
subcat TEXT DEFAULT '',
|
||
slug TEXT,
|
||
UNIQUE(name, subcat)
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS model (
|
||
id INTEGER PRIMARY KEY,
|
||
category_id INTEGER NOT NULL REFERENCES category(id),
|
||
series TEXT DEFAULT '',
|
||
model_code TEXT NOT NULL,
|
||
full_name TEXT DEFAULT '',
|
||
aliases TEXT DEFAULT '',
|
||
manufacturer TEXT DEFAULT '',
|
||
country TEXT DEFAULT '中国',
|
||
country_type TEXT DEFAULT '国产', -- 国产/进口/引进仿制/中外合资/未知
|
||
first_year INTEGER,
|
||
last_year INTEGER,
|
||
status TEXT DEFAULT '未知',
|
||
usage TEXT DEFAULT '',
|
||
production_count TEXT DEFAULT '',
|
||
axle_arrangement TEXT DEFAULT '',
|
||
drive TEXT DEFAULT '',
|
||
efficiency TEXT DEFAULT '',
|
||
-- 数值 + 单位(拆分存储)
|
||
length_value REAL, length_unit TEXT,
|
||
width_value REAL, width_unit TEXT,
|
||
height_value REAL, height_unit TEXT,
|
||
wheelbase_value REAL, wheelbase_unit TEXT,
|
||
weight_value REAL, weight_unit TEXT,
|
||
axle_load_value REAL, axle_load_unit TEXT,
|
||
load_value REAL, load_unit TEXT,
|
||
tractive_start_value REAL, tractive_start_unit TEXT,
|
||
tractive_cont_value REAL, tractive_cont_unit TEXT,
|
||
power_kw_value REAL, power_kw_unit TEXT,
|
||
max_speed_value REAL, max_speed_unit TEXT,
|
||
capacity_value REAL, capacity_unit TEXT,
|
||
raw_json TEXT, -- 原始清洗后所有列,保真不丢字段
|
||
source_sheet TEXT
|
||
);
|
||
CREATE INDEX IF NOT EXISTS idx_model_category ON model(category_id);
|
||
CREATE INDEX IF NOT EXISTS idx_model_code ON model(model_code);
|
||
CREATE INDEX IF NOT EXISTS idx_model_first_year ON model(first_year);
|
||
|
||
CREATE TABLE IF NOT EXISTS unit (
|
||
id INTEGER PRIMARY KEY,
|
||
category_id INTEGER NOT NULL REFERENCES category(id),
|
||
model_id INTEGER REFERENCES model(id),
|
||
car_number TEXT,
|
||
model_name TEXT DEFAULT '',
|
||
function TEXT DEFAULT '',
|
||
depot TEXT DEFAULT '',
|
||
livery TEXT DEFAULT '',
|
||
status TEXT DEFAULT '未知',
|
||
location TEXT DEFAULT '',
|
||
note TEXT DEFAULT '',
|
||
raw_json TEXT,
|
||
source_sheet TEXT
|
||
);
|
||
CREATE INDEX IF NOT EXISTS idx_unit_category ON unit(category_id);
|
||
CREATE INDEX IF NOT EXISTS idx_unit_car_number ON unit(car_number);
|
||
|
||
-- 车型族谱关系(父型号/衍生/国外原型),本期预留,后续填充
|
||
CREATE TABLE IF NOT EXISTS model_relation (
|
||
id INTEGER PRIMARY KEY,
|
||
from_model_id INTEGER NOT NULL REFERENCES model(id),
|
||
to_model_id INTEGER NOT NULL REFERENCES model(id),
|
||
rel_type TEXT NOT NULL, -- parent / derivative / prototype
|
||
UNIQUE(from_model_id, to_model_id, rel_type)
|
||
);
|