2017-04-04 84 views
0

嘿,我要創建數據庫的應該是像以下路線: http://imgur.com/a/UdFKr實現關係數據庫方案

,但沒有「接觸」表。這甚至有可能嗎?

而另一個問題: 如何將幾個值放入單個字段?是否有可能,或者我需要創建額外的表格?

http://imgur.com/5Op7FXt

+0

你當然可以創建一個由其他4個表組成的數據庫,但是如果沒有「contact」表,它的用處就會有限。 –

+0

不要將多個值放入一個元組中。這違反了1NF,並且與合作令人難以置信的痛苦。當你遇到希望這樣做的時候,這是一個明確的信號,你需要一個表格來獲取這些信息。 –

+0

所以我的理念是相當合理的? 'contact'表只包含一個字段不是問題嗎? – bielu000

回答

0

很可能沒有聯繫表來建模。 解決方案可能是將Employee表放在de模型的中心。然後,您可以使用一對多關係將Phone_number和Email_address錶鏈接到Employee表中,就像它們現在建模爲Contact一樣。由於員工可能有多個電子郵件地址和多個電話號碼,因此這些表應具有員工的外鍵。

您必須記住的唯一事情是Employee表與Employee表的關係的基數。爲了消除數據冗餘,您可能希望在那裏建立多對多關係,因爲員工可以有多個僱主,公司可以屬於多個員工。這意味着你最終將擁有一個聯結表。

希望這會回答你的問題。

0

根據外鍵烏鴉腳的通常解釋來閱讀您的設計圖,每個公司,員工,電子郵件地址和電話號碼都有一個聯繫人,每個聯繫人至少有一個聯繫人。因此,Contact中的ID集合始終是其他四個表中聯繫ID的集合。所以你不需要聯繫。 (但是,如果一個聯繫人可能存在而沒有與任何其他四個實體關聯,那麼這四個表本身將無法記錄這些業務情況。)

我猜不清楚「如何將幾個值成單場?「你的意思是你如何將多個值放入一個字段中。選擇一個函數,將多個值映射爲單個值,方法是可以撤消/反轉。但如果你有興趣使用個人價值觀進行查詢,那麼你不應該這樣做,這是一個糟糕的設計。研究它。 (這通常被認爲違反了1NF,但這取決於1NF的含義,這個術語通常意味着很多不同的東西,最終在可以說違反它的情況下,1NF本身取決於哪些部分值你希望能夠查詢。)