Non dici davvero quale sia il tuo background e quanto sai di programmazione e progettazione di database . Sembra che dovresti leggere un po'. Concettualmente anche se il tuo design è abbastanza semplice. La tua descrizione identifica solo due entità:
- Strumento finanziario; e
- Citazione.
Quindi è necessario identificare gli attributi.
Strumento finanziario:
- Codice di sicurezza;
- Mercato;
- ecc.
Citazione:
- Data e ora;
- Strumento finanziario;
- Prezzo dell'offerta; e
- Chiedi prezzo.
Il riferimento allo strumento finanziario è quella che viene chiamata chiave straniera . Ogni tabella necessita anche di una chiave primaria , probabilmente solo un campo di incremento automatico.
Concettualmente abbastanza semplice.
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'
Se il tuo set di dati è sufficientemente grande, potresti voler includere (offerta + domanda) / 2 nella tabella in modo da non dover calcolare al volo.
Ok, quindi questa è la visualizzazione normalizzata. Successivamente potrebbe essere necessario iniziare a effettuare ottimizzazioni delle prestazioni. Considera questa domanda su memorizzazione di miliardi di righe in MySQL . Il partizionamento è una funzionalità di MySQL 5.1+ (abbastanza nuovo).
Ma un'altra domanda da porsi è questa:hai bisogno di memorizzare tutti questi dati? Il motivo per cui lo chiedo è che lavoravo nell'intermediazione online e abbiamo archiviato tutte le operazioni solo per una finestra molto limitata e le operazioni sarebbero un insieme di dati più piccolo rispetto alle quotazioni, cosa che sembra volere.
L'archiviazione di miliardi di righe di dati è un problema serio e hai davvero bisogno di un aiuto serio per risolverlo.