0

私は学校向けにPHPでTwitterクローンを作成していますが、大きな問題が1つあります。フォロワーシステムを実装する方法が見つかりません。ユーザー用のテーブルがあり、各ユーザーがフォローしているすべてのユーザーのIDを保持するフィールドを追加したいと思います。

IDをコンマで区切り、PHPで分割する必要がありますか?次に、ユーザーフォロワーのいずれかによってツイートされたツイートテーブルからすべてのツイートを選択する必要があります。使用できるSQLコマンドはありますか?に似たもの

SELECT *
FROM tweets 
WHERE author='$followeduser'"

しかし、$followeduser複数のIDはどこにありますか。

4

3 に答える 3

8

USER_MASTERこのようなテーブルを持っている

USER_ID (int)
USER_NAME(varchar(50))

USER_FOLLOWERSこのようなテーブルを作成します

USER_FOLLOWER_ID // Auto increment-Primary Key for this record
USER_ID (int)  // foriegn key to UserId column in USER_MASTER table
FOLLOWER_ID (int)  // foriegn key to UserId column in USER_MASTER table

UserIdを最初の列に格納し、このユーザーをフォローしているユーザーのUserIdを列に格納しFollower_IDます。

したがって、データは次のようになります

USER_ID    USER_NAME
--------------------------------------
1           SCOTT
2           JARED
3           MARC
4           ERIC

USER_FOLLOWER_ID    USER_ID   FOLLOWER_ID
--------------------------------------
1                    1          2
2                    1          3
3                    1          4
4                    2          1

つまり、ユーザースコットには、ジャレッド、マーク、エリックの3人のフォロワーがいます。ユーザーJAREDには1人のフォロワー、つまりSCOTTがいます

ユーザーのフォロワーのリストを取得するには(例:Scott(ID = 1))、これら2つのテーブル間で結合を実行できます

  SELECT U. USER_ID, U.USER_NAME From USER_MASTER U
  INNER JOIN USER_FOLLOWERS UF ON U.USER_ID=UF.FOLLOWER_ID
  WHERE UF.USER_ID=1  // 1 is the ID of SCott
于 2012-07-11T13:59:03.680 に答える
1

結合テーブルを作成します。

すべてのIDをリストに入れることは正規化された方法ではなく、多くの多くの問題を引き起こす可能性があります。

于 2012-07-11T13:58:41.370 に答える
0

userという1つの列と、それに続く2番目の列があるリレーションテーブルがあります。したがって、ユーザー1がユーザー3と5をフォローしている場合、ユーザー=1がフォロー=3、ユーザー=1がフォロー=5のエントリがあります(必要なIDを使用してください)。また、すべてのツイートを保存するツイートテーブルもあります。2つのテーブルを結合するクエリを作成する必要があります

于 2012-07-11T14:07:02.247 に答える