2012-07-11 100 views
0

我正在爲學校開發一個PHP的twitter克隆版,我有一個主要問題。我找不到實現跟隨者系統的方法。有一張供用戶使用的表格,我想添加一個保存每個用戶關注的所有用戶的ID的字段。類似Twitter的系統

我是否應該用逗號分隔id,然後在PHP中將它們分開?然後,我需要從推文表中選擇所有推文,這些推文是由任何用戶關注者推送的。有沒有我可以使用的SQL命令?同樣的事情也給

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

但如果$followeduser是多個ID。

回答

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 

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

1

建立連接表。

把所有的ID放在列表中是不是標準化的方式,並且可能導致許多問題。

0

之間有加入一個關係表,其中有一列叫做用戶,另一列是關注的。所以如果用戶1跟隨用戶3和5,那麼你將有一個主體,其中用戶= 1之後= 3和用戶= 1之後= 5(使用任何你想要的ID)。您還可以在您的Tweets表格中存儲所有推文。你要做一個連接兩個表的查詢

+0

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