Files
stock/stock-html/init_db.sql
T
freedakgmail 9c7d7abdd4 Initial commit
2026-07-17 18:49:35 +08:00

70 lines
2.0 KiB
SQL

-- 股票投资分析系统 - PostgreSQL 数据库初始化脚本
-- 运行方式: psql -U postgres -f init_db.sql
-- 创建数据库(如果不存在)
SELECT 'CREATE DATABASE stock_app'
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'stock_app')\gexec
-- 连接到数据库
\c stock_app
-- 用户表
CREATE TABLE IF NOT EXISTS users (
id SERIAL PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
available_cash DECIMAL(15,2) DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 关注列表
CREATE TABLE IF NOT EXISTS watchlist (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
stock_code VARCHAR(10) NOT NULL,
stock_name VARCHAR(50),
added_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE(user_id, stock_code)
);
-- 交易记录
CREATE TABLE IF NOT EXISTS trades (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
stock_code VARCHAR(10) NOT NULL,
stock_name VARCHAR(50),
trade_type VARCHAR(10) NOT NULL,
price DECIMAL(10,4),
quantity INTEGER,
trade_date DATE,
reason TEXT,
result VARCHAR(20),
profit_amount DECIMAL(10,4),
stop_loss_price DECIMAL(10,4),
notes TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 分析缓存
CREATE TABLE IF NOT EXISTS alerts_cache (
id SERIAL PRIMARY KEY,
user_id INTEGER UNIQUE REFERENCES users(id) ON DELETE CASCADE,
data JSONB,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 股票名称缓存(公共)
CREATE TABLE IF NOT EXISTS stock_names (
code VARCHAR(10) PRIMARY KEY,
name VARCHAR(50)
);
-- 创建索引
CREATE INDEX IF NOT EXISTS idx_watchlist_user ON watchlist(user_id);
CREATE INDEX IF NOT EXISTS idx_trades_user ON trades(user_id);
CREATE INDEX IF NOT EXISTS idx_trades_stock ON trades(stock_code);
CREATE INDEX IF NOT EXISTS idx_alerts_user ON alerts_cache(user_id);
-- 输出结果
SELECT 'Database initialized successfully!' as status;