所以现在我正在尝试使用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表示子表(站点和基数)与父表(shift)之间的关系。我遇到的问题是我遇到了“外键不匹配”错误。我在某处读到,在sqlite中,您只能在父表中引用主键或唯一键。这个问题是多个班次可以共享相同的站点和基础。例如,base_id可以等于1234,多个班次将有shift_base_id = 1234.
还有时候base表中的base_id在轮班表中没有匹配的shift_base_id。
所以我的问题是如何在多个表之间引用这一个到多个关系?以及如何使这种关系成为可选的。
答案 0 :(得分:1)
你的关系倒退了。您可以在表中列出引用其他表的外键。
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));