Ich habe eine einfache Tabelle im Sinn, um eine Datenbank E-Mail-System zu erstellen, ist dies der beste Ansatz?Was wäre ein gutes DB-Design für Datenbank-Basis-E-Mail-System?
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
Fall 1: Profil ein sendendes E-Mail-B zu profilieren, und B Antworten zurück (12.59 Kommunikation)
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);
Fall 2:
-Profil A sendet E-Mail Profil B, C, D.
-Profile B, die alle zur ganzen Gruppe zurücksenden.
-A erneut auf die gesamte Gruppe antworten.
-C zu antwortet A nur
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);
auch, ich nehme an, Sie einige Elemente Ordner gelöscht werden? (daher der Grund für das IsDeleted-Flag, ansonsten einfach den Datensatz löschen und fertig sein). Wenn Sie das tun, sollten Sie die Richtlinie für den Zeitpunkt berücksichtigen, zu dem der Ordner gelöscht wird. Wenn etwas wie "Nachricht gelöscht vor mehr als 5 Tagen" lautet, müssen Sie das gelöschte Datum im Auge behalten. Aber ich denke, Sie könnten wahrscheinlich mit etwas wie "Nachrichten älter als 30 Tage" gehen in diesem Fall das createdOn Datum wird ausreichen. – Prescott
humm erstellen Sie mehrere Datensätze mit unterschiedlichen To, aber werden dies nicht redundante Nachrichtendaten erstellen? – Aman
Ja, aber es würde Ihre Implementierung viel sauberer machen, ein Datensatz = eine Nachricht. Sie könnten es auf Ihre Art und Weise tun, in diesem Fall scheint Ihr vorgeschlagenes Schema die Rechnung zu passen. – Prescott