零或一到零或一的关系

Nea*_*Nit 4 sql sql-server

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

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

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

Chr*_*ers 8

这相当简单。

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

所以,你有一个unique foreign keynullable,因此可以被指定为指向任何东西。

就像是:

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

CREATE TABLE artist (
     id int primary key,
     manager_id int unique references manager(id)
     ...
);
Run Code Online (Sandbox Code Playgroud)

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

  • @Bret:SQL 标准规范确实规定“UNIQUE”约束在检查唯一性时必须忽略“NULL”值。大多数 RDBMS 都正确实现了它:Oracle / PostgreSQL / MySQL / MariaDB。SQL Server 没有,但可以通过在约束上添加“WHERE 列 IS NOT NULL”子句来获得相同的行为。 (4认同)