-- 个股每日交易数据表：大表，按“交易日期”按月分区（MySQL原生分区）
CREATE TABLE `t_stock_daily_trade` (
  `stock_code` VARCHAR(20) NOT NULL COMMENT '证券代码（关联t_stock_basic）',
  `trade_date` DATE NOT NULL COMMENT '交易日期',
  `open_price` DECIMAL(10,2) NULL COMMENT '开盘价（单位：元）',
  `close_price` DECIMAL(10,2) NOT NULL COMMENT '收盘价（单位：元）',
  `high_price` DECIMAL(10,2) NULL COMMENT '最高价（单位：元）',
  `low_price` DECIMAL(10,2) NULL COMMENT '最低价（单位：元）',
  `price_change_rate` DECIMAL(6,4) NULL COMMENT '当日涨跌幅（百分比）',
  `volume` BIGINT NULL COMMENT '成交量（单位：股）',
  `turnover` DECIMAL(20,2) NULL COMMENT '成交额（单位：万元）',
  `free_circulation_cap` DECIMAL(20,2) NULL COMMENT '自由流通市值（单位：万元）',
  `is_limit_up` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否涨停（1=是，0=否）',
  `is_limit_down` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否跌停（1=是，0=否）',
  `momentum_10d` DECIMAL(6,4) NULL COMMENT '10日动量（涨跌幅）',
  `momentum_20d` DECIMAL(6,4) NULL COMMENT '20日动量（涨跌幅）',
  `momentum_60d` DECIMAL(6,4) NULL COMMENT '60日动量（涨跌幅）',
  `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '数据创建时间',
  -- 复合主键：确保“个股代码+日期”唯一
  PRIMARY KEY (`stock_code`, `trade_date`),
  -- 外键：关联个股基础表，确保个股代码有效性
  FOREIGN KEY (`stock_code`) 
    REFERENCES `t_stock_basic` (`stock_code`)
    ON UPDATE RESTRICT ON DELETE RESTRICT,
  -- 索引：优化按日期查询所有个股交易数据的场景
  INDEX `idx_t_stock_daily_trade_date` (`trade_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 
-- 按“交易日期”按月分区（示例：2024年12月-2025年3月，后续可扩展）
PARTITION BY RANGE (TO_DAYS(`trade_date`)) (
  PARTITION `p202412` VALUES LESS THAN (TO_DAYS('2025-01-01')) COMMENT '2024年12月数据',
  PARTITION `p202501` VALUES LESS THAN (TO_DAYS('2025-02-01')) COMMENT '2025年1月数据',
  PARTITION `p202502` VALUES LESS THAN (TO_DAYS('2025-03-01')) COMMENT '2025年2月数据',
  PARTITION `p202503` VALUES LESS THAN (TO_DAYS('2025-04-01')) COMMENT '2025年3月数据'
) COMMENT='A股个股每日交易数据（按月分区）';