Esquema de base de datos para organizar los datos históricos de stock

Estoy creando un esquema de base de datos para almacenar datos de stock históricos. Actualmente tengo un esquema como se muestra a continuación.

Mis requisitos son almacenar "datos de barras" (fecha, apertura, alto, bajo, volumen de cierre) para múltiples símbolos de acciones. Cada símbolo también puede tener múltiples marcos de tiempo (por ejemplo, barras de Google Weekly y barras de Google Daily).

Mi esquema actual coloca la mayor parte de los datos en la tabla OHLCV. Estoy lejos de ser un experto en bases de datos y tengo curiosidad por saber si esto es demasiado ingenuo. La aportación constructiva es muy bienvenida.

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

Esto significa que mis consultas actualmente van más o menos como: Encuentre el timeframeID para un símbolo / timeframe dado, luego haga una selección en la tabla OHLCV donde coincida el timeframeID.

Respuestas a la pregunta(3)

Su respuesta a la pregunta