2009-02-09 45 views
1

我想知道線程郵件系統的表結構。你將如何創建一個線程消息系統?

我想會有3個表:

- message_thread 
    - id 
    - subject 
- message_user 
    - thread_id 
    - user_id 
    - thread_status (unread, read, trash, deleted) 
- message 
    - date (date sent) 
    - sent_user_id 
    - message 

每個message_thread將在message_thread 1分的紀錄。每個用戶在message_user中都有一條記錄,將它們與該線程以及它們對該線程的讀取/刪除狀態相關聯。 (message_user也可能包含某些日期時間字段,表示發生不同狀態的時間。)消息表將包含消息,發送它們的用戶和時間。

該系統最終將工作類似於Facebook或看起來像Gmail的(雖然不是基於電子郵件)。

要求:

  • 超過2個用戶參與了螺紋
  • 每個用戶都必須有自己的讀取/刪除線程

狀態這是你設置的方式它呢?

回答

2

嘗試一個表:

messages 
    id (INT) 
    user_id (INT, ref to users table) 
    subject (CHAR) 
    parent_id (INT, ref to messages table, NULL if head of thread) 
    content (TEXT), 
    (other per-message attributes) 

允許線程,以及每個消息有它自己的主題。

要添加讀取狀態,請添加將用戶鏈接到消息的多對多表,其中表中的條目表示用戶閱讀該消息。

0

我會添加一個狀態記錄表user_id,thread_id,status_id和狀態改變的日期。

我也將消息和message_thread表組合起來,因爲它們看起來是1對1,可以組合。

+0

我不認爲message和message_thread是1到1,因爲超過1條消息鏈接到1個message_thread。 – idevelop 2009-02-09 01:12:38

相關問題