Моделирование базы данных: Facebook как сообщения - PullRequest
0 голосов
/ 07 декабря 2010

Это несколько продолжение Моделирование базы данных: сообщения, подобные Facebook .

Я пытаюсь смоделировать что-то похожее на сообщения Facebook.В Facebook пользователи могут размещать комментарии на стенах, на опубликованных носителях (например, фотографии, видео) или отправлять друг другу электронные письма.В приведенной ниже таблице показано, что:

===========================
message
===========================
- message_id (PK)
- parent_message_id (FK)
- profile_id (FK, referring to who posted the message)
- message
- subject (applicable only for emails)
- timestamp

===========================
wall_message
===========================
- message_id (FK)
- profile_id (FK, referring to who received the message/owner of wall)

===========================
media_message
===========================
- message_id (FK)
- media_id (FK, referring to the specific photo, video, etc.)

===========================
email_message
===========================
- message_id (FK)
- profile_id (FK, referring to who received the message)

Несколько вопросов:

  1. Кто-нибудь видит какие-либо потенциальные проблемы с дизайном?
  2. Как мне поступитьэлектронные письма, которые отправляются нескольким получателям?
  3. Как бы я запросил эти таблицы таким образом, чтобы я мог показать самые последние, скажем, 4 сообщения для стены владельца профиля и медиа (чтобы я мог отобразить это на этомСтена профиля) заказать по сообщению отметка времени?

1 Ответ

0 голосов
/ 07 декабря 2010
  1. Выглядит нормально.
  2. Сделайте email_message отношением один-ко-многим, то есть profile_id не должен быть уникальным
  3. Попробуйте следующее (не проверено):

    SELECT TOP 4 *
    FROM message INNER JOIN wall_message ON message.message_id = wall_message.message_id
    WHERE wall_message.profile_id = @prof_id
    ORDER BY message.timestamp DESC
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...