2010-12-08 52 views
0

我有這樣一個簡單的表,想到創建一個數據庫基地電子郵件系統, 這是最好的方法?什麼是數據庫基礎電子郵件系統的良好數據庫設計?

TABLE `message` 
     - id 
     - parent_id 
     - message 
     - subject 
     - created_on 
     - is_draft 
     - sender_profile_id  


TABLE `email_message` 
     - id 
     - is_read 
     - is_deleted 
     - message_id 
     - profile_id 

殼體1:輪廓A將電子郵件發送到配置文件B, 和B回覆背面(一對一 通信)

INSERT INTO `message` (`id`, `parent_id`, `message`, `subject`, `created_on`, `is_draft`, `sender_profile_id`) VALUES 
(1, 0, 'Hi what''s up how are u', 'Hi', '2010-12-08 11:27:54', 0, 1), 
(2, 1, 'yeah i am gud', 0, '2010-12-08 11:28:19', 0, 2); 

INSERT INTO `email_message` (`id`, `is_read`, `is_deleted`, `message_id`, `profile_id`) VALUES 
(1, 1, 0, 1, 2), 
(2, 1, 0, 2, 1); 

殼體2:

- 配置文件阿將電子郵件發送到配置文件B,C,D。

-P配置文件B全部重新轉換爲整個組。

-A再次回答整個組。

-C回覆僅有A

INSERT INTO `message` (`id`, `parent_id`, `message`, `subject`, `created_on`, `is_draft`, `receiver_profile_id`) VALUES 
(3, 0, 'Hi what''s up how are u', 'Hi', '2010-12-08 11:27:54', 0, 1), 
(4, 3, 'yeah i am gud.', 0, '2010-12-08 11:28:19', 0, 2), 
(5, 3, 'why are u gud?', 0, '2010-12-08 11:28:19', 0, 1), 
(6, 3, 'what?', 0, '2010-12-08 11:28:19', 0, 3); 

INSERT INTO `email_message` (`id`, `is_read`, `is_deleted`, `message_id`, `profile_id`) VALUES 
(3, 1, 0, 3, 2), 
(4, 0, 0, 3, 3), 
(5, 0, 0, 3, 4),   

(6, 0, 0, 4, 1), 
(7, 0, 0, 4, 3), 
(8, 0, 0, 4, 4), 

(3, 0, 0, 5, 2), 
(4, 0, 0, 5, 3), 
(5, 0, 0, 5, 4), 

(6, 0, 0, 6, 1); 

回答

1

我覺得自己像一個表將是一個容易得多impliment:

表信息 - 的MessageId(GUID) - 的ParentId(GUID) - 主題 - 消息 - 要 - 發件人 - CreatedOn - isDraft - 請將isDeleted - isRead

如果您發送電子郵件到一組,只需創建不同的多個記錄「到」項

+0

也,我假設你想要一些已刪除的郵件文件夾? (因此isDeleted標誌的原因,否則,只是刪除記錄並完成)。如果你這樣做,你可能需要考慮刪除文件夾時的策略 - 如果它是「超過5天前刪除的郵件」,那麼你需要跟蹤刪除的日期。但我認爲你可能會用「超過30天的消息」之類的東西,在這種情況下,createdOn日期就足夠了。 – Prescott 2010-12-08 07:20:07