2017-03-15 55 views
0

我的理解是,當基數爲1時, 而不是製作關係表,我們將一個實體的主鍵作爲外鍵添加到實體表中。關係模式:(0,1)到(0,1)與屬性的關係 - 創建一個新表?

但是,它是(0,1)到(0,1)關係的情況呢?

I.e.當一個員工可以分配到一個單一的外部工作空間時,可以將不超過一個人分配到該工作空間。這些員工將有計劃的分配開始和結束日期。

所以員工實體,工作空間實體和它們之間的分配關係。 我打算在關係'分配'中創建兩個屬性 - start_date和end_date。

1)如果我沒有創建一個新表,當員工沒有被分配到任何工作區時會發生什麼?我是否簡單地將外鍵設置爲NULL?

2)此外,我會將關係屬性添加到人員實體表嗎?

我想簡單地使一個單獨的表會輕鬆很多......

提前非常感謝。

+1

你可能想使一個人有在時間A處一個工作區,同一個人在某一時刻C中的時間B一個工作區,那麼這個人可能再次獲得第一工作區?或者它只是一項任務而已?在這種情況下:您是否不想添加未來的作業(例如下個月,而當前的作業仍在當前列中)? – Solarflare

+0

對於我目前關於大學項目的規範,我們只需要指定一次,但就像您提到的未來作業一樣,製作單獨的表格將是更好的選擇。感謝您的見解! – zcahfg2

回答

2

如何安排表取決於您使用的建模方法。可以有許多關係模式代表相同的應用情況。 (在Chen ER建模中,這實際上是唯一應該稱爲「ER」的方法,因此實體表對其他實體表沒有FK)。對於0或1到0或1的情況,明顯的直接設計是一個單獨的表格,其中適當的對和每個實體都是唯一的。或者你可以將一個可空的唯一FK放入其中一個實體表中的另一個實體表中;實體的實體表格行中的NULL表示在前表所表示的關係中沒有其他實體與它配對。請注意,後一種設計可以描述爲將前一個表嵌入到一個實體表中。後一種設計是不對稱的,通常不那麼自然,但是你可能會這樣做,因爲沒有使用明顯的簡單設計(這是設計的性能改進)的通常原因。

1

在我看來,你將不得不創建另一個表workspace_allocation,其中分配ID將是主鍵,staff_id將是外鍵引用人員,workspace_id將是外鍵引用工作區,start_date,end_date。

通過這種方式,您可以在員工和工作區之間建立0-1關係。

聽起來怎麼樣? 請留下評論。

謝謝

+0

謝謝,我認爲在一般情況下製作一個單獨的表格會更好,就像評論者也指出的那樣,這種方法也可以有將來的作業。但這是一個大學項目,我們的數據庫講師告訴我們要避免多餘的表格以獲得滿分,所以我一直在尋找最佳方法。 – zcahfg2