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.
RuoYi-Vue/stock-system-optimized-sche...

230 lines
12 KiB

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