首页 > 解决方案 > 如何为存储股票价格数据的 SQLite 数据库设置键和索引

问题描述

我有一个 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,并且为详细信息表的史诗和名称列添加了另一个唯一索引,再次将排序设置为 ASC。

不确定上述更改是否是最佳解决方案。

标签: databasesqlitestockprice

解决方案


推荐阅读