Realmente no dices cuál es tu experiencia y cuánto sabes sobre programación y diseño de bases de datos . Parece que deberías leer un poco. Aunque conceptualmente su diseño es bastante simple. Su descripción identifica solo dos entidades:
- Instrumento financiero; y
- Cita.
Entonces necesitas identificar los atributos.
Instrumento financiero:
- Código de seguridad;
- Mercado;
- etc.
Cita:
- Marca de tiempo;
- Instrumento financiero;
- Precio de oferta; y
- Preguntar precio.
La referencia al instrumento financiero es lo que se llama una clave externa . Cada tabla también necesita una clave principal , probablemente solo un campo de incremento automático.
Conceptualmente bastante simple.
CREATE TABLE instrument (
id BIGINT NOT NULL AUTO_INCREMENT,
code CHAR(4),
company_name VARCHAR(100),
PRIMARY KEY (id)
);
CREATE TABLE quote (
id BIGINT NOT NULL AUTO_INCREMENT,
intrument_id BIGINT NOT NULL,
dt DATETIME NOT NULL,
bid NUMERIC(8,3),
ask NUMERIC(8,3),
PRIMARY KEY (id)
)
CREATE INDEX instrument_idx1 ON instrument (code);
CREATE INDEX quote_idx1 ON quote (instrument_id, dt);
SELECT (bid + ask) / 2
FROM instrument i
JOIN quote q ON i.id = q.instrument_id
WHERE i.code = 'GOOG'
AND q.dt >= '01-06-2008' AND q.dt < '02-06-2008'
Si su conjunto de datos es lo suficientemente grande, es posible que desee incluir (oferta + demanda) / 2 en la tabla para que no tenga que calcular sobre la marcha.
Ok, esa es la vista normalizada. Después de esto, es posible que deba comenzar a realizar optimizaciones de rendimiento. Considere esta pregunta sobre almacenar miles de millones de filas en MySQL . El particionamiento es una característica de MySQL 5.1+ (bastante nuevo).
Pero otra pregunta que debe hacerse es esta:¿necesita almacenar todos estos datos? La razón por la que pregunto esto es porque solía trabajar en corretaje en línea y solo almacenamos todas las operaciones durante un período muy limitado y las operaciones serían un conjunto de datos más pequeño que las cotizaciones, lo que parece querer.
El almacenamiento de miles de millones de filas de datos es un problema grave y realmente necesita ayuda para resolverlo.