0

あるテーブルの 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行が必要ですか?

これを行うためのより良い/よりスマートな方法はありますか?

4

1 に答える 1

0

これが私のやり方です。私は長い間検索してきましたが、マッチ テーブルを用意するのが最善の方法です。マッチ テーブルは int のみを使用するため、スペースをあまり取りません。これがベストプラクティスだと言えます。

于 2013-05-21T13:59:53.953 に答える