stock-monitor/docs/database/database_schema_simple.sql
ycg 569c1c8813 重构股票监控系统:数据库架构升级与功能完善
- 重构数据访问层:引入DAO模式,支持MySQL/SQLite双数据库
- 新增数据库架构:完整的股票数据、AI分析、自选股管理表结构
- 升级AI分析服务:集成豆包大模型,支持多维度分析
- 优化API路由:分离市场数据API,提供更清晰的接口设计
- 完善项目文档:添加数据库迁移指南、新功能指南等
- 清理冗余文件:删除旧的缓存文件和无用配置
- 新增调度器:支持定时任务和数据自动更新
- 改进前端模板:简化的股票展示页面

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 15:44:25 +08:00

128 lines
4.6 KiB
SQL

-- Stock Monitor Database Schema
-- Database: stock_monitor
-- 1. Stocks table
CREATE TABLE IF NOT EXISTS stocks (
id INT AUTO_INCREMENT PRIMARY KEY,
stock_code VARCHAR(10) NOT NULL UNIQUE,
stock_name VARCHAR(50) NOT NULL,
market VARCHAR(10) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_stock_code (stock_code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 2. Stock data table
CREATE TABLE IF NOT EXISTS stock_data (
id INT AUTO_INCREMENT PRIMARY KEY,
stock_code VARCHAR(10) NOT NULL,
data_date DATE NOT NULL,
-- Basic info
price DECIMAL(10,3) DEFAULT NULL,
change_percent DECIMAL(8,4) DEFAULT NULL,
market_value DECIMAL(12,3) DEFAULT NULL,
-- Valuation metrics
pe_ratio DECIMAL(8,4) DEFAULT NULL,
pb_ratio DECIMAL(8,4) DEFAULT NULL,
ps_ratio DECIMAL(8,4) DEFAULT NULL,
dividend_yield DECIMAL(8,4) DEFAULT NULL,
-- Financial metrics
roe DECIMAL(8,4) DEFAULT NULL,
gross_profit_margin DECIMAL(8,4) DEFAULT NULL,
net_profit_margin DECIMAL(8,4) DEFAULT NULL,
debt_to_assets DECIMAL(8,4) DEFAULT NULL,
revenue_yoy DECIMAL(8,4) DEFAULT NULL,
net_profit_yoy DECIMAL(8,4) DEFAULT NULL,
bps DECIMAL(8,4) DEFAULT NULL,
ocfps DECIMAL(8,4) DEFAULT NULL,
-- Metadata
from_cache BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uk_stock_date (stock_code, data_date),
INDEX idx_stock_code (stock_code),
INDEX idx_data_date (data_date),
FOREIGN KEY (stock_code) REFERENCES stocks(stock_code) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 3. Watchlist table
CREATE TABLE IF NOT EXISTS watchlist (
id INT AUTO_INCREMENT PRIMARY KEY,
stock_code VARCHAR(10) NOT NULL,
target_market_value_min DECIMAL(12,3) DEFAULT NULL,
target_market_value_max DECIMAL(12,3) DEFAULT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uk_stock_code (stock_code),
FOREIGN KEY (stock_code) REFERENCES stocks(stock_code) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 4. AI Analysis table
CREATE TABLE IF NOT EXISTS ai_analysis (
id INT AUTO_INCREMENT PRIMARY KEY,
stock_code VARCHAR(10) NOT NULL,
analysis_type VARCHAR(20) NOT NULL,
analysis_date DATE NOT NULL,
-- Investment suggestions
investment_summary TEXT,
investment_action TEXT,
investment_key_points JSON,
-- Detailed analysis
valuation_analysis TEXT,
financial_analysis TEXT,
growth_analysis TEXT,
risk_analysis TEXT,
-- Price analysis
reasonable_price_min DECIMAL(10,3) DEFAULT NULL,
reasonable_price_max DECIMAL(10,3) DEFAULT NULL,
target_market_value_min DECIMAL(12,3) DEFAULT NULL,
target_market_value_max DECIMAL(12,3) DEFAULT NULL,
-- Metadata
from_cache BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uk_stock_type_date (stock_code, analysis_type, analysis_date),
INDEX idx_stock_code (stock_code),
INDEX idx_analysis_type (analysis_type),
INDEX idx_analysis_date (analysis_date),
FOREIGN KEY (stock_code) REFERENCES stocks(stock_code) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 5. System config table
CREATE TABLE IF NOT EXISTS system_config (
id INT AUTO_INCREMENT PRIMARY KEY,
config_key VARCHAR(50) NOT NULL UNIQUE,
config_value TEXT,
config_type VARCHAR(20) DEFAULT 'string',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_config_key (config_key)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 6. Data update log table
CREATE TABLE IF NOT EXISTS data_update_log (
id INT AUTO_INCREMENT PRIMARY KEY,
data_type VARCHAR(20) NOT NULL,
stock_code VARCHAR(10) DEFAULT NULL,
update_status ENUM('success', 'failed', 'partial') NOT NULL,
update_message TEXT,
execution_time DECIMAL(8,3) DEFAULT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_data_type (data_type),
INDEX idx_stock_code (stock_code),
INDEX idx_update_status (update_status),
INDEX idx_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;