跨表关联多行的最佳方法

时间:2013-05-21 13:55:57

标签: mysql

我想知道将一个表中的一行与另一个表中的多行相关联的最佳做法。

假设我有以下两个表:

table_users
id    | username
------------------------------------------------------------------------
1     | user1
2     | user2
3     | user3

table_texts
id    | text
------------------------------------------------------------------------
1     | This is a secret text, that only user2 and user3 should see.

现在我唯一的解决方案是创建第三个表:

table_user_text_relation
id    | text_id    | user_id
------------------------------------------------------------------------
1     | 1          | 2
2     | 1          | 3

然后选择如下:

SELECT
    table_texts.text 

FROM
    table_users, table_texts, table_user_text_relation

WHERE
    table_users.id = table_user_text_relation.user_id
    AND
    table_texts.id = table_user_text_relation.text_id

这很好......但是,如果我有6000个用户,每个用户可以访问500个文本,那么table_user_text_relation必须有3.000.000行来建立多对多的关系?

有更好/更聪明的方法吗?

1 个答案:

答案 0 :(得分:0)

我就是这样做的。我已经搜索了很长时间,有一个匹配表是最好的方法。由于匹配表仅使用整数,因此不会占用太多空间。我想说这是最好的做法。