首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >零或一对零或一的关系

零或一对零或一的关系
EN

Stack Overflow用户
提问于 2017-02-20 17:45:42
回答 4查看 12.7K关注 0票数 4

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

例如,假设我有一个经理表和一个艺术家表。一个经理只能管理一个艺术家,一个艺术家只能有一个经理。然而,经理可以没有艺术家(即寻找艺术家来管理),而艺术家可能没有经理。

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

EN

回答 4

Stack Overflow用户

发布于 2017-02-20 17:49:53

这是相当简单的。

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

因此,您有一个unique foreign key,它是nullable,因此可以指定为空。

类似于:

代码语言:javascript
复制
CREATE TABLE manager (
    id int primary key,
    ....
);

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

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

票数 8
EN

Stack Overflow用户

发布于 2017-02-20 17:54:32

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

通过这种方式,您不需要为没有Artist的经理或没有任何Manager的Artists插入密钥(避免Null条目)

票数 2
EN

Stack Overflow用户

发布于 2017-02-20 17:50:57

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42341150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档