Mysql 在这种情况下,我必须使用外键的哪种方式??

Mysql 在这种情况下,我必须使用外键的哪种方式??,mysql,database-design,Mysql,Database Design,嗨,我有点困惑 address_details(e_address_id(pk),hno,street....) emp_details(eid(pk),ename,...,e_address_id(fk)) 或 无论哪种方法都有效,但我无法决定我需要选择哪一种,让我知道哪一种更好。。我是DB设计的新手。 感谢adv第一种设计更好,但可能不够好 第二种设计要求,如果两名员工共享同一地址,则必须重复存储地址详细信息 第一种设计允许多个员工共享一个地址,这可能是必要的。然而,第一种设计只允许员工拥

嗨,我有点困惑

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

无论哪种方法都有效,但我无法决定我需要选择哪一种,让我知道哪一种更好。。我是DB设计的新手。
感谢adv

第一种设计更好,但可能不够好

第二种设计要求,如果两名员工共享同一地址,则必须重复存储地址详细信息

第一种设计允许多个员工共享一个地址,这可能是必要的。然而,第一种设计只允许员工拥有一个地址。如果这就是您的系统所需要的,那么第一个设计就可以了

但是,如果您可能需要允许雇员有多个地址和地址由多个雇员共享,那么您必须考虑从表中移除外键并将它们移到一个新的交叉表:


您选择的设计取决于您的业务规则以及现实中的合理预期。

第一种设计更好,但可能不够好

第二种设计要求,如果两名员工共享同一地址,则必须重复存储地址详细信息

第一种设计允许多个员工共享一个地址,这可能是必要的。然而,第一种设计只允许员工拥有一个地址。如果这就是您的系统所需要的,那么第一个设计就可以了

但是,如果您可能需要允许雇员有多个地址和地址由多个雇员共享,那么您必须考虑从表中移除外键并将它们移到一个新的交叉表:


您选择的设计取决于您的业务规则以及现实中的合理预期。

您需要了解关系数据库中的多重性概念或关系概念

address_details(e_address_id(pk),hno,street....)
emp_details(eid(pk),ename,...,e_address_id(fk))
此结构将称为(emp entity1和Address entity2)从员工到地址的1-many关系。这意味着多个员工可以住在同一个地址。但同时,一名员工不能住在多个地点
所以EmpA住在Add-A
EmpB生命添加-B
Empc生活在Add-A(EmpA也生活在这里)
在以下结构中,EmpA不能位于两个地址。

emp_details(eid(pk),ename,...,)
address_details(e_address_id(pk),eid(fk)hno,street....)
上述结构是多个关系。
一个人可以住在多个地址,但两个人不能住在一个地址。希望这能解释很多


要了解关系数据库中更多的读取多重性,您需要了解关系数据库中的多重性概念或关系概念

address_details(e_address_id(pk),hno,street....)
emp_details(eid(pk),ename,...,e_address_id(fk))
此结构将称为(emp entity1和Address entity2)从员工到地址的1-many关系。这意味着多个员工可以住在同一个地址。但同时,一名员工不能住在多个地点
所以EmpA住在Add-A
EmpB生命添加-B
Empc生活在Add-A(EmpA也生活在这里)
在以下结构中,EmpA不能位于两个地址。

emp_details(eid(pk),ename,...,)
address_details(e_address_id(pk),eid(fk)hno,street....)
上述结构是多个关系。
一个人可以住在多个地址,但两个人不能住在一个地址。希望这能解释很多


要了解关系数据库中更多的读取多样性,还需要详细的解释吗。。。?或者我的问题无关紧要……还需要详细解释吗。。。?或者我的问题无关紧要….?谢谢你现在我明白了。。!谢谢你,现在我明白了。。!