2012-02-07 111 views
0

我想創建一個與Twitters「follow」功能類似的功能,但想知道如何爲此類創建數據庫結構。假設我們有一個用戶表是這樣的:「follow」功能的數據庫結構與twitter類似嗎?

ID,用戶名

然後一個職位表看起來像這樣:

ID,用戶ID,發佈,日期

我想要做的就是讓用戶跟隨其他用戶,然後在流中獲取他們的帖子。所以我猜測應該有一張關注表。你可以在哪裏插入哪個用戶關注哪個用戶。但是,我如何查詢一個流呢?如果用戶1以下用戶2和3。我想做出這樣

SELECT posts FROM $peopleIfollow ORDER BY date 

查詢但是當你看到上面的例子是不是有效的查詢,我怎麼能收集「跟隨」信息和查詢的結果?或者更多我應該研究的結構是什麼來實現這個目標?追隨者應該放在一個數組中,並有可能在查詢中有一個數組?

+2

這是SQL中的多對多關係。有許多用戶關注許多用戶。網上有大量關於這方面的文獻,但基礎知識將是兩列表格。第一個是在第二列中關注用戶的用戶。然後要找出誰是用戶1,你會做類似SELECT follow_id FROM followTable WHERE user_id = user1;這將返回充滿用戶user1所關注用戶的用戶標識的行。 – thatidiotguy 2012-02-07 15:00:10

回答

2

,我能想到的快速和簡單的解決方案...

following(follower_id, following_id) 

然後你會得到的帖子像

SELECT * 
FROM post_table 
LEFT JOIN following 
    ON following.following_id = post_table.userid 
WHERE following.follower_id = ? 
LIMIT 0, 20; 

在哪裏?是當前用戶的ID。然後,這將加入表格,並拉動跟隨者所關注的人的帖子。您也可以按日期排列訂單。

這個SQL語句可以大大改進,但這是一個快速簡單的想法。