3

在以下數據庫設計中,如何標記未讀消息,以便我們知道誰讀取了發件人和收件人的消息? (即當人X向人Y發送消息時,該消息將被標記爲人Y的未讀,直到人Y讀取該消息,但由於他發送該消息而被標記爲人X的讀取)。用於內部消息傳送的數據庫設計(如facebook消息)

消息

  • ID(PK)
  • 主題
  • 內容
  • MessageTypeId(FK) - 消息,更新(全球董事會鑄),通知等
  • 用戶ID( FK) - 創作者
  • CreateDate
  • ReadDate

MESSAGE_COMMENT

  • ID(PK)
  • 的MessageId(FK)
  • 內容
  • 用戶ID(FK) - 創建者
  • CreatedDate

用戶

  • 名字
  • 用戶名
  • 密碼
  • IsActive
  • 等...等...

MESSAGE_TYPE

  • 編號
  • 代碼
  • 名稱

編輯:好像設計是不完整的。

+1

您可以在設計中添加表格/列,還是隻需要在此處解決問題? – 2011-05-15 11:04:49

+0

可以更改現有的或添加額外的表/列。 – 001 2011-05-15 11:10:00

+0

您可以更新問題並添加表User'和'Type'的結構,即UserId和TypedId引用。 – 2011-05-15 11:20:31

回答

1

您可以添加一個鏈接用戶ID和消息ID的Read表。當消息被創建時,應用程序會自動放入創建者的UserID和MessageID。然後,當接收者讀取消息時,它會記錄ReceiverID和MessageId。

因此,雖然ReceiverID和MessageID沒有記錄,但該消息對於接收方而言將顯​​示爲未讀。

+0

消息評論(響應)怎麼辦? – 001 2011-05-15 11:36:55

+0

多收件人怎麼辦? – 001 2011-05-15 11:39:08

+0

上述解決方案適用於多個收件人 - 仍然只有一個發件人,並且每個收件人都會遵循相同的邏輯,所以實際上不需要將其視爲不同的問題。 – Arj 2011-05-15 11:41:33