抱歉,问题比较基础。
我使用SQLite数据库浏览器创建了我的数据表,但是:
我不知道如何在应用程序中指定我的外键?
如何在表之间创建关系图?
抱歉,问题比较基础。
我使用SQLite数据库浏览器创建了我的数据表,但是:
我不知道如何在应用程序中指定我的外键?
如何在表之间创建关系图?
前往编辑表定义窗口
单击添加字段
用类型:整数命名
向右滚动并找到外键列
在新行下的外键列中双击
选择主表及其id字段
单击确定
单击写入更改
我无法找到一种使用“数据库结构”选项卡定义外键约束的方法。强烈建议使用脚本定义表定义和约束,而不是使用图形编辑器构建它们-这样可以更轻松地创建新的数据库,并跟踪模式的变化。
以一个例子来说,假设我们有两个表:一个定义文件名,另一个指定用于压缩的方法,在定义file_definition表时可以添加外键约束。
CREATE TABLE [compression_state] (
[compression_state_id] INTEGER PRIMARY KEY NOT NULL,
[value] TEXT NOT NULL
);
CREATE TABLE [file_definition] (
[file_id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
[compression_state_id] INTEGER NOT NULL,
[name] TEXT NOT NULL,
FOREIGN KEY(compression_state_id) REFERENCES compression_state(compression_state_id)
);
然而,默认情况下,SQLite不会强制执行约束条件,因此每次连接到数据库时,您必须发出以下命令以启用约束检查。
PRAGMA foreign_keys = ON;
有关详细信息,请参阅文档。
如果表已经存在且您不想构建完整的脚本,则很遗憾,SQLite不支持在生成表后添加外键,请参见此处:SQLite未实现的SQL功能
来自SQLite文档:
CREATE TABLE artist(
artistid INTEGER PRIMARY KEY,
artistname TEXT
);
CREATE TABLE track(
trackid INTEGER,
trackname TEXT,
trackartist INTEGER -- Must map to an artist.artistid!
);
CREATE TABLE track(
trackid INTEGER,
trackname TEXT,
trackartist INTEGER,
FOREIGN KEY(trackartist) REFERENCES artist(artistid)
);
track
表的数据库字段以及PK、AI和其他列时,您可以找到一个外键列。trackartist
行举例,只需添加artist(artistid)
即可。然后外键约束就被创建了。在DB浏览器中,在“编辑表定义”窗口中,您可以双击外键的空白区域,这样一个文本框就会被激活。您可以在那里添加您的外键。
这很简单,只需要按照以下步骤操作:
进入编辑表定义窗口
右键点击要关联的表(外部表)
选择修改表
在约束选项卡中选择添加约束按钮并选择外键
您可以在此处关联表,然后返回到字段选项卡并进行以下操作
使用类型:整数来命名它
向右滚动并找到外键列
在新行下的外键列中双击
选择主表及其ID字段
单击确定
单击写入更改
我不确定这是否完全正确,但这是我所做的: