Mysql 将一个表行与另两个表行正确关联

Mysql 将一个表行与另两个表行正确关联,mysql,foreign-keys,Mysql,Foreign Keys,我在MySQL方面不是很有经验,我正在为客户构建一个简单的CRM。最初基于他的想法,我建立了如下的数据库结构,这样每个帐户都可以有多个联系人连接到它,我只需使用匹配的帐号就可以将它们关联起来。简单的豌豆 Account Table +-------------+-------------+ | account_id | create_date | +-------------+-------------+ |#10045 | 01/05/15 | |#10046

我在MySQL方面不是很有经验,我正在为客户构建一个简单的CRM。最初基于他的想法,我建立了如下的数据库结构,这样每个帐户都可以有多个联系人连接到它,我只需使用匹配的帐号就可以将它们关联起来。简单的豌豆

Account Table
+-------------+-------------+
| account_id  | create_date |
+-------------+-------------+
|#10045       | 01/05/15    |
|#10046       | 01/07/15    |
+-------------+-------------+

Customer Contact Table
+-----------+-----------+-----------+ 
|contact_id |account_id |first_name |
+-----------+-----------+-----------+
|#124       |#10045     |John       |
|#125       |#10045     |Bill       |
|#126       |#10046     |Frank      |
+-----------+-----------+-----------+
但在这个项目中,我发现他希望联系人可以在其他帐户上重复使用,而不必创建副本。因此,仅凭上述账号进行关联是行不通的

所以我想我应该从contact表中删除account_id行,然后使用第三个表,如下所示

Account Contact Link Table
+--+------------+------------+
|id| account_id | contact_id |
+--+------------+------------+
|#1| #10045     | #124       |
|#2| #10045     | #125       |
|#3| #10046     | #126       |
+--+------------+------------+

这会管用的,但我想知道这是否是最佳做法。

这意味着“Jhon”和“Bill”可以拥有相同的帐户,对吗?在这种情况下,您的方法是正确的,因为您通过创建映射表account contact Link TableRight!解决了account和contact table之间的多对多关系!,所以这里最好的方法是联系人链接表使用FKs引用ID,对吗?是的,这是正确的方法。您的帐户联系人链接表将保存帐户和联系人表之间的所有关系。如果你设计了一个ER图,它很容易在ER图中看到