类似Twitter的系统

问题描述:

我正在为学校开发一个PHP的twitter克隆版,我有一个主要问题。我找不到实现跟随者系统的方法。有一张供用户使用的表格,我想添加一个保存每个用户关注的所有用户的ID的字段。类似Twitter的系统

我是否应该用逗号分隔id,然后在PHP中将它们分开?然后,我需要从推文表中选择所有推文,这些推文是由任何用户关注者推送的。有没有我可以使用的SQL命令?同样的事情也给

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

但如果$followeduser是多个ID。

有一个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 

Store中第一列中的用户名和存储谁在遵循此用户的用户ID 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都有一个跟随者,这是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 
+0

所以,如果我做一些像“SELECT FOLLOWER_ID FROM USER_FOLLOWERS WHERE USER_ID =”$ currentuser“我将得到一个所有跟随者ID的数组。每个id的所有推文?我会使用for循环吗? – 2012-07-11 14:04:11

+0

@ user1460022看到我更新的答案。您还需要加入推特表 – Shyju 2012-07-11 14:05:42

建立连接表。

把所有的ID放在列表中是不是标准化的方式,并且可能导致许多问题。

之间有加入一个关系表,其中有一列叫做用户,另一列是关注的。所以如果用户1跟随用户3和5,那么你将有一个主体,其中用户= 1之后= 3和用户= 1之后= 5(使用任何你想要的ID)。您还可以在您的Tweets表格中存储所有推文。你要做一个连接两个表的查询

+0

@Shyju刚刚更新了他的说法 – sunrize920 2012-07-11 14:07:51