繁体   English   中英

一对多外键关系Sqlite

[英]One to many Foreign Key relation Sqlite

因此,现在我正尝试使用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。

另外,有时基表中的base_id在shifts表中不具有匹配的shift_base_id。

所以我的问题是如何引用多个表之间的一对多关系? 以及如何使该关系可选。

你的关系倒退了。 您在表中列出引用其他表的外键。

CREATE TABLE IF NOT EXISTS shifts (
 shifts_id primary integer,
 shift_base_id integer,
 shift_site_id integer,
 FOREIGN KEY (shift_base_id) REFERENCES bases (base_id),
 FOREIGN KEY (shift_site_id) REFERENCES site (site_id));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM