|
|
|
|
|
-- Stock-System 优化后的数据库表结构
|
|
|
|
|
|
|
|
|
|
|
|
-- 设置字符集
|
|
|
|
|
|
SET NAMES utf8mb4;
|
|
|
|
|
|
SET FOREIGN_KEY_CHECKS = 0;
|
|
|
|
|
|
|
|
|
|
|
|
-- 1. 基础数据表
|
|
|
|
|
|
|
|
|
|
|
|
-- 1.1 行业表
|
|
|
|
|
|
DROP TABLE IF EXISTS `new_stock_industry`;
|
|
|
|
|
|
CREATE TABLE `new_stock_industry` (
|
|
|
|
|
|
`industry_id` INT NOT NULL AUTO_INCREMENT COMMENT '行业ID',
|
|
|
|
|
|
`industry_level` TINYINT NOT NULL COMMENT '行业级别(1-3)',
|
|
|
|
|
|
`industry_code` VARCHAR(20) NOT NULL COMMENT '行业代码',
|
|
|
|
|
|
`industry_name` VARCHAR(50) NOT NULL COMMENT '行业名称',
|
|
|
|
|
|
`parent_code` VARCHAR(20) NULL COMMENT '父行业代码',
|
|
|
|
|
|
PRIMARY KEY (`industry_id`) USING BTREE,
|
|
|
|
|
|
UNIQUE INDEX `idx_industry_code` (`industry_code`) USING BTREE,
|
|
|
|
|
|
INDEX `idx_industry_level` (`industry_level`) USING BTREE,
|
|
|
|
|
|
INDEX `idx_parent_code` (`parent_code`) USING BTREE
|
|
|
|
|
|
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '行业分类表' ROW_FORMAT = Dynamic;
|
|
|
|
|
|
|
|
|
|
|
|
-- 1.2 股票基础信息表
|
|
|
|
|
|
DROP TABLE IF EXISTS `new_stock_basic`;
|
|
|
|
|
|
CREATE TABLE `new_stock_basic` (
|
|
|
|
|
|
`id` INT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
|
|
|
`code` VARCHAR(10) NOT NULL COMMENT '股票代码',
|
|
|
|
|
|
`name` VARCHAR(20) NOT NULL COMMENT '股票名称',
|
|
|
|
|
|
`industry_id` INT NULL COMMENT '所属行业ID(关联new_stock_industry)',
|
|
|
|
|
|
`list_date` DATE NULL COMMENT '首发上市日期',
|
|
|
|
|
|
`market_type` VARCHAR(10) NULL COMMENT '市场类型(SZ/SH)',
|
|
|
|
|
|
`status` TINYINT DEFAULT 1 COMMENT '状态(1-正常,0-暂停上市)',
|
|
|
|
|
|
PRIMARY KEY (`id`) USING BTREE,
|
|
|
|
|
|
UNIQUE INDEX `idx_code` (`code`) USING BTREE,
|
|
|
|
|
|
INDEX `idx_industry_id` (`industry_id`) USING BTREE,
|
|
|
|
|
|
INDEX `idx_list_date` (`list_date`) USING BTREE,
|
|
|
|
|
|
INDEX `idx_market_type` (`market_type`) USING BTREE,
|
|
|
|
|
|
CONSTRAINT `fk_stock_basic_industry` FOREIGN KEY (`industry_id`) REFERENCES `new_stock_industry` (`industry_id`) ON DELETE SET NULL ON UPDATE CASCADE
|
|
|
|
|
|
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '股票基础信息表' ROW_FORMAT = Dynamic;
|
|
|
|
|
|
|
|
|
|
|
|
-- 2. 财务数据表
|
|
|
|
|
|
|
|
|
|
|
|
-- 2.1 财务数据表
|
|
|
|
|
|
DROP TABLE IF EXISTS `new_stock_financial`;
|
|
|
|
|
|
CREATE TABLE `new_stock_financial` (
|
|
|
|
|
|
`id` INT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
|
|
|
`code` VARCHAR(10) NOT NULL COMMENT '股票代码(关联new_stock_basic)',
|
|
|
|
|
|
`period` DATE NOT NULL COMMENT '报告期',
|
|
|
|
|
|
`net_profit_yoy` DECIMAL(15,4) NULL COMMENT '净利润同比增长率',
|
|
|
|
|
|
`net_profit_qoq` DECIMAL(15,4) NULL COMMENT '净利润环比增长率',
|
|
|
|
|
|
`roe` DECIMAL(10,4) NULL COMMENT '净资产收益率ROE',
|
|
|
|
|
|
`eps` DECIMAL(10,4) NULL COMMENT '每股收益EPS',
|
|
|
|
|
|
`net_profit` DECIMAL(20,4) NULL COMMENT '净利润',
|
|
|
|
|
|
`basic_eps` DECIMAL(10,4) NULL COMMENT '基本每股收益',
|
|
|
|
|
|
`bps` DECIMAL(10,4) NULL COMMENT '每股净资产BPS',
|
|
|
|
|
|
`total_assets` DECIMAL(20,4) NULL COMMENT '总资产',
|
|
|
|
|
|
`total_liabilities` DECIMAL(20,4) NULL COMMENT '总负债',
|
|
|
|
|
|
`operating_income` DECIMAL(20,4) NULL COMMENT '营业收入',
|
|
|
|
|
|
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
|
|
|
PRIMARY KEY (`id`) USING BTREE,
|
|
|
|
|
|
UNIQUE INDEX `idx_code_period` (`code`, `period`) USING BTREE,
|
|
|
|
|
|
INDEX `idx_period` (`period`) USING BTREE,
|
|
|
|
|
|
INDEX `idx_roe` (`roe`) USING BTREE,
|
|
|
|
|
|
INDEX `idx_eps` (`eps`) USING BTREE,
|
|
|
|
|
|
CONSTRAINT `fk_stock_financial_basic` FOREIGN KEY (`code`) REFERENCES `new_stock_basic` (`code`) ON DELETE CASCADE ON UPDATE CASCADE
|
|
|
|
|
|
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '股票财务数据表' ROW_FORMAT = Dynamic;
|
|
|
|
|
|
|
|
|
|
|
|
-- 3. 指数数据表
|
|
|
|
|
|
|
|
|
|
|
|
-- 3.1 指数数据表
|
|
|
|
|
|
DROP TABLE IF EXISTS `new_stock_index`;
|
|
|
|
|
|
CREATE TABLE `new_stock_index` (
|
|
|
|
|
|
`id` INT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
|
|
|
`code` VARCHAR(10) NOT NULL COMMENT '指数代码',
|
|
|
|
|
|
`name` VARCHAR(20) NOT NULL COMMENT '指数名称',
|
|
|
|
|
|
`trade_date` DATE NOT NULL COMMENT '交易日期',
|
|
|
|
|
|
`open` DECIMAL(10,2) NULL COMMENT '开盘价',
|
|
|
|
|
|
`close` DECIMAL(10,2) NULL COMMENT '收盘价',
|
|
|
|
|
|
`high` DECIMAL(10,2) NULL COMMENT '最高价',
|
|
|
|
|
|
`low` DECIMAL(10,2) NULL COMMENT '最低价',
|
|
|
|
|
|
`change_rate` DECIMAL(8,4) NULL COMMENT '涨跌幅',
|
|
|
|
|
|
`volume` BIGINT NULL COMMENT '成交量',
|
|
|
|
|
|
`amount` DECIMAL(20,2) NULL COMMENT '成交额',
|
|
|
|
|
|
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
|
|
|
PRIMARY KEY (`id`) USING BTREE,
|
|
|
|
|
|
UNIQUE INDEX `idx_code_trade_date` (`code`, `trade_date`) USING BTREE,
|
|
|
|
|
|
INDEX `idx_trade_date` (`trade_date`) USING BTREE,
|
|
|
|
|
|
INDEX `idx_change_rate` (`change_rate`) USING BTREE
|
|
|
|
|
|
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '股票指数数据表' ROW_FORMAT = Dynamic;
|
|
|
|
|
|
|
|
|
|
|
|
-- 4. 交易数据表
|
|
|
|
|
|
|
|
|
|
|
|
-- 4.1 交易数据表
|
|
|
|
|
|
DROP TABLE IF EXISTS `new_stocks`;
|
|
|
|
|
|
CREATE TABLE `new_stocks` (
|
|
|
|
|
|
`id` INT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
|
|
|
`code` VARCHAR(10) NOT NULL COMMENT '股票代码(关联new_stock_basic)',
|
|
|
|
|
|
`trade_date` DATE NOT NULL COMMENT '交易日期',
|
|
|
|
|
|
`open` DECIMAL(10,2) NULL COMMENT '开盘价',
|
|
|
|
|
|
`close` DECIMAL(10,2) NULL COMMENT '收盘价',
|
|
|
|
|
|
`change_rate` DECIMAL(8,4) NULL COMMENT '当日涨跌幅',
|
|
|
|
|
|
`trade_days` INT NULL COMMENT '可交易日数',
|
|
|
|
|
|
`volume` BIGINT NULL COMMENT '成交量',
|
|
|
|
|
|
`amount` DECIMAL(20,2) NULL COMMENT '成交额',
|
|
|
|
|
|
`change_rate_10` DECIMAL(8,4) NULL COMMENT '10日区间涨跌幅',
|
|
|
|
|
|
`change_rate_20` DECIMAL(8,4) NULL COMMENT '20日区间涨跌幅',
|
|
|
|
|
|
`change_rate_60` DECIMAL(8,4) NULL COMMENT '60日区间涨跌幅',
|
|
|
|
|
|
`avg_volume_20` DECIMAL(20,2) NULL COMMENT '20日区间平均成交量',
|
|
|
|
|
|
`free_float_market_value` DECIMAL(20,2) NULL COMMENT '自由流通市值',
|
|
|
|
|
|
`total_market_value` DECIMAL(20,2) NULL COMMENT '总市值',
|
|
|
|
|
|
`agencies_hold` DECIMAL(10,4) NULL COMMENT '机构持仓合计',
|
|
|
|
|
|
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
|
|
|
PRIMARY KEY (`id`) USING BTREE,
|
|
|
|
|
|
UNIQUE INDEX `idx_code_trade_date` (`code`, `trade_date`) USING BTREE,
|
|
|
|
|
|
INDEX `idx_trade_date` (`trade_date`) USING BTREE,
|
|
|
|
|
|
INDEX `idx_change_rate` (`change_rate`) USING BTREE,
|
|
|
|
|
|
INDEX `idx_total_market_value` (`total_market_value`) USING BTREE,
|
|
|
|
|
|
CONSTRAINT `fk_stocks_basic` FOREIGN KEY (`code`) REFERENCES `new_stock_basic` (`code`) ON DELETE CASCADE ON UPDATE CASCADE
|
|
|
|
|
|
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '股票每日交易数据表' ROW_FORMAT = Dynamic;
|
|
|
|
|
|
|
|
|
|
|
|
-- 5. 趋势数据表
|
|
|
|
|
|
|
|
|
|
|
|
-- 5.1 趋势数据表
|
|
|
|
|
|
DROP TABLE IF EXISTS `new_stock_trend`;
|
|
|
|
|
|
CREATE TABLE `new_stock_trend` (
|
|
|
|
|
|
`id` INT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
|
|
|
`code` VARCHAR(10) NOT NULL COMMENT '股票代码(关联new_stock_basic)',
|
|
|
|
|
|
`trade_date` DATE NOT NULL COMMENT '交易日期',
|
|
|
|
|
|
`ma5` DECIMAL(10,2) NULL COMMENT '5日均线',
|
|
|
|
|
|
`ma10` DECIMAL(10,2) NULL COMMENT '10日均线',
|
|
|
|
|
|
`ma20` DECIMAL(10,2) NULL COMMENT '20日均线',
|
|
|
|
|
|
`ma60` DECIMAL(10,2) NULL COMMENT '60日均线',
|
|
|
|
|
|
`macd` DECIMAL(8,4) NULL COMMENT 'MACD值',
|
|
|
|
|
|
`kdj_k` DECIMAL(8,4) NULL COMMENT 'KDJ-K值',
|
|
|
|
|
|
`kdj_d` DECIMAL(8,4) NULL COMMENT 'KDJ-D值',
|
|
|
|
|
|
`kdj_j` DECIMAL(8,4) NULL COMMENT 'KDJ-J值',
|
|
|
|
|
|
`rsi` DECIMAL(8,4) NULL COMMENT 'RSI值',
|
|
|
|
|
|
`volume_ratio` DECIMAL(8,4) NULL COMMENT '量比',
|
|
|
|
|
|
`turnover_rate` DECIMAL(8,4) NULL COMMENT '换手率',
|
|
|
|
|
|
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
|
|
|
PRIMARY KEY (`id`) USING BTREE,
|
|
|
|
|
|
UNIQUE INDEX `idx_code_trade_date` (`code`, `trade_date`) USING BTREE,
|
|
|
|
|
|
INDEX `idx_trade_date` (`trade_date`) USING BTREE,
|
|
|
|
|
|
CONSTRAINT `fk_stock_trend_basic` FOREIGN KEY (`code`) REFERENCES `new_stock_basic` (`code`) ON DELETE CASCADE ON UPDATE CASCADE
|
|
|
|
|
|
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '股票趋势数据表' ROW_FORMAT = Dynamic;
|
|
|
|
|
|
|
|
|
|
|
|
-- 5.2 涨跌停数据表
|
|
|
|
|
|
DROP TABLE IF EXISTS `new_stock_limit`;
|
|
|
|
|
|
CREATE TABLE `new_stock_limit` (
|
|
|
|
|
|
`id` INT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
|
|
|
`code` VARCHAR(10) NOT NULL COMMENT '股票代码(关联new_stock_basic)',
|
|
|
|
|
|
`trade_date` DATE NOT NULL COMMENT '交易日期',
|
|
|
|
|
|
`limit_type` TINYINT NOT NULL COMMENT '涨跌停类型(1-涨停,-1-跌停)',
|
|
|
|
|
|
`limit_price` DECIMAL(10,2) NULL COMMENT '涨跌停价格',
|
|
|
|
|
|
`open_price` DECIMAL(10,2) NULL COMMENT '开盘价',
|
|
|
|
|
|
`close_price` DECIMAL(10,2) NULL COMMENT '收盘价',
|
|
|
|
|
|
`volume` BIGINT NULL COMMENT '成交量',
|
|
|
|
|
|
`amount` DECIMAL(20,2) NULL COMMENT '成交额',
|
|
|
|
|
|
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
|
|
|
PRIMARY KEY (`id`) USING BTREE,
|
|
|
|
|
|
UNIQUE INDEX `idx_code_trade_date` (`code`, `trade_date`) USING BTREE,
|
|
|
|
|
|
INDEX `idx_trade_date` (`trade_date`) USING BTREE,
|
|
|
|
|
|
INDEX `idx_limit_type` (`limit_type`) USING BTREE,
|
|
|
|
|
|
CONSTRAINT `fk_stock_limit_basic` FOREIGN KEY (`code`) REFERENCES `new_stock_basic` (`code`) ON DELETE CASCADE ON UPDATE CASCADE
|
|
|
|
|
|
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '股票涨跌停数据表' ROW_FORMAT = Dynamic;
|
|
|
|
|
|
|
|
|
|
|
|
-- 5.3 创新高/新低数据表
|
|
|
|
|
|
DROP TABLE IF EXISTS `new_stock_new_record`;
|
|
|
|
|
|
CREATE TABLE `new_stock_new_record` (
|
|
|
|
|
|
`id` INT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
|
|
|
`code` VARCHAR(10) NOT NULL COMMENT '股票代码(关联new_stock_basic)',
|
|
|
|
|
|
`trade_date` DATE NOT NULL COMMENT '交易日期',
|
|
|
|
|
|
`record_type` TINYINT NOT NULL COMMENT '记录类型(1-创新高,-1-创新低)',
|
|
|
|
|
|
`price` DECIMAL(10,2) NOT NULL COMMENT '价格',
|
|
|
|
|
|
`days` INT NULL COMMENT '创新高/新低天数',
|
|
|
|
|
|
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
|
|
|
PRIMARY KEY (`id`) USING BTREE,
|
|
|
|
|
|
UNIQUE INDEX `idx_code_trade_date` (`code`, `trade_date`) USING BTREE,
|
|
|
|
|
|
INDEX `idx_trade_date` (`trade_date`) USING BTREE,
|
|
|
|
|
|
INDEX `idx_record_type` (`record_type`) USING BTREE,
|
|
|
|
|
|
CONSTRAINT `fk_stock_new_record_basic` FOREIGN KEY (`code`) REFERENCES `new_stock_basic` (`code`) ON DELETE CASCADE ON UPDATE CASCADE
|
|
|
|
|
|
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '股票创新高/新低数据表' ROW_FORMAT = Dynamic;
|
|
|
|
|
|
|
|
|
|
|
|
-- 6. 交易日数据
|
|
|
|
|
|
|
|
|
|
|
|
-- 6.1 交易日历表
|
|
|
|
|
|
DROP TABLE IF EXISTS `new_trade_dates`;
|
|
|
|
|
|
CREATE TABLE `new_trade_dates` (
|
|
|
|
|
|
`id` INT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
|
|
|
`trade_date` DATE NOT NULL COMMENT '交易日日期',
|
|
|
|
|
|
`is_trading` TINYINT DEFAULT 1 COMMENT '是否交易日(1-是,0-否)',
|
|
|
|
|
|
`year` SMALLINT NOT NULL COMMENT '年份',
|
|
|
|
|
|
`month` TINYINT NOT NULL COMMENT '月份',
|
|
|
|
|
|
`day` TINYINT NOT NULL COMMENT '日期',
|
|
|
|
|
|
`weekday` TINYINT NOT NULL COMMENT '星期几(1-7)',
|
|
|
|
|
|
`is_weekend` TINYINT DEFAULT 0 COMMENT '是否周末(1-是,0-否)',
|
|
|
|
|
|
`is_holiday` TINYINT DEFAULT 0 COMMENT '是否节假日(1-是,0-否)',
|
|
|
|
|
|
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
|
|
|
PRIMARY KEY (`id`) USING BTREE,
|
|
|
|
|
|
UNIQUE INDEX `idx_trade_date` (`trade_date`) USING BTREE,
|
|
|
|
|
|
INDEX `idx_year_month` (`year`, `month`) USING BTREE,
|
|
|
|
|
|
INDEX `idx_is_trading` (`is_trading`) USING BTREE,
|
|
|
|
|
|
INDEX `idx_weekday` (`weekday`) USING BTREE
|
|
|
|
|
|
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '交易日历表' ROW_FORMAT = Dynamic;
|
|
|
|
|
|
|
|
|
|
|
|
-- 7. 行业趋势分析数据
|
|
|
|
|
|
|
|
|
|
|
|
-- 7.1 行业趋势表
|
|
|
|
|
|
DROP TABLE IF EXISTS `new_industry_trend`;
|
|
|
|
|
|
CREATE TABLE `new_industry_trend` (
|
|
|
|
|
|
`id` INT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
|
|
|
`industry_id` INT NOT NULL COMMENT '行业ID(关联new_stock_industry)',
|
|
|
|
|
|
`trade_date` DATE NOT NULL COMMENT '交易日期',
|
|
|
|
|
|
`avg_change_rate` DECIMAL(8,4) NULL COMMENT '行业平均涨跌幅',
|
|
|
|
|
|
`up_stocks_count` INT NULL COMMENT '上涨股票数',
|
|
|
|
|
|
`down_stocks_count` INT NULL COMMENT '下跌股票数',
|
|
|
|
|
|
`flat_stocks_count` INT NULL COMMENT '平盘股票数',
|
|
|
|
|
|
`limit_up_count` INT NULL COMMENT '涨停股票数',
|
|
|
|
|
|
`limit_down_count` INT NULL COMMENT '跌停股票数',
|
|
|
|
|
|
`total_market_value` DECIMAL(25,2) NULL COMMENT '行业总市值',
|
|
|
|
|
|
`avg_turnover_rate` DECIMAL(8,4) NULL COMMENT '行业平均换手率',
|
|
|
|
|
|
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
|
|
|
PRIMARY KEY (`id`) USING BTREE,
|
|
|
|
|
|
UNIQUE INDEX `idx_industry_trade_date` (`industry_id`, `trade_date`) USING BTREE,
|
|
|
|
|
|
INDEX `idx_trade_date` (`trade_date`) USING BTREE,
|
|
|
|
|
|
INDEX `idx_avg_change_rate` (`avg_change_rate`) USING BTREE,
|
|
|
|
|
|
CONSTRAINT `fk_industry_trend_industry` FOREIGN KEY (`industry_id`) REFERENCES `new_stock_industry` (`industry_id`) ON DELETE CASCADE ON UPDATE CASCADE
|
|
|
|
|
|
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '行业趋势分析表' ROW_FORMAT = Dynamic;
|
|
|
|
|
|
|
|
|
|
|
|
SET FOREIGN_KEY_CHECKS = 1;
|