各 Q&A ページに stackoverflow のようなコメント スレッドを作成したいと考えています。私が見ている問題は、各サブスクライバー (質問者、回答者、コメント者) に新しいコメントを通知して、それぞれがコメントを既読としてマークできるようにする方法です。
2 つの一般的な解決策があります。
- サブスクライバーごとに行を作成し、これらの行のすべてに実際のコメントを複製します。これにより、各サブスクライバーの各行のフィールドでコメントを既読としてマークできます (ページ上部の小さな赤い円からコメントを削除します)。
- コメントごとに1行しかありません。サブスクライバーは 1 つのフィールドにまとめられ、各サブスクライバーがコメントを既読としてマークしているかどうかを SELECT および UPDATE するための複雑なクエリが必要になります。
多分もっと良い方法がありますか?
これは、2番目のアプローチを示す一般的なスキーマであり、回答に参照するものを含めることができます。
Comments table
comment_id user_id question_id comment comment_read
1 1 1 good stuff yes=user_id=1, no=user_id=2, no=user_id=3
2 2 1 bad stuff yes=user_id=1, yes=user_id=2, no=user_id=3
3 3 1 worse stuff yes=user_id=1, yes=user_id=2, yes=user_id=3
4 4 2 good question ...
5 1 2 bad question ...