У меня есть база данных 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.
Не уверен, что вышеуказанные измененияЕсть решение, хотя.