在 MySQL 中指定关系

Specifying relationships in MySQL

我正在尝试找出在 MySQL 中表示这一点的最佳方式。我有两个 table:clientsaccounts。任何 client 都可以 "own" 零个、一个或多个 accounts。两个不同的 clients 可能拥有相同的 account。所以一个 client 有很多 accounts,反之亦然。

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

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

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

是的,如果你想保持数据库的完整性,任何 n:n(多对多)或 1:n 关系的 table 应该使用额外的 table 链接了他们两个。

But would it make more sense to have a separate table (e.g. client_accounts), with two fields, client_id and account_id

这正是您应该执行此操作的方式。这样您就可以更好地利用索引并获得更快的连接。您还将在 data-secure 上节省一些精力,一旦您在此 table 中需要 两列组合 上的 UNIQUE 以不重复数据:

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