我已經自己創建了一個網站,允許用戶互相添加朋友並對彼此發表評論。看着這個之後,我不確定如何開始。我有一個帖子和一個用戶表。創建一個SQL朋友表來存儲
我的問題是如何將數據庫與 聯繫起來1.檢查用戶A是否向用戶B發送了好友請求? 2.存儲一個值表明他們是朋友?
我在發佈之前瀏覽過此網站,但似乎無法理解如何執行此操作。很確定我只是在複雜化。任何人都可以解釋這個概念或者它是如何工作
我已經自己創建了一個網站,允許用戶互相添加朋友並對彼此發表評論。看着這個之後,我不確定如何開始。我有一個帖子和一個用戶表。創建一個SQL朋友表來存儲
我的問題是如何將數據庫與 聯繫起來1.檢查用戶A是否向用戶B發送了好友請求? 2.存儲一個值表明他們是朋友?
我在發佈之前瀏覽過此網站,但似乎無法理解如何執行此操作。很確定我只是在複雜化。任何人都可以解釋這個概念或者它是如何工作
這可以通過關係數據庫來完成,值得關注關係數據庫是如何工作的。 https://www.youtube.com/watch?v=NvrpuBAMddw
但是 - 給一些指針,它看起來像尤爾希望你的關係型數據庫,允許以下功能:
1)讓我們開始與「好友請求」部分。
這需要您有a)不同用戶的全部負載,以及b)這些用戶之間的關係負載。
你需要表示,在2頁不同的表 - 所以創建一個users
表具有以下字段:
UserID, name, age, [details, password, address etc etc]
然後friends
表具有以下字段:
friendID, userID1, userID2, [date, confirmed]
您的用戶表可能如下所示:
UserID, name, age,
1 Fred 18
2 George 24
3 Michael 20
4 Alice 24
5 Sophie 20
6 George 19
讓' 。比如說,邁克爾想成爲朋友Alice和弗雷德,愛麗絲要交好蘇菲 - 你想創建你的朋友表中記錄的是這個樣子:
FriendID, userID1, userID2,
1 3 (this refers to Michael) 4 (this refers to Alice)
2 3 (this refers to Michael) 1 (this refers to Fred)
3 4 (this refers to Alice) 5 (this refers to Sophie)
所以,如果你再看着邁克爾的朋友 - 你會做哪些看了查詢:
every record from the friend table where userID1 = Michael's userID.
From the userID2 field, you'd get userID 4 and userID 1
By looking up those userids in the user table, you'd find more details for Alice and Fred.
你應該把這個查詢檢查是否userID1 OR userid2 =你所需要的,讓你得到,例如如果相同的結果的用戶標識表看上去有些不同:
FriendID, userID1, userID2,
1 3 (this refers to Michael) 4 (this refers to Alice)
2 1 (this refers to Fred) 3 (this refers to Michael)
3 4 (this refers to Alice) 5 (this refers to Sophie)
Otherwise you'd only know about Alice.. but you want to know about Fred too.
2)如果您想確認的關係,你可以一個「確認」字段添加到好友表 - 將其設置爲二進制0 =沒有確認/ 1 =證實。
當請求的友誼,你的記錄添加到表,但是當它被證實了,你會更新「證實」該記錄的字段1
讓我們相應地更新我們的朋友表:
FriendID, userID1, userID2, confirmed
1 3 (Michael) 4 (Alice) 0
2 3 (Michael) 1 (Fred) 1
3 4 (Alice) 5 (Sophie) 1
如果你想看到正在等待邁克爾的接受所有的朋友,你會搜索:
any records from the friends table where userid1 = 3
AND confirmed = 0 ... which means it hasn't been accepted yet.
這將表明愛麗絲至今還沒有一個由邁克爾接受爲朋友。
如果你想看到用戶已請求但尚未被接受,你會尋找所有的朋友:
any records from the friends table where userid2 = the user you're looking for
AND confirmed = 0 ... which means it hasn't been accepted yet.
如果你想看到所有接受的好友,開關「確認」 1 。
3)您也想爲每一個用戶的帖子......所以你需要一個posts
表的字段:
postid, userid, date, content
我們已經得到了你的用戶表,所以讓說邁克爾想要發佈一些東西。帖子表可能如下所示:
postid, userid, date content
1 3 (Michael) [auto datetime] Hi everyone
2 3 (Michael) [auto datetime] This is my second post
您現在已經在Michael和帖子表之間建立了關係。如果另一個用戶發佈了一些內容,他們會添加另一個不同用戶標識的行。然後,您可以從posts表中使用userid = 3(這是Michael的用戶標識)檢索所有帖子。
4)增加關於員額的評論,你會需要一個意見表可能看起來像這樣的:
commentid, postid, userid content
1 1 3 (Michael) Michael is commenting on his own first post...
2 2 4 (Alice) Alice is saying something on Michael's second post
感謝您的深入答覆。這個回覆正是我所期待的。對不起,如果問題太廣泛。我有時很難解釋。 – user3624810 2014-11-24 03:10:36
如果你想查找蘇菲的朋友,該怎麼辦?你的sql在返回時不會返回任何東西4 – anonymouse 2016-03-16 13:15:31
謝謝你指出。我編輯了答案。 – Simeon 2016-03-16 16:51:23