私は2つのテーブルを持っています:
threads (thread_id)
users (thread_id,user_id)
ユーザーは、他のユーザーをスレッドに招待することでスレッドを作成するため、複数のユーザーが同じスレッドに参加できます。ユーザーがまったく同じユーザー (重複したユーザー セット) を持つ新しいスレッドを作成できないようにしようとしています。誰かがこれをテストするための簡単な SELECT ステートメントを持っていますか?
私は2つのテーブルを持っています:
threads (thread_id)
users (thread_id,user_id)
ユーザーは、他のユーザーをスレッドに招待することでスレッドを作成するため、複数のユーザーが同じスレッドに参加できます。ユーザーがまったく同じユーザー (重複したユーザー セット) を持つ新しいスレッドを作成できないようにしようとしています。誰かがこれをテストするための簡単な SELECT ステートメントを持っていますか?
ユーザー グループは動的であるため (つまり、ユーザーはいつでも他のユーザーをスレッドに招待できます)、新しいスレッドの検証を強制する強い理由はありません。要件の 1 つを放棄します。ユーザー グループを静的にする (つまり、新しいユーザーは作成時にグループ メンバーを定義する必要があります) か、ユーザーが必要なスレッドを作成できるようにします。スパムを防ぐために新しいスレッドに対する制限がある場合は、CAPTCHA (またはユーザーごとの 1 時間あたりの新しいスレッド数の制限) などの別のものを使用して、同じ目的を達成します。
誰かが新しいスレッドを開始しようとするたびに、データベースで複数の全テーブル スキャンを実行することになるため、両方の要件を満たそうとすると、SQL パフォーマンスの問題が発生します。また、いつでも 2 つのスレッドが同じユーザーを持つ状況になる可能性があります。たとえば、スレッド 1 にはユーザー A、B、C がいます。スレッド 2 にはユーザー A と B がいます。ユーザー B が C をスレッド 2 に招待するとどうなりますか?