2012-07-01 5 views
4

Я ищу для создания системы обмена сообщениями, которая обрабатывает разговор так же, как и делает Facebook. Мне интересно, какой лучший способ сделать это в отношении структуры таблицы. Будет ли у меня есть одна таблица, как:Структура таблицы для системы обмена сообщениями

 
id 
reply_id - the id of the original message that started the conversation 
to_id 
from_id 
subject 
content 
date_sent 
read_status 

Или две таблицы:

 
table 1 - for the start of new messages 

id 
to_id 
from_id 
subject 
content 
date_sent 
read_status 

table 2 - when someone replies to a message 

id 
message_id 
to_id 
from_id 
subject 
content 
date_sent 
read_status 

ответ

1

Я бы сказал, что один стол. Зачем дублировать идентичные данные? Кроме того, вы удалите источник ошибки, когда ваша структура данных сообщений будет изменена, не заботясь о том, чтобы другая таблица была идентична первой.

2

Это зависит от многих вещей, но попытка первого предположения может быть самореферентной таблицей «сообщений». Например:

message: 
    sender_id: User 
    recipient_id: User 
    in_reply_to_id: Message 
    subject, content, etc 

сообщение выглядит следующим образом:

belongs_to :sender, :class => 'User' 
    belongs_to :recipient, :class => 'User' 
    has_many :replies, :dependent => :destroy 
    belongs_to :in_reply_to, :class => 'Message' 

Это позволит вам создать дерево ответов (потому что сообщение может быть in_reply_to сообщение, которое в свою очередь может быть in_reply_to еще один сообщение). Вы также можете рассмотреть возможность использования чего-то вроде acts_as_ordered_tree для большей гибкости и контроля.

+0

Я думаю, что это было бы более похоже на структуру таблицы комментариев, но все же отлично подходит для сообщений, а также в некоторых сценариях. +1 –

-5

Настоящий лучший ответ: MySQL - чрезвычайно плохой инструмент для создания систем электронной почты и чата.

Система обмена сообщениями уже есть. Система чата уже существует. Почему вы пытаетесь заново изобрести колесо?

Смежные вопросы