56

对不起新手问题。

我已经使用SQLite 数据库浏览器创建了我的表,但是:

  1. 我不知道如何使用应用程序指定我的外键

  2. 如何创建表之间的关系图?

4

8 回答 8

99

我知道这个问题很久以前就被问过了,但我找到了。它内置在 GUI 中。您只需将这些名称、类型选项卡拖得小一点,以便为外键选项卡腾出空间。将鼠标指针放在末尾并拖动标题。

我的 SQLite 浏览器版本是 3.7.0 版。

在此处输入图像描述

于 2016-12-01T12:42:08.267 回答
13

我找不到使用“数据库结构”选项卡定义外键约束的方法。我强烈建议使用脚本来定义表定义和约束,而不是使用图形编辑器来构建它们——它使创建新数据库和跟踪架构更改变得更加容易。

举例来说,假设我们有两张表:一张定义文件名,一张指定用于压缩的方法,我们可以在定义 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 功能

于 2013-11-17T12:31:26.393 回答
9

转到编辑表定义窗口

点击添加字段

用类型命名它:整数

向右滚动并找到外键列

在新行的外键列下双击

选择主表及其 id 字段

点击确定

单击写入更改

在此处输入图像描述

于 2019-02-13T13:42:00.870 回答
8

从 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)
);

在 SQLite 环境的数据库浏览器 (v 3.8.0 - Sqlite v 3.9.2) 中,当您添加track表的数据库字段以及 PK 、AI 和其他列时,您可以找到外键列。

在那里,对于此示例,您只需在行artist(artistid)中添加。 然后创建外键约束。trackartist

于 2016-02-11T11:10:05.187 回答
3

在 DB Browser 中,在 Edit Table Definition 窗口中,您可以双击 Foreign Key 的空白区域,将激活一个文本框。你可以在那里添加你的外键。

于 2017-06-13T14:54:20.037 回答
1

这真的很简单,只需执行此操作即可进入编辑表定义窗口

右键单击要关联的表(外部表)

选择修改表

在约束选项卡上选择添加约束按钮并选择外键,您可以在此处关联表,然后返回字段选项卡并执行

用类型命名它:整数

向右滚动并找到外键列

在新行的外键列下双击

选择主表及其 id 字段

点击确定

单击写入更改

于 2021-03-09T12:42:55.027 回答
0

SQLite3 中的触发器强制执行外键约束。链接https://www.sqlite.org/cvstrac/wiki?p=ForeignKeyTriggers 将帮助您解决您的第一个问题。

于 2013-08-06T13:08:46.257 回答
0

我不确定这是否完全正确,但这就是我所做的:

  • 我在字段选项卡中添加了变量“UserID”并选中了“主键”框
  • 我去了约束选项卡并在“UserID”上添加了外键类型约束
  • 然后我回到字段选项卡并双击打开的外键字段并添加该键所在的表的名称和变量的名称
于 2021-03-27T11:04:06.560 回答