Initial commit
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
-- 股票投资分析系统 - 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;
|
||||
Reference in New Issue
Block a user