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.

389 lines
21 KiB

-- ============================================
-- A股智投分析平台 - 数据库初始化脚本
-- 在Docker容器启动时自动执行
-- 分区范围2024年1月 至 2026年12月
-- ============================================
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- 使用已创建的数据库
USE aguzhitou;
-- ============================================
-- 1. 市场指数表 (数据量小,无需分区)
-- ============================================
CREATE TABLE IF NOT EXISTS `market_indices` (
`id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(50) NOT NULL COMMENT '指数名称',
`code` VARCHAR(10) NOT NULL COMMENT '指数代码',
`current` DECIMAL(10, 2) NOT NULL DEFAULT 0 COMMENT '当前点数',
`change` DECIMAL(10, 2) NOT NULL DEFAULT 0 COMMENT '涨跌额',
`changePercent` DECIMAL(5, 2) NOT NULL DEFAULT 0 COMMENT '涨跌幅(%)',
`volume` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '成交量',
`turnover` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '成交额',
`sortOrder` INT NOT NULL DEFAULT 0 COMMENT '排序',
`updatedAt` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`createdAt` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY `uk_code` (`code`),
UNIQUE KEY `uk_name` (`name`),
KEY `idx_sort` (`sortOrder`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='市场指数表';
-- ============================================
-- 2. 版块表 (数据量小,无需分区)
-- ============================================
CREATE TABLE IF NOT EXISTS `sectors` (
`id` VARCHAR(36) NOT NULL PRIMARY KEY DEFAULT (UUID()),
`name` VARCHAR(50) NOT NULL COMMENT '版块名称',
`code` VARCHAR(10) NOT NULL COMMENT '版块代码',
`updatedAt` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`createdAt` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY `uk_code` (`code`),
UNIQUE KEY `uk_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='版块表';
-- ============================================
-- 3. 股票表 (数据量小,无需分区)
-- ============================================
CREATE TABLE IF NOT EXISTS `stocks` (
`id` VARCHAR(36) NOT NULL PRIMARY KEY DEFAULT (UUID()),
`code` VARCHAR(10) NOT NULL COMMENT '股票代码',
`name` VARCHAR(50) NOT NULL COMMENT '股票名称',
`sector_code` VARCHAR(10) DEFAULT NULL COMMENT '所属版块代码',
`market_cap` BIGINT UNSIGNED DEFAULT NULL COMMENT '总市值',
`pe` DECIMAL(8, 2) DEFAULT NULL COMMENT '市盈率',
`pb` DECIMAL(8, 2) DEFAULT NULL COMMENT '市净率',
`updatedAt` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`createdAt` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY `uk_code` (`code`),
KEY `idx_sector` (`sector_code`),
CONSTRAINT `fk_stock_sector` FOREIGN KEY (`sector_code`) REFERENCES `sectors` (`code`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='股票表';
-- ============================================
-- 4. 股票行情表 - 热数据 (最近7天高频查询)
-- ============================================
CREATE TABLE IF NOT EXISTS `stock_quotes_hot` (
`id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`stock_code` VARCHAR(10) NOT NULL COMMENT '股票代码',
`price` DECIMAL(10, 2) NOT NULL COMMENT '当前价格',
`open` DECIMAL(10, 2) NOT NULL COMMENT '开盘价',
`high` DECIMAL(10, 2) NOT NULL COMMENT '最高价',
`low` DECIMAL(10, 2) NOT NULL COMMENT '最低价',
`pre_close` DECIMAL(10, 2) NOT NULL COMMENT '昨收价',
`volume` BIGINT UNSIGNED NOT NULL COMMENT '成交量',
`turnover` BIGINT UNSIGNED NOT NULL COMMENT '成交额',
`change_percent` DECIMAL(5, 2) NOT NULL COMMENT '涨跌幅(%)',
`turnover_rate` DECIMAL(5, 2) DEFAULT NULL COMMENT '换手率(%)',
`amplitude` DECIMAL(5, 2) DEFAULT NULL COMMENT '振幅(%)',
`quote_time` DATETIME NOT NULL COMMENT '行情时间',
KEY `idx_stock_time` (`stock_code`, `quote_time`),
KEY `idx_time` (`quote_time`),
KEY `idx_stock` (`stock_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='股票行情热数据表(最近7天)';
-- ============================================
-- 5. 股票行情表 - 历史数据 (2024-01 至 2026-12)
-- ============================================
CREATE TABLE IF NOT EXISTS `stock_quotes_history` (
`id` BIGINT UNSIGNED AUTO_INCREMENT,
`stock_code` VARCHAR(10) NOT NULL COMMENT '股票代码',
`price` DECIMAL(10, 2) NOT NULL COMMENT '当前价格',
`open` DECIMAL(10, 2) NOT NULL COMMENT '开盘价',
`high` DECIMAL(10, 2) NOT NULL COMMENT '最高价',
`low` DECIMAL(10, 2) NOT NULL COMMENT '最低价',
`pre_close` DECIMAL(10, 2) NOT NULL COMMENT '昨收价',
`volume` BIGINT UNSIGNED NOT NULL COMMENT '成交量',
`turnover` BIGINT UNSIGNED NOT NULL COMMENT '成交额',
`change_percent` DECIMAL(5, 2) NOT NULL COMMENT '涨跌幅(%)',
`turnover_rate` DECIMAL(5, 2) DEFAULT NULL COMMENT '换手率(%)',
`amplitude` DECIMAL(5, 2) DEFAULT NULL COMMENT '振幅(%)',
`quote_time` DATETIME NOT NULL COMMENT '行情时间',
PRIMARY KEY (`id`, `quote_time`),
KEY `idx_stock_time` (`stock_code`, `quote_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='股票行情历史表'
PARTITION BY RANGE COLUMNS(`quote_time`) (
PARTITION `p_2024_01` VALUES LESS THAN ('2024-02-01'),
PARTITION `p_2024_02` VALUES LESS THAN ('2024-03-01'),
PARTITION `p_2024_03` VALUES LESS THAN ('2024-04-01'),
PARTITION `p_2024_04` VALUES LESS THAN ('2024-05-01'),
PARTITION `p_2024_05` VALUES LESS THAN ('2024-06-01'),
PARTITION `p_2024_06` VALUES LESS THAN ('2024-07-01'),
PARTITION `p_2024_07` VALUES LESS THAN ('2024-08-01'),
PARTITION `p_2024_08` VALUES LESS THAN ('2024-09-01'),
PARTITION `p_2024_09` VALUES LESS THAN ('2024-10-01'),
PARTITION `p_2024_10` VALUES LESS THAN ('2024-11-01'),
PARTITION `p_2024_11` VALUES LESS THAN ('2024-12-01'),
PARTITION `p_2024_12` VALUES LESS THAN ('2025-01-01'),
PARTITION `p_2025_01` VALUES LESS THAN ('2025-02-01'),
PARTITION `p_2025_02` VALUES LESS THAN ('2025-03-01'),
PARTITION `p_2025_03` VALUES LESS THAN ('2025-04-01'),
PARTITION `p_2025_04` VALUES LESS THAN ('2025-05-01'),
PARTITION `p_2025_05` VALUES LESS THAN ('2025-06-01'),
PARTITION `p_2025_06` VALUES LESS THAN ('2025-07-01'),
PARTITION `p_2025_07` VALUES LESS THAN ('2025-08-01'),
PARTITION `p_2025_08` VALUES LESS THAN ('2025-09-01'),
PARTITION `p_2025_09` VALUES LESS THAN ('2025-10-01'),
PARTITION `p_2025_10` VALUES LESS THAN ('2025-11-01'),
PARTITION `p_2025_11` VALUES LESS THAN ('2025-12-01'),
PARTITION `p_2025_12` VALUES LESS THAN ('2026-01-01'),
PARTITION `p_2026_01` VALUES LESS THAN ('2026-02-01'),
PARTITION `p_2026_02` VALUES LESS THAN ('2026-03-01'),
PARTITION `p_2026_03` VALUES LESS THAN ('2026-04-01'),
PARTITION `p_2026_04` VALUES LESS THAN ('2026-05-01'),
PARTITION `p_2026_05` VALUES LESS THAN ('2026-06-01'),
PARTITION `p_2026_06` VALUES LESS THAN ('2026-07-01'),
PARTITION `p_2026_07` VALUES LESS THAN ('2026-08-01'),
PARTITION `p_2026_08` VALUES LESS THAN ('2026-09-01'),
PARTITION `p_2026_09` VALUES LESS THAN ('2026-10-01'),
PARTITION `p_2026_10` VALUES LESS THAN ('2026-11-01'),
PARTITION `p_2026_11` VALUES LESS THAN ('2026-12-01'),
PARTITION `p_2026_12` VALUES LESS THAN ('2027-01-01'),
PARTITION `p_future` VALUES LESS THAN (MAXVALUE)
);
-- ============================================
-- 6. 股票K线表
-- ============================================
CREATE TABLE IF NOT EXISTS `stock_klines` (
`id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`stock_code` VARCHAR(10) NOT NULL COMMENT '股票代码',
`period` VARCHAR(10) NOT NULL COMMENT '周期:day/week/month',
`date` DATE NOT NULL COMMENT '日期',
`open` DECIMAL(10, 2) NOT NULL COMMENT '开盘价',
`high` DECIMAL(10, 2) NOT NULL COMMENT '最高价',
`low` DECIMAL(10, 2) NOT NULL COMMENT '最低价',
`close` DECIMAL(10, 2) NOT NULL COMMENT '收盘价',
`volume` BIGINT UNSIGNED NOT NULL COMMENT '成交量',
`ma5` DECIMAL(10, 2) DEFAULT NULL COMMENT 'MA5',
`ma10` DECIMAL(10, 2) DEFAULT NULL COMMENT 'MA10',
`ma20` DECIMAL(10, 2) DEFAULT NULL COMMENT 'MA20',
`ma30` DECIMAL(10, 2) DEFAULT NULL COMMENT 'MA30',
`ma60` DECIMAL(10, 2) DEFAULT NULL COMMENT 'MA60',
UNIQUE KEY `uk_stock_period_date` (`stock_code`, `period`, `date`),
KEY `idx_stock` (`stock_code`),
KEY `idx_date` (`date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='股票K线表';
-- ============================================
-- 7. 版块行情表 (2024-01 至 2026-12)
-- ============================================
CREATE TABLE IF NOT EXISTS `sector_quotes` (
`id` INT UNSIGNED AUTO_INCREMENT,
`sector_code` VARCHAR(10) NOT NULL COMMENT '版块代码',
`current` DECIMAL(10, 2) NOT NULL COMMENT '当前点数',
`change` DECIMAL(10, 2) NOT NULL COMMENT '涨跌额',
`changePercent` DECIMAL(5, 2) NOT NULL COMMENT '涨跌幅(%)',
`volume` BIGINT UNSIGNED NOT NULL COMMENT '成交量',
`turnover` BIGINT UNSIGNED NOT NULL COMMENT '成交额',
`momentumScore` DECIMAL(5, 2) NOT NULL DEFAULT 50 COMMENT '动量分数',
`rank` INT NOT NULL DEFAULT 0 COMMENT '当前排名',
`previous_rank` INT NOT NULL DEFAULT 0 COMMENT '昨日排名',
`quote_time` DATETIME NOT NULL COMMENT '行情时间',
PRIMARY KEY (`id`, `quote_time`),
KEY `idx_sector_time` (`sector_code`, `quote_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='版块行情表'
PARTITION BY RANGE COLUMNS(`quote_time`) (
PARTITION `p_sector_2024_01` VALUES LESS THAN ('2024-02-01'),
PARTITION `p_sector_2024_02` VALUES LESS THAN ('2024-03-01'),
PARTITION `p_sector_2024_03` VALUES LESS THAN ('2024-04-01'),
PARTITION `p_sector_2024_04` VALUES LESS THAN ('2024-05-01'),
PARTITION `p_sector_2024_05` VALUES LESS THAN ('2024-06-01'),
PARTITION `p_sector_2024_06` VALUES LESS THAN ('2024-07-01'),
PARTITION `p_sector_2024_07` VALUES LESS THAN ('2024-08-01'),
PARTITION `p_sector_2024_08` VALUES LESS THAN ('2024-09-01'),
PARTITION `p_sector_2024_09` VALUES LESS THAN ('2024-10-01'),
PARTITION `p_sector_2024_10` VALUES LESS THAN ('2024-11-01'),
PARTITION `p_sector_2024_11` VALUES LESS THAN ('2024-12-01'),
PARTITION `p_sector_2024_12` VALUES LESS THAN ('2025-01-01'),
PARTITION `p_sector_2025_01` VALUES LESS THAN ('2025-02-01'),
PARTITION `p_sector_2025_02` VALUES LESS THAN ('2025-03-01'),
PARTITION `p_sector_2025_03` VALUES LESS THAN ('2025-04-01'),
PARTITION `p_sector_2025_04` VALUES LESS THAN ('2025-05-01'),
PARTITION `p_sector_2025_05` VALUES LESS THAN ('2025-06-01'),
PARTITION `p_sector_2025_06` VALUES LESS THAN ('2025-07-01'),
PARTITION `p_sector_2025_07` VALUES LESS THAN ('2025-08-01'),
PARTITION `p_sector_2025_08` VALUES LESS THAN ('2025-09-01'),
PARTITION `p_sector_2025_09` VALUES LESS THAN ('2025-10-01'),
PARTITION `p_sector_2025_10` VALUES LESS THAN ('2025-11-01'),
PARTITION `p_sector_2025_11` VALUES LESS THAN ('2025-12-01'),
PARTITION `p_sector_2025_12` VALUES LESS THAN ('2026-01-01'),
PARTITION `p_sector_2026_01` VALUES LESS THAN ('2026-02-01'),
PARTITION `p_sector_2026_02` VALUES LESS THAN ('2026-03-01'),
PARTITION `p_sector_2026_03` VALUES LESS THAN ('2026-04-01'),
PARTITION `p_sector_2026_04` VALUES LESS THAN ('2026-05-01'),
PARTITION `p_sector_2026_05` VALUES LESS THAN ('2026-06-01'),
PARTITION `p_sector_2026_06` VALUES LESS THAN ('2026-07-01'),
PARTITION `p_sector_2026_07` VALUES LESS THAN ('2026-08-01'),
PARTITION `p_sector_2026_08` VALUES LESS THAN ('2026-09-01'),
PARTITION `p_sector_2026_09` VALUES LESS THAN ('2026-10-01'),
PARTITION `p_sector_2026_10` VALUES LESS THAN ('2026-11-01'),
PARTITION `p_sector_2026_11` VALUES LESS THAN ('2026-12-01'),
PARTITION `p_sector_2026_12` VALUES LESS THAN ('2027-01-01'),
PARTITION `p_sector_future` VALUES LESS THAN (MAXVALUE)
);
-- ============================================
-- 8. 版块K线表
-- ============================================
CREATE TABLE IF NOT EXISTS `sector_klines` (
`id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`sector_code` VARCHAR(10) NOT NULL COMMENT '版块代码',
`period` VARCHAR(10) NOT NULL COMMENT '周期:day/week/month',
`date` DATE NOT NULL COMMENT '日期',
`open` DECIMAL(10, 2) NOT NULL COMMENT '开盘价',
`high` DECIMAL(10, 2) NOT NULL COMMENT '最高价',
`low` DECIMAL(10, 2) NOT NULL COMMENT '最低价',
`close` DECIMAL(10, 2) NOT NULL COMMENT '收盘价',
`volume` BIGINT UNSIGNED NOT NULL COMMENT '成交量',
UNIQUE KEY `uk_sector_period_date` (`sector_code`, `period`, `date`),
KEY `idx_sector` (`sector_code`),
KEY `idx_date` (`date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='版块K线表';
-- ============================================
-- 9. 用户表
-- ============================================
CREATE TABLE IF NOT EXISTS `users` (
`id` VARCHAR(36) NOT NULL PRIMARY KEY DEFAULT (UUID()),
`username` VARCHAR(20) NOT NULL COMMENT '用户名',
`email` VARCHAR(100) NOT NULL COMMENT '邮箱',
`password` VARCHAR(255) NOT NULL COMMENT '加密密码',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY `uk_username` (`username`),
UNIQUE KEY `uk_email` (`email`),
KEY `idx_created` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
-- ============================================
-- 10. 用户自选股表
-- ============================================
CREATE TABLE IF NOT EXISTS `user_favorites` (
`id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`user_id` VARCHAR(36) NOT NULL COMMENT '用户ID',
`stock_code` VARCHAR(10) NOT NULL COMMENT '股票代码',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY `uk_user_stock` (`user_id`, `stock_code`),
KEY `idx_user` (`user_id`),
KEY `idx_stock` (`stock_code`),
CONSTRAINT `fk_fav_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户自选股表';
-- ============================================
-- 11. 新高新低股票记录表 (2024-01 至 2026-12)
-- ============================================
CREATE TABLE IF NOT EXISTS `high_low_stocks` (
`id` INT UNSIGNED AUTO_INCREMENT,
`stock_code` VARCHAR(10) NOT NULL COMMENT '股票代码',
`type` VARCHAR(10) NOT NULL COMMENT '类型:high/low',
`price` DECIMAL(10, 2) NOT NULL COMMENT '价格',
`date` DATE NOT NULL COMMENT '日期',
`days_to_highlow` INT NOT NULL COMMENT '距离新高/低天数',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`, `date`),
KEY `idx_stock` (`stock_code`),
KEY `idx_type_date` (`type`, `date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='新高新低股票记录表'
PARTITION BY RANGE COLUMNS(`date`) (
PARTITION `p_hl_2024_01` VALUES LESS THAN ('2024-02-01'),
PARTITION `p_hl_2024_02` VALUES LESS THAN ('2024-03-01'),
PARTITION `p_hl_2024_03` VALUES LESS THAN ('2024-04-01'),
PARTITION `p_hl_2024_04` VALUES LESS THAN ('2024-05-01'),
PARTITION `p_hl_2024_05` VALUES LESS THAN ('2024-06-01'),
PARTITION `p_hl_2024_06` VALUES LESS THAN ('2024-07-01'),
PARTITION `p_hl_2024_07` VALUES LESS THAN ('2024-08-01'),
PARTITION `p_hl_2024_08` VALUES LESS THAN ('2024-09-01'),
PARTITION `p_hl_2024_09` VALUES LESS THAN ('2024-10-01'),
PARTITION `p_hl_2024_10` VALUES LESS THAN ('2024-11-01'),
PARTITION `p_hl_2024_11` VALUES LESS THAN ('2024-12-01'),
PARTITION `p_hl_2024_12` VALUES LESS THAN ('2025-01-01'),
PARTITION `p_hl_2025_01` VALUES LESS THAN ('2025-02-01'),
PARTITION `p_hl_2025_02` VALUES LESS THAN ('2025-03-01'),
PARTITION `p_hl_2025_03` VALUES LESS THAN ('2025-04-01'),
PARTITION `p_hl_2025_04` VALUES LESS THAN ('2025-05-01'),
PARTITION `p_hl_2025_05` VALUES LESS THAN ('2025-06-01'),
PARTITION `p_hl_2025_06` VALUES LESS THAN ('2025-07-01'),
PARTITION `p_hl_2025_07` VALUES LESS THAN ('2025-08-01'),
PARTITION `p_hl_2025_08` VALUES LESS THAN ('2025-09-01'),
PARTITION `p_hl_2025_09` VALUES LESS THAN ('2025-10-01'),
PARTITION `p_hl_2025_10` VALUES LESS THAN ('2025-11-01'),
PARTITION `p_hl_2025_11` VALUES LESS THAN ('2025-12-01'),
PARTITION `p_hl_2025_12` VALUES LESS THAN ('2026-01-01'),
PARTITION `p_hl_2026_01` VALUES LESS THAN ('2026-02-01'),
PARTITION `p_hl_2026_02` VALUES LESS THAN ('2026-03-01'),
PARTITION `p_hl_2026_03` VALUES LESS THAN ('2026-04-01'),
PARTITION `p_hl_2026_04` VALUES LESS THAN ('2026-05-01'),
PARTITION `p_hl_2026_05` VALUES LESS THAN ('2026-06-01'),
PARTITION `p_hl_2026_06` VALUES LESS THAN ('2026-07-01'),
PARTITION `p_hl_2026_07` VALUES LESS THAN ('2026-08-01'),
PARTITION `p_hl_2026_08` VALUES LESS THAN ('2026-09-01'),
PARTITION `p_hl_2026_09` VALUES LESS THAN ('2026-10-01'),
PARTITION `p_hl_2026_10` VALUES LESS THAN ('2026-11-01'),
PARTITION `p_hl_2026_11` VALUES LESS THAN ('2026-12-01'),
PARTITION `p_hl_2026_12` VALUES LESS THAN ('2027-01-01'),
PARTITION `p_hl_future` VALUES LESS THAN (MAXVALUE)
);
-- ============================================
-- 12. 动量股票推荐表 (2024-01 至 2026-12)
-- ============================================
CREATE TABLE IF NOT EXISTS `momentum_stocks` (
`id` INT UNSIGNED AUTO_INCREMENT,
`stock_code` VARCHAR(10) NOT NULL COMMENT '股票代码',
`momentum_score` DECIMAL(5, 2) NOT NULL COMMENT '动量分数',
`tags` VARCHAR(500) DEFAULT NULL COMMENT '标签JSON数组',
`volume_ratio` DECIMAL(5, 2) NOT NULL COMMENT '量比',
`break_through` BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否突破',
`date` DATE NOT NULL COMMENT '日期',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`, `date`),
KEY `idx_stock` (`stock_code`),
KEY `idx_date_score` (`date`, `momentum_score`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='动量股票推荐表'
PARTITION BY RANGE COLUMNS(`date`) (
PARTITION `p_ms_2024_01` VALUES LESS THAN ('2024-02-01'),
PARTITION `p_ms_2024_02` VALUES LESS THAN ('2024-03-01'),
PARTITION `p_ms_2024_03` VALUES LESS THAN ('2024-04-01'),
PARTITION `p_ms_2024_04` VALUES LESS THAN ('2024-05-01'),
PARTITION `p_ms_2024_05` VALUES LESS THAN ('2024-06-01'),
PARTITION `p_ms_2024_06` VALUES LESS THAN ('2024-07-01'),
PARTITION `p_ms_2024_07` VALUES LESS THAN ('2024-08-01'),
PARTITION `p_ms_2024_08` VALUES LESS THAN ('2024-09-01'),
PARTITION `p_ms_2024_09` VALUES LESS THAN ('2024-10-01'),
PARTITION `p_ms_2024_10` VALUES LESS THAN ('2024-11-01'),
PARTITION `p_ms_2024_11` VALUES LESS THAN ('2024-12-01'),
PARTITION `p_ms_2024_12` VALUES LESS THAN ('2025-01-01'),
PARTITION `p_ms_2025_01` VALUES LESS THAN ('2025-02-01'),
PARTITION `p_ms_2025_02` VALUES LESS THAN ('2025-03-01'),
PARTITION `p_ms_2025_03` VALUES LESS THAN ('2025-04-01'),
PARTITION `p_ms_2025_04` VALUES LESS THAN ('2025-05-01'),
PARTITION `p_ms_2025_05` VALUES LESS THAN ('2025-06-01'),
PARTITION `p_ms_2025_06` VALUES LESS THAN ('2025-07-01'),
PARTITION `p_ms_2025_07` VALUES LESS THAN ('2025-08-01'),
PARTITION `p_ms_2025_08` VALUES LESS THAN ('2025-09-01'),
PARTITION `p_ms_2025_09` VALUES LESS THAN ('2025-10-01'),
PARTITION `p_ms_2025_10` VALUES LESS THAN ('2025-11-01'),
PARTITION `p_ms_2025_11` VALUES LESS THAN ('2025-12-01'),
PARTITION `p_ms_2025_12` VALUES LESS THAN ('2026-01-01'),
PARTITION `p_ms_2026_01` VALUES LESS THAN ('2026-02-01'),
PARTITION `p_ms_2026_02` VALUES LESS THAN ('2026-03-01'),
PARTITION `p_ms_2026_03` VALUES LESS THAN ('2026-04-01'),
PARTITION `p_ms_2026_04` VALUES LESS THAN ('2026-05-01'),
PARTITION `p_ms_2026_05` VALUES LESS THAN ('2026-06-01'),
PARTITION `p_ms_2026_06` VALUES LESS THAN ('2026-07-01'),
PARTITION `p_ms_2026_07` VALUES LESS THAN ('2026-08-01'),
PARTITION `p_ms_2026_08` VALUES LESS THAN ('2026-09-01'),
PARTITION `p_ms_2026_09` VALUES LESS THAN ('2026-10-01'),
PARTITION `p_ms_2026_10` VALUES LESS THAN ('2026-11-01'),
PARTITION `p_ms_2026_11` VALUES LESS THAN ('2026-12-01'),
PARTITION `p_ms_2026_12` VALUES LESS THAN ('2027-01-01'),
PARTITION `p_ms_future` VALUES LESS THAN (MAXVALUE)
);
SET FOREIGN_KEY_CHECKS = 1;
-- 创建完成标记
SELECT 'Database initialization completed successfully' AS status;