Как реализовать личную почту для сайта? - PullRequest
2 голосов
/ 19 мая 2009

Как бы вы реализовали функцию приватной почты, такую ​​как Bebo / Facebook и другие сайты социальных сетей?

У вас есть возможность оставлять публичные комментарии в профиле участника, но вы также можете отправить личное сообщение.

Я собирался использовать XML и просто сохранить его как поле в записи конкретного пользователя. Это звучит как плохая идея?

У кого-нибудь есть лучшее предложение? Я не уверен, какое из них будет лучшим решением.

Ответы [ 2 ]

2 голосов
/ 19 мая 2009

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

UserTable
{
    ID INT, -- a unique system generated ID
    USER_ID CHAR(20), -- also unique, this is a user provided ID
    FIRST_NAME CHAR(40),
    LAST_NAME CHAR(40),
    BIRTH_DATE DATE 
}

UserEmailTable
{
    ID INT, -- a unique system generated ID
    USER_ID CHAR(20), -- this ties the entry to the record on UserTable
    EMAIL_ADDR CHAR(128), -- user provided email
    PRIORITY INT, -- Specifies the users 0..N-th address
}

MailTable
{
    ID INT, -- a unique system generated ID
    SENDER_ID INT, -- this ties the entry to the record on UserTable
    RECIPIENT_ID INT, -- this ties the entry to the record on UserTable
    CREATE_DATE DATE,  -- record when the message was created by sender
    READ_DATE DATE,  -- record when the message was read by recipient
    PRIVATE BOOL, -- indicates if this is a private message
    MESSAGE BLOB -- the message body
}

Пожалуйста, имейте в виду, что это всего лишь пример, и он может не учитывать конкретные проблемы вашего приложения.

Одна заключительная мысль: вы действительно планируете хранить XML в поле напрямую или использовать какой-то инструмент XML <-> отображения SQL? Если вы храните XML напрямую, вы можете не использовать возможности вашей базы данных. Ваши опасения по поводу производительности обоснованы, но хорошо спроектированная и настроенная база данных должна легко обрабатывать миллионы записей в одной таблице.

Надеюсь, это поможет.

2 голосов
/ 19 мая 2009

Возможно, я неправильно понял, что вы хотите, но как насчет создания почтовой таблицы, например

  • Отправитель
  • Получатель
  • Тема
  • Сообщение
  • Отправленные
  • Чтение (bool)

А затем просто добавьте строку в эту таблицу, когда кто-то отправит кому-нибудь личное сообщение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...