0

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

假设我有以下两个表:

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 行才能建立多对多关系?

有没有更好/更聪明的方法来做到这一点?

4

1 回答 1

0

我就是这样做的。我已经搜索了很长时间,并且有一个匹配表是最好的方法。因为匹配表只使用整数,所以它不会占用太多空间。我会说这是最好的做法。

于 2013-05-21T13:59:53.953 回答