0

在设计 mysql 表时,是否有任何规则来管理外键的放置?

即一些开发商这样做。

//Place the "address_id" inside the customer table
//Customer Table
Customer_id, Address_id, Customer_Name
    1            1            Jay

//Address Table
Address_id,  City
    1       London

有些人这样做。

//Place the "customer_id" inside the address table
//Customer Table
Customer_id, Customer_Name
    1            Jay

//Address Table
Address_id, Customer_id,  City
    1            1       London

哪种方法更好,为什么?这些开发人员在做出与外键放置相关的决定时会考虑什么?

这可能是一个愚蠢的问题,对某些人来说可能很明显。但我真的很难消除这种困惑,并感谢您的帮助。

4

1 回答 1

3

第一种方法允许每个客户一个地址,第二种方法允许每个客户多个地址。这完全基于需求。例如,如果您想记录办公室和家庭住址,则首选第二种方法。有很多场景可以记录当前和通信地址,主要办公室地址和分支机构地址等。

请参阅 Wikipedia on Cardinality(数据建模)

于 2013-07-08T12:49:29.913 回答