2011-10-26 56 views
0

我想知道如何最好地爲我的朋友系統佈局我的數據庫?我要像這樣做,朋友系統php和mysql的查詢?

id (int) | friendID (int) | accepted (enum) 

這是如何,我認爲它應該做的,只有一個問題:

  1. 一旦確認請求我應該改變當前行枚舉用戶爲是,然後爲確認它的用戶插入另一行?即;

    1 | 4 | yes 
    4 | 1 | yes 
    

還是有辦法,我可以拉從一個行的關係都沒有插入另一個?

ie;

1 | 4 | yes 

回答

1

在這種情況下,我覺得這是更好地爲每個朋友插入兩次,因爲空間是便宜,你可能會比讀他們較少添加好友。如果你想不過爲了節省空間,你可以改變你選擇朋友的方式:

select friendId from friends where id = $userId 

select friendId, id from friends where id=$userId or friendId=$userId 

然後在PHP端,你會檢查是否friendId或id是目前登錄用戶等。

+0

你是什麼意思保存空間? – MHowey

+1

我的意思是說,當你有一個朋友並插入兩次時,你的桌子就會長兩倍。這可以讓你必須有更快的閱讀查詢,因爲你不需要where子句中的'OR'。但是,如果您打算經常閱讀,則應該在friendId上添加索引,這也會佔用一些空間。 – uncreative