2014-04-11 38 views
0

我正在開發像Facebook這樣的社交網絡,但它的具體特點是可以加入的用戶。無論如何,我必須爲每個用戶發佈內容的Facebook風格牆。 (我只是在發佈文本,照片和視頻即將到來的第一步)。用於在朋友之間分享內容的mysql設計

現在用戶應該有能力定義與誰共享帖子,'朋友''所有''只是我'。

每個用戶可以屬於一個也有自己的牆與帖子的研究所。該研究所還應該能夠與用戶羣體分享職位。

所以我的問題:

我該如何設計這個工作的MySQL表?

我有的是:

  • 用戶表:user_id,...
  • 朋友表:iduser_idfriend_idstatus
  • 職位表:post_iduser_idpost_titlepost_contentpost_date
  • 評論表:comment_iduser_idpost_idcomment_textcomment_date

回答

0

有幾種方法可以做到這一點。一個簡單的方法是創建一個定義什麼知名度的類型,你可以爲每個崗位表:

CREATE TABLE PostVisibilityType 
(
    visibility_id, //primary key 
    visibility_type // friend, all, private etc... 
) 

更新後的表的模式有一個visibility_id這將表明這個職位有什麼類型的可見性,即「朋友只」,‘專用’等

posts table: post_id, user_id, visibility_id,... 

對於機構,你需要先建立一個表來定義的組,讓一個用戶組的表,並指定該表的用戶表的ID,這樣你就可以標籤是用戶所屬的組。對於這些機構,您可以擁有一個名爲「Group」的可見性類型,只允許該組中的用戶查看帖子。

當用戶登錄並希望查看屬於用戶X的帖子時,您必須選擇與該帖子關聯的ID並確定可見性。如果它是私密的,則阻止。如果是朋友,請確定是否已登錄用戶是朋友。如果'全部',允許看到。

您可能要考慮的另一件事是使用像Neo4j這樣的圖形數據庫。他們可以很容易地指定這些類型的關係/關聯。