2010-12-08 7 views
0

私はこれを念頭に置いてdbベースの電子メールシステムを作成するためのシンプルなテーブルを持っています、 これは最善のアプローチですか?データベースベースの電子メールシステムに適したデータベースデザインは何ですか?

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:に送信メール-profile

:ケース2

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); 

(一方 通信に1)B、 をプロファイルする送信電子メールプロファイルおよびBはバック返信プロファイルB、C、D

- プロファイルBはすべてのグループに戻ってきます。

-Aはグループ全体に再度返信します。メッセージId(GUID) - - ParentIdは(GUID)

TABLEメッセージ :私は、単一のテーブルのように感じるだけ

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

に返信-C

はimplimentするたくさん容易になるだろう - 件名 - メッセージ - へ - 送信者 - CreatedOn - isDraft - isDeleted - isRead

あなただけのエントリ

+0

「を」異なると複数のレコードを作成し、グループに電子メールを送信する場合にも、私はあなたには、いくつかの削除済みアイテムフォルダをしたいと仮定? (したがって、isDeletedフラグの理由、そうでなければ、レコードを削除して終了するだけです)。もしあなたがそうしているのであれば、フォルダが削除されたときのポリシーを検討したいかもしれません - もし5日以上前に "messaged deleted"のようなものがあれば、削除された日付を追跡する必要があります。しかし、私はおそらく "30日より古いメッセージ"のようなものに行くことができると思います。その場合、createdOn日付で十分です。 – Prescott

+0

hummm異なるToを持つ複数のレコードを作成しますが、これは重複メッセージデータを作成しませんか? – Aman

+0

はい、それはあなたの実装をよりクリーンな、1レコード= 1メッセージにします。あなたはそれをあなたの方法で行うことができます。その場合は、提案されたスキーマが請求書に合っているようです – Prescott

関連する問題