2012-12-12 66 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....) 

上述结构是许多一对一的关系。
一个人可以住在多个地址但两个人不能住在一个地址。希望这解释了很多。

要了解更多关联数据库中的多样性读数

相关问题