0

我正在为学校使用 PHP 开发 Twitter 克隆,但我遇到了一个主要问题。我找不到实现追随者系统的方法。有一个用户表,我想添加一个字段来保存每个用户关注的所有用户的 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 存储在第一列,并将关注该用户的 User 的 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

所以这意味着,用户 Scott 有 3 个关注者,Jared、Marc 和 Eric。用户 JARED 有一个追随者,即 SCOTT

要获取用户的关注者列表(例如:Scott (ID=1)),您可以在这两个表之间进行连接

  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

有一个关系表,其中有一列称为用户,第二列在后面。因此,如果用户 1 关注用户 3 和 5,那么您将拥有一个主目录,其中用户 = 1 关注 = 3,用户 = 1 关注 = 5(使用您想要的任何 ID)。你也有你的推文表,你可以在其中存储所有推文。您将要进行一个连接两个表的查询

于 2012-07-11T14:07:02.247 回答