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