4

私はソーシャル ネットワーク アプリに取り組んでおり、アクティビティ フィードを作成して、人々がすべての接続 (従来の 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 ステートメントはありますか?

ありがとう。

4

1 に答える 1