【发布时间】:2015-02-14 03:49:42
【问题描述】:
所以现在我正在尝试使用sqlite 在 3 个不同的表之间绘制关系我对 sqlite 相对较新,但看到您可以通过使用外键绘制关系从而优化性能。所以现在这里是我创建表的 sql 语句:
'CREATE TABLE IF NOT EXISTS shifts (
shifts_id primary integer,
shift_base_id integer,
shift_site_id integer)';
'CREATE TABLE IF NOT EXISTS sites (
site_id primary integer,
site_info text,
FOREIGN KEY(site_id) REFERENCES shifts(shift_site_id))';
'CREATE TABLE IF NOT EXISTS bases (
base_id primary integer,
base_info text,
FOREIGN KEY(base_id) REFERENCES shifts(shift_base_id))';
所以我要做的是通过 id 绘制子表(站点和基地)与父表(班次)之间的关系。我遇到的问题是我收到“外键不匹配”错误。我在某处读到,在 sqlite 中,您只能引用父表中的主键或唯一键。这样做的问题是多个班次可以共享相同的站点和基地。例如 base_id 可以等于 1234,多个班次的 shifts_base_id = 1234。
有时,bases 表中的 base_id 在 shifts 表中不会有匹配的 shift_base_id。
所以我的问题是如何在多个表之间引用这个一对多的关系?以及如何使这种关系成为可选的。
【问题讨论】:
标签: javascript database sqlite