2017-02-20 80 views
1

有没有一种方法来在数据库中创建一个0 or 10 or 1关系?零或一至零或一的关系

例如,假设我有一张经理人表和一张艺术家表。经理只能管理一位艺术家,艺术家只能拥有一位经理。 但是,经理可能没有艺术家(即寻找艺术家来管理),艺术家可能没有经理。

有没有办法做到这一点?在任一表中创建一个外键只会创建一个1 to many关系。

回答

1

这很简单。

您有1:1的关系可能不存在。

所以你有一个uniqueforeign key这是nullable,因此可以指定为指向无。

喜欢的东西:

CREATE TABLE manager (
    id int primary key, 
    .... 
); 

CREATE TABLE artist (
    id int primary key, 
    manager_id int unique references manager(id) 
    ... 
); 

现在的艺术家不能有一个以上的经理,和经理不能有一个以上的艺术家。而艺术家可能没有经理。

0

我会在经理桌上放一个指向他们正在管理的艺术家的外键字段,从而允许空值。

然后,您可以使用它来查找他们正在管理的艺术家,并找到特定艺术家的经理。

0

我认为应该有separate table来管理关系。它将包含两个表的键,但是会有一个约束来防止重复的组合键。

这样,你不需要插入用于没有艺术家谁没有任何经理谁经理,或艺术家键(避免了空条目)

0

在RDBMS,你可以得到三种关系表

一对一; 一对多; 多对多

没有什么比一个零关系,但你可能会得到一个零关系即工作的一些数据可能存在1-0哪里发生关系时,但你不能明确地定义1-0的关系像一对一,多对多或多对多的关系。

+0

你甚至不能像“一对一”或“一对多”那样定义这种关系。他们实际上是概念,有不同的方法来锻炼他们。 – Lali

+0

嗯,我的意思是(Y) –