sqlite数据库模型中的约束和键
我正在使用Navicat中的建模工具建立一个简单的Sqlite数据库。设置如下所示:sqlite数据库模型中的约束和键,sqlite,foreign-keys,constraints,primary-key,composite-primary-key,Sqlite,Foreign Keys,Constraints,Primary Key,Composite Primary Key,我正在使用Navicat中的建模工具建立一个简单的Sqlite数据库。设置如下所示: Table 1: _employer_ col1: name (PK) ----------- Mcdonalds | NHS London | Police | ----------- Table 2: _jobs_ col1: job_title col2: emp_name (FK - referencing _employer_.name) col3: job_id (PK - aut
Table 1: _employer_
col1: name (PK)
-----------
Mcdonalds |
NHS London |
Police |
-----------
Table 2: _jobs_
col1: job_title
col2: emp_name (FK - referencing _employer_.name)
col3: job_id (PK - automatically generated)
----------------------------
Mcdonalds | Cleaner | 345 |
McDonalds | Kitchens | 782 |
Police | Kitchens | 999 |
NHS London | Nurse | 123 |
NHS London | Doctor | 126 |
NHS London | Cleaner | 112 |
----------------------------
我想添加的最后一个约束是(emp\u name
和job\u title
)在\u jobs
表中,jobs是唯一的,因此,例如,您不能有两个NHS London | cleaner
条目。但是,当我添加此约束时,Navicat抱怨说当前约束无法实现基数。这种设置有什么问题?。如果有帮助,以下是此模型生成的SQL模式:
CREATE TABLE "_employer_" (
"name" TEXT NOT NULL,
PRIMARY KEY ("name")
);
CREATE TABLE "_jobs_" (
"job_title" TEXT NOT NULL,
"emp_name" TEXT NOT NULL,
"job_id" INTEGER NOT NULL,
PRIMARY KEY ("job_id") ,
CONSTRAINT "fk__jobs___employer__1" FOREIGN KEY ("emp_name") REFERENCES "_employer_" ("name"),
CONSTRAINT "constrain_job" UNIQUE ("emp_name", "job_title")
);
问题可能归结为使用外键
(它在自己的表中是主键
)作为组合唯一键
的一部分。在我的示例中,\u employer\u.name
是\u employer\u
表中的主键,是\u jobs\u
表中的外键的引用(\u jobs\u.emp\u name
),最后,这个emps\u name
字段是\u作业
表中组合唯一键
的一部分。理论上讲,这样做有什么问题吗?您的模式(编辑前和编辑后)在SQLite 3.7.9和3.7.16.2上为我构建时都没有错误。在pragma foreign_keys=on之后代码>,外键约束按设计工作
如果我处在您的位置,我会使用SQLite命令行而不是Navicat进行测试。我在这里看不到SQLite问题。错误:外键定义中的未知列“Organization”在删除断开的外键引用后,在3.7.9版中对我来说很好。抱歉,原始架构中存在错误。我已经改正了。还是有同样的问题吗