首页 > 解决方案 > 我需要在 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)); 

标签: sqlite

解决方案


我将使用不同的子表定义,因为 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)引用DepartmentDept列可以为 NULL )。

这意味着可以将一个人分配到一个部门或不分配到一个部门,但如果是,则只能将他们分配到一个部门。


推荐阅读