1

タイトルのとおり、コンテンツ リストを持っているが、誰もがそれらを見ることができない場合。例: グループ 1 とグループ 2 があり、投稿を作成すると、グループ 1 のユーザーのみが投稿を表示できます。別の投稿を作成すると、グループ 2 のユーザーのみが表示されます。

ユーザー 1 はグループ 1、ユーザー 2 はグループ 2 です。次に、ユーザー 1 が最新のコンテンツ リストを見ると、投稿 1 しか見ることができません。次に、ユーザー user 2 が最新のコンテンツ リストを見ると、投稿しか見ることができません。 2.

ご覧のとおり、アカウント (ユーザー) が異なれば、投稿リストに別の投稿が表示されます。すべての投稿を 1 つのテーブルに格納し、そこに group_id を格納するため、ユーザーの最新の投稿リストを作成するときに、すべての最新の投稿を検索し、ユーザーがそれを見ることができるかどうかを 1 つずつ確認する必要があります。許可を得ていない投稿が多すぎると、パフォーマンスが非常に悪くなります。

また、グループは、次のような場合には静的ではありません: 私のフォロワー、私の友人、もしそうなら、私はまだユーザーIDを投稿テーブルに保存できず、それらの関係を計算して、彼/彼女がこれを読むことができるかどうかを判断する必要があります.投稿するかどうか。繰り返しになりますが、投稿には複数の権限を持つグループを含めることができます (私のフォロワーと友達はそれを見ることができます)。

どうすれば改善できますか?

ところで、投稿記録に user_id 配列を挿入しない理由は、おそらくグループ ユーザーの数が非常に多いため、group_id しか保存できないからです。

ところで、私は 1 つの SNS サイトを持っています。私はmongodbデータベースを使用しています。私はphpを使用しています。

4

1 に答える 1

1

ユーザーが承認すると、group_idセッション内のデータを保存します。次にgroup_id、メニューを生成するときにそれを使用して、データベース クエリの追加条件として、このグループに許可されている投稿のみを表示できるようにします。

ユーザーが承認されていない場合は、デフォルトgroup_id値を使用して投稿のみを表示し、全員が閲覧できるようにすることができます。

あなたが持っているような複雑な条件についてはUNION、mysql を持っている場合に使用することをお勧めしますが、単に複数のクエリを実行する必要があるようです。最初に、特定のユーザーがコンテンツ グループを使用できるようにする必要がある、考えられるさまざまな条件をすべて分離します。

たとえば、ユーザーが自分のグループ、友人、およびフォローしている人々のコンテンツのみを表示できる場合、3 つの要求 (グループのコンテンツ リスト、フォローしている人々の投稿、友人の投稿の取得) を実行し、そのデータを組み合わせることができます。 PHPで実行して出力します。すべてのデータは同じなので (あなたが言ったように - すべてposts表にある)、ここでは特別なものは必要ありません。たった 3 つのリクエストで、php 側で好きなように並べ替えるだけです。

于 2013-03-10T04:50:48.920 に答える