数据库建模:Facebook就像消息一样

时间:2010-12-06 22:00:16

标签: mysql database database-design

这有点是Database Modeling: Facebook like messages的延续。

我正在尝试模拟类似于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 :(得分:-1)

  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