擴大對我的評論上面,因爲它得到羅嗦:
創建一個名爲像user_follows
與列的新表像
user_id1 | user_id2
或
follower_id | follows_id
然後你就可以查詢:
SELECT t1.username as follower_username, t3.username as following_usernae
FROM users t1
INNER JOIN user_follows t2 ON t1.user_id = t2.follower_id
INNER JOIN users t3 ON t2.following_id = t3.user_id
WHERE t1.user_id = <your user>
最後,將您的表格視爲「對象」。然後,當您遇到像「如何添加跟隨其他用戶的用戶」這樣的問題時,您可以確定此關係是新對象還是現有對象的屬性。由於用戶可能會關注多於一個其他用戶,但這種關係對於「用戶」來說不是一個好的屬性,所以它會得到自己的表user_follows
。
由於user_follows
是兩個用戶可能需要彼此,它可能是有意義的增加對象的範圍relationships
和關係型存儲爲表的屬性只是一個類型的關係:
user_id1 | user_id2 | relationship_type
其中relationships.relationship_type
可能有這樣的等follows, student of, sister
值...
因此,新的查詢會是這樣的:
SELECT t1.username as follower_username, t3.username as following_username
FROM users t1
INNER JOIN relationships t2 ON t1.user_id = t2.user_id1
INNER JOIN users t3 ON t2.user_id2 = t3.user_id
WHERE t1.user_id = <your user> AND t2.relationship_type = 'Follows';
創建一個名爲類似'user_follows'的新表,其中包含像'user_id1 | user_id2'或'follower_id |如果你想要更多的描述,或者如果你認爲你可能有更多的關係,除了「follow」之後,然後用'user_id1 | user_id2 |關係'在哪裏'relationship.relationship'可能有像'後面,學生,姐姐等'的價值... – JNevill
我忘了提及:我不知道用戶將遵循多少用戶,所以我不知道如果這是一個很好的解決方案,或者我還沒有明白答案。對不起,如果我不明白,我很難想象這 – mgul
@Jhun根據你的描述,JNevill的解決方案(在評論中)將是你最好的選擇。爲了擴展它,爲了得到用戶關注的用戶,你需要做一些類似'SELECT * FROM users WHERE user_id IN(SELECT user_id2 FROM user_follows WHERE user_id1 ='4')' –