سؤال التصميم:كيف يمكنك تصميم نظام الرسائل/البريد الوارد؟

StackOverflow https://stackoverflow.com/questions/123783

  •  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

وبعد ذلك، يمكنك الانتقال إلى جدول سلسلة الرسائل للحصول على سلسلة رسائل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top