我正在试图找出在MySQL中表示这一点的最佳方法。我有两个表:clients
和accounts
。任何client
都可以“拥有”零,一个或多个accounts
。两个不同的clients
可能拥有相同的account
。因此,client
有许多accounts
,反之亦然。
所以我目前的计划是clients
表格中有一个字段accounts
,其中包含逗号分隔的account
id
列表。这非常有效。
但是有一个单独的表格(例如client_accounts
),有两个字段client_id
和account_id
会更有意义吗?
这适用于永远不会有数百万行的数据库,因此效率不是一个重要因素。
答案 0 :(得分:1)
是的,如果你想保持你的数据库完整性,任何关系为n:n(多对多)或1:n的表都应该使用一个额外的表来链接它们。
答案 1 :(得分:0)
但是有一个单独的表格(例如
更合理吗?client_accounts
),包含两个字段client_id
和account_id
这是你应该这样做的确切方式。这样,您可以更好地利用索引并获得更快的连接。一旦你需要在这个表中两列的组合上的UNIQUE不重复数据,你也会保存一些数据安全的efford:
/* ... */ ADD idx_pair UNIQUE(client_id,account_id)