あるテーブルの 1 つの行を別のテーブルの複数の行に関連付けるベスト プラクティスを知りたいです。
次の 2 つのテーブルがあるとします。
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.
今、私の唯一の解決策は、3 番目のテーブルを作成することです。
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
それは問題ありません...しかし、それぞれが500のテキストにアクセスできる6000人のユーザーがいる場合、多対多の関係を確立するには、table_user_text_relationに3.000.000行が必要ですか?
これを行うためのより良い/よりスマートな方法はありますか?