2013-12-12 26 views
0

我正在建立一個朋友/好友系統,其中一個用戶可以發送好友請求,接受,拒絕或阻止某人。什麼應該是朋友/好友系統的數據庫結構

起初我是用一個簡單的兩列的表:

user (BIGINT) 
friend (BIGINT) 

的想法是,如果user1有一個朋友user2然後會有兩排,其中在其中user1之一將是user2的朋友,而在另一排中,恰恰相反,這意味着他們是共同的朋友。另一方面,如果只有一個這樣的行,這意味着,另一個用戶還沒有接受作爲朋友的用戶。

但是,這種結構似乎不處理rejectedblocked狀態,所以我想知道什麼是更好的數據庫結構。有任何想法嗎?

回答

2

我將具有以下結構:

User 
id name 

Status 
id name 

Frienship 
idUser idUserFriend idStatus 
    ^Fk to user    ^fk to status 
       ^FK to user 

這種模式會處理你的問題就好了。