2017-02-20 92 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) –

相關問題