我有一个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。
不确定上述更改是否是最佳解决方案。