2012-01-12 34 views
0

我有一個私人消息系統使用PHP和mySQL的通知。通知計數在未讀私人消息回覆

數據庫表具有以下字段(不是所有列出)--- message_tbl:

MessageID 
senderUserID 
RecUserID 
Message 
Subject 
DateTime 
Status - whether read or not i.e 0/1 

所有答覆被存儲在第二表中,因爲每個消息創建一個線程。父消息中存在一個線程,因此每次加載父消息時,其所有的回覆也會加載它。 第二個表看起來有點像這樣: - replies_tbl

messageID - FK 
senderUserID 
rstatus - how should i use this? 
Mesage 
DateTime 

我需要顯示所有的未讀郵件數。 目前我運行一個SQL計數函數來獲取來自message_tbl的總未讀消息,其狀態爲0,userid等於RecUserID,簡單的部分。

但我有一個小問題是如何獲得計數的答覆表?數據庫設計是否可以改進?

謝謝你們。

回答

1

正如我所見,答覆本身就是一個信息,爲什麼它會進入一個單獨的表格。回覆回覆會發生什麼?看起來你在這一點上會有一個空的FK。

我首先想到的是:

  • 添加PARENTID列信息表
  • 設置PARENTID爲0根的消息
  • 設置PARENTID到MessagesID如果它是一個答覆

隨着該結構,你可以很容易地跟蹤答覆的答覆和線程可以繼續深入你想要它...

只是我的想法,雖然...

+0

是的,你確實是正確的,但在這種情況下,我將如何獲得所選消息的所有答覆? – TheDeveloper 2012-01-12 20:17:55

+0

如果你有消息ID(比如存儲在變量'$ message_id'中):'SELECT * WHERE parentID ='$ message_id'' – keithhatfield 2012-01-12 20:22:53

+0

d'oh that that sense。另一個問題是,如果想在收件箱中顯示消息而不是回覆,您是否會從messagetbl中選擇主題,其中RecUserID = $ userid和parentID = 0「我是否正確? – TheDeveloper 2012-01-12 20:40:26