2013-03-04 78 views
0

我正在開發一個類似Facebook的社交網站。我很困惑如何創建通知表的結構。是否應該爲每個用戶單獨使用還是爲所有用戶使用一個巨大的 - 哪些地方經常添加和刪除記錄?用於社交網站的表格等通知的數據庫表結構

+0

我已經建立信息和個人資料和照片等,桌到現在。但我對通知感到困惑。看到我認爲它有兩種方式 - 1.每個用戶的小通知表和一張存放所有通知的巨大表格。例如。 Not_a11(id,notf_id)。通知_master(notf_id,memid,notif_text,dttime)。這樣我就會一直更新兩張表。每當用戶登錄他的桌子時都會被引用,並顯示通知。你說什麼 – phpDevlpr 2013-03-04 04:52:45

+0

有人回覆? – phpDevlpr 2013-03-04 10:38:46

回答

2

我有同樣的問題,因爲你和經研究發現這個(found this)這裏給出的表結構是:

id    
user_id  (int) 
activity_type (tinyint) 
source_id  (int) 
parent_id  (int) 
parent_type (tinyint) 
time   (datetime but a smaller type like int would be better) 

其中:

ACTIVITY_TYPE告訴我活動的類型,SOURCE_ID告訴我活動相關的記錄。所以如果活動類型的意思是「添加最喜歡的」,那麼我知道source_id是指最喜歡記錄的ID。

parent_id/parent_type對我的應用程序很有用 - 他們告訴我該活動與什麼有關。如果一本書收藏,然後PARENT_ID/PARENT_TYPE會告訴我該活動涉及到一本書(型)具有給定主鍵(id)

I指數在(USER_ID,時間)和查詢活動是user_id IN(...朋友...)和時間>一些截點。開出id並選擇不同的聚集索引可能是一個好主意 - 我還沒有嘗試過。

很基本的東西,但它的工作原理很簡單,而且隨着需求的變化很容易處理。另外,如果你不使用MySQL,你可能可以做更好的索引。

它還建議那裏使用Redis更快地訪問最近的活動。 隨着Redis的中拌勻,它可能工作是這樣的:

  • 創建你的MySQL活動記錄
  • 對於用戶的每一個朋友,誰創建活動,推動ID到在Redis的他們的活動列表。
  • 調整每個列表中的最後一個X項目

Redis的是快速和跨越一個連接提供了一種管道命令 - 所以推的活動了1000個朋友需要毫秒。

對於什麼,我說什麼,看到Redis的Twitter的例子更詳細的解釋:http://code.google.com/p/redis/wiki/TwitterAlikeExample

我希望這可以幫助你也

+0

僅給出鏈接參考作爲答案並不好。如果鏈接被更改/更新/編輯/刪除,答案將自動失效。所以總是試着解釋答案,然後給出一個參考。 – Sankumarsingh 2013-08-20 09:59:15

+0

謝謝,將編輯這一個 – YXN 2013-08-20 10:01:44