零或一对零关系

时间:2017-02-20 09:45:42

标签: sql sql-server

有没有办法在数据库中创建0 or 10 or 1的关系?

例如,我们说我有一张经理人表和一张艺术家表。经理只能管理一位艺术家,而艺术家只能拥有一位经理。 然而,经理可能没有艺术家(即寻找艺术家来管理),而艺术家可能没有经理。

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

4 个答案:

答案 0 :(得分:3)

这很简单。

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

所以你有unique foreign key nullable,因此可以指定为无点。

类似的东西:

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

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

现在艺术家不能拥有多个经理,经理不能拥有多个艺术家。艺术家可能没有经理。

答案 1 :(得分:0)

我在管理器表上放置一个外键字段,指向他们正在管理的艺术家,允许空值。

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

答案 2 :(得分:0)

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

通过这种方式,您无需为没有艺术家的经理或没有任何经理的艺术家插入关键字(避免空洞参赛作品)

答案 3 :(得分:-1)

在RDBMS中,您可以在表之间获得三种关系

  

一对一;   一对多;   多对多

没有什么比一到零的关系,但你可能会在工作时得到一对零关系,即一些数据可能存在于1-0关系发生但你无法明确定义1-0关系,如一对一,一对许多或多对多的关系。