在MySQL中指定关系

时间:2016-01-22 22:52:29

标签: php mysql database relationship

我正在试图找出在MySQL中表示这一点的最佳方法。我有两个表:clientsaccounts。任何client都可以“拥有”零,一个或多个accounts。两个不同的clients可能拥有相同的account。因此,client有许多accounts,反之亦然。

所以我目前的计划是clients表格中有一个字段accounts,其中包含逗号分隔的account id列表。这非常有效。

但是有一个单独的表格(例如client_accounts),有两个字段client_idaccount_id会更有意义吗?

这适用于永远不会有数百万行的数据库,因此效率不是一个重要因素。

2 个答案:

答案 0 :(得分:1)

是的,如果你想保持你的数据库完整性,任何关系为n:n(多对多)或1:n的表都应该使用一个额外的表来链接它们。

答案 1 :(得分:0)

  

但是有一个单独的表格(例如client_accounts),包含两个字段client_idaccount_id

更合理吗?

这是你应该这样做的确切方式。这样,您可以更好地利用索引并获得更快的连接。一旦你需要在这个表中两列的组合上的UNIQUE不重复数据,你也会保存一些数据安全的efford:

/* ... */ ADD idx_pair UNIQUE(client_id,account_id)