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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

-- ============================================
-- 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;