我想知道将一个表中的一行与另一个表中的多行相关联的最佳做法。
假设我有以下两个表:
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行来建立多对多的关系?
有更好/更聪明的方法吗?
答案 0 :(得分:0)
我就是这样做的。我已经搜索了很长时间,有一个匹配表是最好的方法。由于匹配表仅使用整数,因此不会占用太多空间。我想说这是最好的做法。