-- ============================================================ -- SmartBizTrip 全量建表脚本 -- 合并所有业务表的 CREATE TABLE 语句 -- 数据库: biztrip_rag -- ============================================================ SET NAMES utf8mb4; DROP DATABASE IF EXISTS biztrip_rag; CREATE DATABASE biztrip_rag CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE biztrip_rag; -- ==================== 高铁票表 ==================== DROP TABLE IF EXISTS train_tickets; CREATE TABLE train_tickets ( id INT AUTO_INCREMENT PRIMARY KEY COMMENT '主键,自增,唯一标识每条记录', departure_city VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '出发城市(如"北京")', arrival_city VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '到达城市(如"上海")', departure_time DATETIME NOT NULL COMMENT '出发时间', arrival_time DATETIME NOT NULL COMMENT '到达时间', train_number VARCHAR(20) NOT NULL COMMENT '火车车次(如"G1001")', seat_type VARCHAR(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '座位类型(如"二等座")', total_seats INT NOT NULL COMMENT '总座位数', remaining_seats INT NOT NULL COMMENT '剩余座位数', price DECIMAL(10, 2) NOT NULL COMMENT '票价(如 553.50)', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间,自动记录插入时间', UNIQUE KEY unique_train (departure_time, train_number, seat_type) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='高铁票信息表'; -- ==================== 航班票务表 ==================== DROP TABLE IF EXISTS flight_tickets; CREATE TABLE flight_tickets ( id INT AUTO_INCREMENT PRIMARY KEY COMMENT '主键,自增,唯一标识每条记录', departure_city VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '出发城市', arrival_city VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '到达城市', departure_time DATETIME NOT NULL COMMENT '出发时间', arrival_time DATETIME NOT NULL COMMENT '到达时间', flight_number VARCHAR(20) NOT NULL COMMENT '航班号(如"CA1234")', cabin_type VARCHAR(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '舱位类型(如"经济舱")', total_seats INT NOT NULL COMMENT '总座位数', remaining_seats INT NOT NULL COMMENT '剩余座位数', price DECIMAL(10, 2) NOT NULL COMMENT '票价', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间,自动记录插入时间', UNIQUE KEY unique_flight (departure_time, flight_number, cabin_type) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='航班票务信息表'; -- ==================== 会展门票表 ==================== DROP TABLE IF EXISTS event_tickets; CREATE TABLE event_tickets ( id INT AUTO_INCREMENT PRIMARY KEY COMMENT '主键,自增', event_name VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '活动名称', city VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '举办城市', venue VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '场馆', start_time DATETIME NOT NULL COMMENT '开始时间', end_time DATETIME NOT NULL COMMENT '结束时间', ticket_type VARCHAR(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '票类型(如"VIP")', total_seats INT NOT NULL COMMENT '总座位数', remaining_seats INT NOT NULL COMMENT '剩余座位数', price DECIMAL(10, 2) NOT NULL COMMENT '票价', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', UNIQUE KEY unique_event (start_time, event_name, ticket_type) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会展门票信息表'; -- ==================== 天气数据表 ==================== DROP TABLE IF EXISTS weather_data; CREATE TABLE IF NOT EXISTS weather_data ( id INT AUTO_INCREMENT PRIMARY KEY, city VARCHAR(50) NOT NULL COMMENT '城市名称', fx_date DATE NOT NULL COMMENT '预报日期', sunrise TIME COMMENT '日出时间', sunset TIME COMMENT '日落时间', moonrise TIME COMMENT '月升时间', moonset TIME COMMENT '月落时间', moon_phase VARCHAR(20) COMMENT '月相名称', moon_phase_icon VARCHAR(10) COMMENT '月相图标代码', temp_max INT COMMENT '最高温度', temp_min INT COMMENT '最低温度', icon_day VARCHAR(10) COMMENT '白天天气图标代码', text_day VARCHAR(20) COMMENT '白天天气描述', icon_night VARCHAR(10) COMMENT '夜间天气图标代码', text_night VARCHAR(20) COMMENT '夜间天气描述', wind360_day INT COMMENT '白天风向360角度', wind_dir_day VARCHAR(20) COMMENT '白天风向', wind_scale_day VARCHAR(10) COMMENT '白天风力等级', wind_speed_day INT COMMENT '白天风速 (km/h)', wind360_night INT COMMENT '夜间风向360角度', wind_dir_night VARCHAR(20) COMMENT '夜间风向', wind_scale_night VARCHAR(10) COMMENT '夜间风力等级', wind_speed_night INT COMMENT '夜间风速 (km/h)', precip DECIMAL(5,1) COMMENT '降水量 (mm)', uv_index INT COMMENT '紫外线指数', humidity INT COMMENT '相对湿度 (%)', pressure INT COMMENT '大气压强 (hPa)', vis INT COMMENT '能见度 (km)', cloud INT COMMENT '云量 (%)', update_time DATETIME COMMENT '数据更新时间', UNIQUE KEY unique_city_date (city, fx_date) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='天气数据表'; -- ==================== 商务用车表 ==================== DROP TABLE IF EXISTS car_rentals; CREATE TABLE car_rentals ( id INT AUTO_INCREMENT PRIMARY KEY COMMENT '主键,自增', company VARCHAR(50) NOT NULL COMMENT '商务用车公司名称', pickup_city VARCHAR(50) NOT NULL COMMENT '取车城市', return_city VARCHAR(50) NOT NULL COMMENT '还车城市', pickup_date DATE NOT NULL COMMENT '取车日期', car_type VARCHAR(20) NOT NULL COMMENT '车型分类:经济型/SUV/豪华型/MPV', car_model VARCHAR(50) NOT NULL COMMENT '具体车型', price_per_day DECIMAL(8,2) NOT NULL COMMENT '每日租金(元)', total_available INT NOT NULL DEFAULT 0 COMMENT '可用车辆数', transmission VARCHAR(20) NOT NULL COMMENT '变速箱:自动挡/手动挡', seats INT NOT NULL COMMENT '座位数', deposit DECIMAL(8,2) NOT NULL DEFAULT 0 COMMENT '押金(元)', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', UNIQUE KEY unique_car (company, car_model, pickup_date) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='商务用车信息表'; -- ==================== 保险表 ==================== DROP TABLE IF EXISTS insurances; CREATE TABLE insurances ( id INT AUTO_INCREMENT PRIMARY KEY COMMENT '主键,自增', insurance_type VARCHAR(20) NOT NULL COMMENT '保险类型:综合型/意外型/医疗型/境外型', name VARCHAR(100) NOT NULL COMMENT '保险产品名称', company VARCHAR(50) NOT NULL COMMENT '保险公司', coverage TEXT NOT NULL COMMENT '保障范围说明', price DECIMAL(8,2) NOT NULL COMMENT '价格(元/份)', duration_days INT NOT NULL COMMENT '保障天数', max_coverage DECIMAL(10,2) NOT NULL COMMENT '最高赔付金额(元)', medical_coverage DECIMAL(10,2) DEFAULT 0 COMMENT '医疗保障额度(元)', baggage_coverage DECIMAL(10,2) DEFAULT 0 COMMENT '行李保障额度(元)', flight_delay BOOLEAN DEFAULT FALSE COMMENT '是否包含航班延误', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', UNIQUE KEY unique_insurance (name) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='差旅保险信息表'; -- ==================== 用户偏好表 ==================== CREATE TABLE IF NOT EXISTS user_profiles ( profile_key VARCHAR(50) NOT NULL COMMENT '偏好键名', profile_value VARCHAR(200) NOT NULL COMMENT '偏好值', updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (profile_key) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户偏好'; -- ==================== 查询历史表 ==================== CREATE TABLE IF NOT EXISTS query_history ( id INT AUTO_INCREMENT PRIMARY KEY COMMENT '主键', intent_type VARCHAR(30) NOT NULL COMMENT '意图类型:weather/flight/train等', query_content TEXT NOT NULL COMMENT '查询内容JSON', query_time DATETIME NOT NULL COMMENT '查询时间', INDEX idx_time (query_time) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='查询历史'; -- ==================== 短期对话表 ==================== CREATE TABLE IF NOT EXISTS short_term_messages ( id INT AUTO_INCREMENT PRIMARY KEY COMMENT '主键', role VARCHAR(10) NOT NULL COMMENT '消息角色:user 或 assistant', content TEXT NOT NULL COMMENT '消息内容', message_time VARCHAR(10) NOT NULL COMMENT '时间戳 HH:MM:SS', message_order INT NOT NULL COMMENT '消息顺序号', updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='短期对话';