2012-03-21 42 views
1

我正在用couchdb編寫一個社交網絡應用程序作爲後端。目前,我正在將用戶配置文件維護爲JSON文檔。在couchdb中建立freindship關係的最佳方式

我的應用程序有友誼功能,當一個用戶會要求其他用戶,並在接受友誼是隆重。除了友誼之外,還有一種稱爲「跟隨」關係的單向關係。

我想創建一個連接文檔

{ 
source_user:'', 
target_user:'', 
source_follows_target:'', 
target_follows_source:'', 
..Similarly for friendship... 
} 

這不右看看,我在所有的。由於兩個完全相似的實體(在這種情況下,用戶)之間存在關係,所以我不細化模型應該嘗試區分源和目標。

回答

1

關係可以是(或始終)對稱的事實並不意味着它必須被建模爲一個邏輯關係。我認爲可能更一般地模擬兩者之一的可能性,然後在你的應用程序中阻止單向友誼,如果你願意的話。

在這種情況下,對於每個用戶,您可能有一組他們認爲是他們的朋友的用戶(One - > Many)。您可以在這些關係對象的每一個上存儲一個副本(或緩存)是否對稱,以使其具有更大的可伸縮性。

的用戶對象的可能外觀粗糙例如:對這些用戶組

{ 
    "userId": 1, 
    "friends": [{"userId": 2, "friendsBack": true | false}, ...] 
} 

操作,例如交叉點(共同的朋友)將會變得更容易,因爲它們直接從用戶對象訪問。

+0

在這種情況下刪除友誼意味着2更新,我是對嗎?並與friendsBack您正在解決友誼請求功能。 ? – kilianc 2013-11-24 21:09:22

相關問題