6

あるプロジェクトで目覚めているのですが、フォロワーとツイッターのようなフォローシステムについて考えています。データベースにメンバーテーブルがあります。フォロワーシステムを作成するにはどうすればよいですか。ロジックは何ですか。次のような作業を行いました。新しいテーブルを作成しました。名前は次のとおりで、3つの行があります。これらの行はid、user_id、follower_idです。それで十分ですか?このシステムをどのように実行できるかわかりませんか?手伝って頂けますか?

4

4 に答える 4

5

「フォロー」(または「フォロー」)は、テーブルが反映する2つのユーザーエンティティ間の関係です。

これは、同じユーザー間で複数のフォローとフォロー解除を別々のエントリとして扱うことを計画していない限り、を必要としないことを意味しますid

とをuser_idfollower_id参照userし、FOREIGN KEYそれらを両方とも複合主キーにし、インデックスを作成しますfollower_id(ユーザーのリストをすばやく取得するには):

CREATE TABLE
        follows
        (
        user_id INT NOT NULL REFERENCES user (id),
        follower_id INT NOT NULL REFERENCES user (id),
        PRIMARY KEY
                (user_id, follower_id)
        KEY follower_id (follower_id)
        )
ENGINE=InnoDB -- if you want the foreign keys to work

他の属性を追加することもできます。

同じユーザー間のフォローとフォロー解除を追跡する場合は、これをエンティティに昇格させ、代理の主キーを追加する必要があります。

CREATE TABLE
        follows
        (
        id INT NOT NULL PRIMARY KEY,
        user_id INT NOT NULL REFERENCES user (id),
        follower_id INT NOT NULL REFERENCES user (id),

        -- These are additional attributes

        follows_from DATETIME NOT NULL,
        follows_till DATETIME,

        --

        KEY follower_id (follower_id),
        KEY user_id (user_id)
        )
ENGINE=InnoDB -- if you want the foreign keys to work
于 2012-04-23T19:19:57.753 に答える
5

はい、そのデザインは、Twitterのような単純なフォローシステムには十分です。もちろん、いくつかの追加データ(@Inaによって提案されたタイムスタンプなど)が役立つ可能性があり、厳密にはそのid中には必要ありません。

私は次のようなものをお勧めします:

userID INT PRIMARY,
followID INT PRIMARY,
creationTime DATETIME
于 2012-04-23T19:21:35.107 に答える
1

ユーザーがログインするサイトが既にあると仮定すると、'friend1' と 'friend2' (友情が双方向の関係であると仮定) または 'leader' と 'follower' のいずれかの 2 つの列を持つテーブルをデータベースに追加する必要があります。 (サブスクリプションの一方向の関係の場合)。次に、friend1 と friend2 を入力として (たとえば、POST または GET 変数として) 受け取り、そのペアをデータベースに入力する短い PHP スクリプトが必要になります。最後に、その PHP スクリプトに対して AJAX 呼び出しを行うボタン、またはその PHP スクリプトをターゲットとする HTML フォームの一部であるボタンを Web サイトに追加します。

于 2016-07-20T00:14:37.450 に答える
0

のエンティティが 1 つあると仮定すると、からへPeopleの多対多の関係を作成する必要があります。関連テーブルには、 と の 2 つの列があります。 PeoplePeoplePeopleIDFollowing

ユーザーのフォロワーを見つけるには、列でそのユーザーの ID を検索しFollowingます。ユーザーがフォローしているユーザーを一覧表示するには、列を検索しPeopleIDます。

于 2012-04-23T19:18:35.727 に答える