如何为存储股价数据的SQLite数据库设置键和索引

时间:2019-03-20 11:02:48

标签: database sqlite stock price

我有一个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
);

这似乎可行,并且删除明细表中的公司时,数据表中的所有相应条目现在都将删除。

此外,我在数据表的epic列中添加了一个唯一索引,将排序设置为ASC,在明细表的epic和name列中又添加了一个唯一索引,将排序设置为asc。

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

0 个答案:

没有答案