类似Twitter的系统

时间:2012-07-11 13:55:09

标签: php mysql twitter

我正在学习PHP的推文克隆,我有一个主要问题。我找不到实现跟随系统的方法。有一个用户表,我想添加一个字段,其中包含每个用户遵循的所有用户的ID。

我应该用逗号分隔ID,然后在PHP中拆分它们吗?然后我需要从推文表中选择所有推文,这些推文都是由任何用户关注者发布的。是否有可以使用的SQL命令?类似于

的东西
SELECT *
FROM tweets 
WHERE author='$followeduser'"

$followeduser是多个ID。

3 个答案:

答案 0 :(得分: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,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

答案 1 :(得分:1)

制作联接表。

将所有ID放在列表中不是规范化方式,可能会导致很多问题。

答案 2 :(得分:0)

有一个关系表,其中有一列名为user,第二列是跟随的。因此,如果用户1跟随用户3和5,那么你将有一个主菜,其中user = 1跟随= 3并且user = 1跟随= 5(使用你想要的任何ID)。你也有你的推文表,你存储所有的推文。您将要创建一个连接两个表的查询