留言板数据库设计

时间:2013-05-27 15:11:07

标签: sql database database-design

我正在构建留言板,但我对数据库设计有疑问。 添加新消息后,如果是新消息,则会创建主题。问题是,我应该在主题表中保留主题的创建日期和创建者,还是应该使用sql从消息表中获取它?

选项a - 数据库:

  • user:id,username
  • subject:id,subject,create_date,creator_id(user)
  • message:id,subject_id,create_date,creator_id(user)

选项b - 数据库:

  • user:id,username
  • 主题:id,subject
  • message:id,subject_id,create_date,creator_id(user)

第二个似乎在设计上更好,没有更多的重复数据。 但在第一个选项中,将有更轻的SQL查询..

哪一个更好?

1 个答案:

答案 0 :(得分:0)

由于邮件创建日期和创建者与主题创建日期和创建者相同,而不是两个选项,您可以normalize表格并将其存储在一个位置:

  • user:id,username
  • subject:id,subject,create_date,creator_id(user)
  • message:id,subject_id,Sender_id,Send_date,ReplyMessage_Id。