嗨,我有点困惑..!
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....)
无论哪种方式都有效..但我无法决定我需要选择哪个,让我知道哪个更好..我是 DB Design 的新手。 广告感谢
最佳答案
第一个设计更好,但可能还不够好。
第二个设计要求如果两个员工共享同一个地址,则必须冗余存储地址详细信息。
第一个设计允许多个员工共享一个地址,这可能是必要的。然而,第一个设计只允许一名员工拥有一个地址。如果这就是您的系统所需要的全部,那么第一个设计就可以了。
但是,如果您可能需要允许员工拥有多个地址并由多个员工共享地址,那么您将不得不考虑从任一表中删除外键并将它们移动到新的交集表:
employee_address(e_id(fk), e_address_id(fk))
您选择的设计取决于您的业务规则以及现实中的合理预期。
关于mysql - 这种情况我必须使用外键的哪一种方式??,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13838404/