2012-12-12 70 views
1

嗨,我有一點困惑..!哪種方式我必須使用外鍵這種情況?

address_details(e_address_id(pk),hno,street....) 
emp_details(eid(pk),ename,...,e_address_id(fk)) 

emp_details(eid(pk),ename,...,) 
address_details(e_address_id(pk),eid(fk)hno,street....) 

無論哪種方式,它works..But我不能決定,我需要選擇,並讓我知道wchich一個更好的..我是DB設計一個新手。 在以下感謝

+0

需要但是詳細說明...?或者我的問題是無關緊要的。 – Chella

回答

1

第一個設計更好,但它可能不夠好。

第二種設計要求,如果兩個員工共享相同的地址,地址詳細信息將不得不被存儲。

第一個設計允許多個員工共享一個地址,這可能是必要的。然而,第一種設計只允許員工擁有一個地址。如果這是你所有的系統需求,那麼第一個設計就很好。

但是,如果您可能需要允許員工擁有多個員工共享的多個地址和地址,則您必須考慮從任一表格中移除外鍵並將其移至新的路口表

employee_address(e_id(fk), e_address_id(fk)) 

您選擇的設計取決於您的業務規則以及現實中期望的合理性。

+0

謝謝現在我明白了。 – Chella

0

您需要了解關係數據庫中的多重概念或關係概念。

address_details(e_address_id(pk),hno,street....) 
emp_details(eid(pk),ename,...,e_address_id(fk)) 

此結構將調用(emp entity1和Address entity2)員工到地址的一對多關係。這意味着多位員工可以住在同一地址。但在同一時間一名員工就不能活在多個位置
所以EMPA住在加-A
EmpB生活添加-B
EMPC的生活添加-A(其中EMPA也住)
在以下結構EMPA能住在兩個地址。

emp_details(eid(pk),ename,...,) 
address_details(e_address_id(pk),eid(fk)hno,street....) 

上述結構是許多一對一的關係。
一個人可以住在多個地址但兩個人不能住在一個地址。希望這解釋了很多。

要了解更多關聯數據庫中的多樣性讀數

相關問題