database - 如何为存储股票价格数据的 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。
不确定上述更改是否是最佳解决方案。
解决方案
推荐阅读
- c++ - 执行相同功能的不同结果[C++]
- javascript - 我可以用 Jasmine 测试 setInterval 吗?
- java - sbt 0.13.17 “编译 sbt 组件‘编译器接口’时出错”
- c# - AWS lambda 不在 CloudWatch 中写入日志
- javascript - 使用 Javascript 制作画布全屏
- mysql - go-xorm 是否可以检测 DATETIME(3) 类型?
- python - Python 缓冲区,它们是如何工作的?
- python - ImportError:没有名为“numpy”的模块,但它就在那里!蟒蛇3.5
- python-3.x - Python:复制变量或使其中两个指向同一个对象之间的区别
- jquery - 显示来自 REST GET 响应的 HTML 页面