sqlite - 我需要在 sqlite 中创建具有“一对零或一对一”关系的表。这是我到目前为止所拥有的,对吗?
问题描述
所以到目前为止我有这个,我必须绑定这两个表(一对零或一对一的关系)
DROP TABLE if exists Person;
CREATE TABLE Person(
ID int NOT NULL,
Name varchar (40),
PRIMARY KEY(ID));
DROP TABLE if exists Pass;
CREATE TABLE Pass(
ID int REFERENCES Person,
Owner int,
PRIMARY KEY(ID),
FOREIGN KEY(Owner) REFERENCES Person(ID));
解决方案
我将使用不同的子表定义,因为
Pass
您问题中的表没有任何意义;它不包含任何自己的信息。
CREATE TABLE Person (
ID INTEGER PRIMARY KEY,
Name VARCHAR(40) NOT NULL,
Dept INT REFERENCES Department(DeptID);
);
CREATE TABLE Department (
DeptID INTEGER PRIMARY KEY,
Name VARCHAR(120) NOT NULL
);
表的Dept
列与Person
表具有 1 : 0 或 1 的关系Department
,因为表 (1) 中的每一行Person
可以包含对表中行的零或一个(0 或 1)引用Department
(Dept
列可以为 NULL )。
这意味着可以将一个人分配到一个部门或不分配到一个部门,但如果是,则只能将他们分配到一个部门。
推荐阅读
- xaml - Xamarin Forms - 在点击手势识别器上添加调用对象作为参数
- java - 32 位 Linux 的 Java 8 Diffie Hellman 密钥大小问题
- java - 构造具有给定预序的二叉树
- r - 如何为 R 中的每个颜色类创建一个误差线?
- tensorflow - 在哪里可以找到 tensorflow 预训练模型(列表或下载链接)
- c# - 使用数据绑定时列表视图未刷新
- linux - 用于打印具有分隔符的变量的 Shell 脚本
- node.js - 将节点红色流推送到 docker 容器
- php - 多变量数组维度的变量
- javascript - 为什么 Angular 无法识别用户是否使用 keycloak 登录?