簡體   English   中英

用戶消息系統

[英]User messaging system

我正在尋找創建一個用戶消息傳遞系統(類似於Facebook)。

我想知道的本質是表結構應該是什么樣的? 我的要求如下:

  • 用戶之間交換消息-發件人可以選擇多個用戶向其發送消息。

  • 消息以線程樣式的布局顯示,即1-1對話。 即,每個收件人的答復將出現在其自己的線程中。

  • 個別消息無法刪除,但是可以刪除線程。 刪除線程不會刪除任何消息,只會從用戶的收件箱中刪除該線程。 但是,如果其他用戶尚未從收件箱中刪除該線程,則仍然可以訪問該線程。

這是我目前所擁有的:

Table messages
==============
id (PK)
user_id (from)
subject
body
sent_at


Table message_recipients
========================
message_id (PK)
user_id (PK)
read_status

編輯:關於以下內容:

Table messages
==============
id (PK)
thread_id   
user_id (from)
body
sent_at


Table threads
=============
id (PK)
user_id (from)
subject


Table thread_recipients
=======================
thread_id (PK)
user_id (PK)
read_status
sender_deleted
recipient_deleted

我建議至少具有以下幾點:

用戶,線程,消息

  • 所有消息都有一個線程
    • 外鍵:thread_id
  • 所有線程將至少具有一條消息和至少一個收件人(以及發件人)
    • 外鍵:to_user_id,from_user_id,message_id

從那里,您可以簡單地為線程分配幾個標志(to_user_deleted,from_user_deleted),這些標志將相應地更新。

當然,還有很多事情要考慮,例如您要考慮哪種事情。 例如:

  • 您要顯示當前消息而不是起始消息嗎?
  • 您要允許用戶將單個消息標記為已讀還是僅標記為線程?

在設計數據庫時,您需要考慮所有這些因素。

為什么不使用Jabber之類的東西(例如: OpenFireWeb Client

如果您需要PHP與之交互,則可以使用以下方法:

http://code.google.com/p/xmpphp/http://code.google.com/p/jaxl/

@Angelo R.想知道為什么我們需要線程表? 這不是討論區。 如果要檢索消息的整個主題/會話,則只需按源和收件人ID進行查詢。 另外,如果您使用Thread,也不錯。 但是在這種情況下,如果出現新消息-新的thread_id(自動創建),如果回復到現有對話,則您具有thread_id,但是如果要創建新消息(例如facebook popup),您將不知道是否存在是以前的任何對話,或者thread_id是否可用,除非您對其執行特殊查詢。 這是我的想法。 告訴我在某處是否有錯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM