Как настроить Ключ и индексы для базы данных SQLite, хранящей данные о цене акций - PullRequest
0 голосов
/ 20 марта 2019

У меня есть база данных SQLite, в которой хранятся сведения о компании и истории цен акций с использованием двух таблиц.Схема выглядит следующим образом:

CREATE TABLE details (
epic     CHAR (4),
name     VARCHAR (30),
exchange CHAR (6),
sector   VARCHAR (20),
CONSTRAINT PK_details PRIMARY KEY (
    epic ASC
)
ON CONFLICT ROLLBACK
);

CREATE TABLE data (
epic   CHAR (4),
date   DATE (10),
open   DECIMAL (6, 2),
high   DECIMAL (6, 2),
low    DECIMAL (6, 2),
close  DECIMAL (6, 2),
volume INTEGER (10),
CONSTRAINT PK_data PRIMARY KEY (
    epic ASC,
    date ASC
)
ON CONFLICT ROLLBACK
);

Когда я удаляю компанию из таблицы сведений, я хотел бы, если возможно, чтобы процесс удаления каскадно удалял все соответствующие записи в таблице данных.

Кроме того, поскольку таблица данных может быть очень большой - 500 компаний, по двум годам данных для каждой компании, необходимо создать индекс, и я не уверен, как его настроить.

Любая помощьили комментарии о том, как улучшить вышеупомянутую схему, будут с благодарностью.

Я немного больше прочитал и добавил внешний ключ в таблицу данных.

ON CONFLICT ROLLBACK,
CONSTRAINT epic_FK FOREIGN KEY (
    epic
)
REFERENCES details (epic) ON DELETE CASCADE
);

Это, похоже, работаети когда компания в таблице сведений удаляется, все соответствующие записи в таблице данных теперь удаляются.

Кроме того, я добавил уникальный индекс в эпический столбец таблицы данных с сортировкой, установленной в ASC, идругой уникальный индекс для столбцов epic и names таблицы подробностей, опять же с сортировкой, установленной в ASC.

Не уверен, что вышеуказанные измененияЕсть решение, хотя.

...