私はソーシャル ネットワーク アプリに取り組んでおり、アクティビティ フィードを作成して、人々がすべての接続 (従来の Facebook ストリーム) を最新の状態に保つことができるようにしたいと考えています。activity
私はセットアップと呼ばれるDBテーブルを次のように持っています:
activity_id (int)
user_id (int) //who posted it
group_id (int) //the group of connections that have permission to view
type (enum) //the type of activity performed
time (datetime) //the time the activity was performed
次にselect * from activity where user_id in (connections)
、最新のニュースを入手するために を実行します。
これがキャッチです。ユーザーのアクティビティは、接続の完全なセットを常に可視化できるわけではありません。ユーザーは、ユーザー ID のグループを作成して、接続のスーパー セット内で小さなセットを形成できます。これは、Facebook で、特定の投稿をすべての友人に表示するのではなく、誰が表示するかを指定できるようにする方法と似ています。
groups
次のスキーマを使用して別のテーブルをセットアップしています。
group_id (int)
connection_id (user_id, int)
user_id (group creator)
アクティビティ テーブルに group_id があります。group_id は、投稿を表示する権限を持つ接続のサブセットへのリンクです。
私の質問は、このタイプのフィードを実行するための最良の方法は何ですか? また、必要な出力 (表示する許可を与えられた接続アクティビティのリスト) を取得する最適な単一の select ステートメントはありますか?
ありがとう。