我正在创建一个用于存储历史股票数据的数据库架构。目前,我的架构如下所示。
我的需求是为多个股票符号存储“条形数据”(日期、开盘价、最高价、最低价、收盘价和成交量)。每个符号也可能有多个时间框架(例如,谷歌周线和谷歌日线)。
我的当前架构将大部分数据存储在OHLCV表中。我离数据库专家还很远,很好奇这是否太幼稚。欢迎提出建设性意见。
CREATE TABLE Exchange (exchange TEXT UNIQUE NOT NULL);
CREATE TABLE Symbol (symbol TEXT UNIQUE NOT NULL, exchangeID INTEGER NOT NULL);
CREATE TABLE Timeframe (timeframe TEXT NOT NULL, symbolID INTEGER NOT NULL);
CREATE TABLE OHLCV (date TEXT NOT NULL CHECK (date LIKE '____-__-__ __:__:__'),
open REAL NOT NULL,
high REAL NOT NULL,
low REAL NOT NULL,
close REAL NOT NULL,
volume INTEGER NOT NULL,
timeframeID INTEGER NOT NULL);
这意味着我的查询目前大致如下:查找给定符号/时间范围的时间范围 ID,然后在 OHLCV 表中执行选择,其中时间范围 ID 匹配。