0

我是數據庫設計的初學者。這是我必須設計的系統。這是一個循環數據庫引用/外鍵嗎?

公司有員工爲他們工作。 公司有他們與之做生意的客戶。 公司有他們可以爲客戶做的任務。 任務有任務完成前必須發生的里程碑。 員工有任務完成的里程碑。

所以我的數據庫設計是這樣的:

公司 CompanyID PK

客戶 ClientID的PK CompanyID FK

FixedTask FixedTaskID PK CompanyID FK

里程碑 MilestoneID PK FixedTaskID FK

僱員 僱員PK CompanyID FK

TaskPlanning TaskPlanningID PK 僱員FK ClientID的FK MilestoneID FK

任何人都可以告訴我,如果這是循環引用?如果是這樣,我該如何解決它?

謝謝!

回答

2

它是圓形的嗎?不,這不對。

你會看到立即如果你畫的情形的示意圖,外鍵引用堵漏:

   +--------------+ 
    +--------> | Company | <--------+ 
    |   +--------------+   | 
    |    ^    | 
    |     |     | 
+--------+  +--------------+  +----------+ 
| Client |  | FixedTask |  | Employee | 
+--------+  +--------------+  +----------+ 
    ^    ^    ^
    |     |     | 
    |   +--------------+   | 
    |   | Milestone |   | 
    |   +--------------+   | 
    |    ^    | 
    |     |     | 
    |   +--------------+   | 
    +----------| TaskPlanning |----------+ 
       +--------------+ 

因此,沒必要修復它。

0

由於paxdiablo has shown,這不是一個循環引用。

它,然而「菱形」的依賴,這意味着你不只是有「分裂」,但也有表示表之間的關係線的「合併」。換句話說,這是一個DAG而不是一棵樹。

沒有什麼固有的「修理」,在菱形的依賴,然而,一些的DBMS(值得注意的是,MS SQL服務器)無法聲明強制執行的菱形關係(即通過外鍵語法),所以你不得不改用觸發器。