سؤال التصميم:كيف يمكنك تصميم نظام الرسائل/البريد الوارد؟
-
02-07-2019 - |
سؤال
لدى العديد من مواقع الويب مفهوم إرسال الرسائل من مستخدم إلى مستخدم.عندما ترسل رسالة إلى مستخدم آخر، ستظهر الرسالة في صندوق الوارد الخاص به.يمكنك الرد على الرسالة، وستظهر كإدخال جديد في سلسلة الرسائل تلك.
يجب أن تكون قادرًا على معرفة ما إذا كنت قد قرأت رسالة معينة بالفعل، ويجب أن تكون الرسائل التي حصلت على رد جديد في الأعلى.
كيف يمكنك تصميم الفئات (أو الجداول أو أي شيء آخر) لدعم مثل هذا النظام؟
المحلول
user
id
name
messages
id
to_user_id
from_user_id
title
date
message_post
id
message_id
user_id
message
date
سوف تعكس الطبقات هذا النوع من المخطط
نصائح أخرى
قد ترغب في توسيع مخطط أوين لدعم الرسائل المجمعة حيث يتم تخزين الرسالة مرة واحدة فقط.تم تعديله أيضًا بحيث يكون هناك مرسل واحد فقط والعديد من أجهزة الاستقبال (لا يوجد أبدًا أكثر من مرسل واحد في هذا المخطط)
user id name message id recipient_id content_id date_time_sent date_time_read response_to_message_id (refers to the email this one is in response to - threading) expires importance flags (read, read reply, etc) content id message_id sender_id title message
هناك العديد والعديد من الميزات الأخرى التي يمكن إضافتها بالطبع، ولكن معظم الناس يفكرون في الميزات المذكورة أعلاه عندما يفكرون في "البريد الإلكتروني".
-آدم
إنها بنية جدول بسيطة إلى حد ما.أ إلى/من، الموضوع ثم الرسالة.الآن الشيء المهم هو حقول التاريخ.يخبر DateSent متى تم إرسالها، ويخبر DateRead أن الرسالة قد تمت قراءتها، ويخبر DateDeletedTo أن المستخدم TO قام بحذفها، ويخبر DateDeletedFROM أن المستخدم FROM قام بحذفها (هذه عمليات حذف منطقية لهذا المثال).
tblMessage
ID BIGINT
ToUserID GUID/BIGINT
FromUserID GUID/BIGINT
Subject NVARCHAR(150)
Message NVARCHAR(Max)
DateDeletedFrom DATETIME
DateDeletedTo DATETIME
DateSent DATETIME
DateRead DATETIME
أنا في الواقع أفعل هذا كجزء من بعض التطوير الداخلي في العمل.قم بإنشاء جدول يسمى [الرسائل] وقم بتزويده بالأعمدة التالية.
- منتصف (معرف الرسالة)
- من المستخدم
- إلى المستخدم
- رسالة
- وقت
- الدار (معرف الموضوع)
- قراءة (منطقية)
شيء من هذا القبيل يجب أن يعمل لتصميم الجدول.تعتمد الفصول على النظام الذي تصممه عليه.
Table Message:
id INTEGER
recipient_id INTEGER -- FK to users table
sender_id INTEGER -- ditto
subject VARCHAR
body TEXT
Table Thread
parent_id -- FK to message table
child_id -- FK to message table
وبعد ذلك، يمكنك الانتقال إلى جدول سلسلة الرسائل للحصول على سلسلة رسائل.