我想爲屬於單個用戶或用戶組的消息設計一個消息收件箱表模式。針對具有不同類別類型的討論系統的最佳數據庫設計?
比方說,我們有這些表已經:
- 用戶的UID表(PK)與GID(PK)
- 組表
- 與GID(FK)groups_association表和uid(FK)
那麼,什麼將是消息和消息後表的最佳設計,以滿足這些要求:
- 任何單個用戶可以消息的另一用戶
- 任何單個用戶可以消息多個用戶
- 任何單個用戶可以消息中的單個組的所有用戶(使用者的特定組中的數目可隨時間而改變) 你應該能夠查詢屬於特定用戶的所有郵件
我現在的想法,就如同:
- 設置三個表:
- 具有中級(PK)的消息,讓我們說的主題
- message_participants與mpmid(FK),mptype ENUM( '用戶', '組')和MPID的(FK 型)
- message_posts與msgmid(FK)參考消息表PK
- 要獲得的所有消息
- 得到所有組爲特定用戶 個
- 查詢message_participants WHERE(mptype = '用戶' AND MPID = UID)OR(mptype = '組' 和MPID IN(所有用戶組))
這種方式,你甚至可以將消息發送到個人用戶和羣體。
這是通常將如何處理這一類型的問題?
爲什麼消息屬於用戶組?爲什麼不復制郵件並將其發送給組中的每個成員?你的要求是否說明消息必須屬於一個組?只是好奇。 – 2009-09-09 17:25:56
好吧,如果我要向每個組成員發送單獨的消息,那麼如果該用戶回覆消息,則必須將其發送給組的所有成員,等等。因此,我在想,必須有一種更好的方式來存儲郵件的一個副本。 我相信你可以有另一臺連接個別職位有可能在該消息是否已讀或特定用戶刪除持有另一列用戶... – 2009-09-09 21:21:04