2013-05-27 43 views
0

我正在構建留言板,但我對數據庫設計有疑問。 一旦添加新消息,如果它是新消息,則將創建主題。問題是,我應該在主題表中保留主題的創建日期和創建者,還是應該使用sql從消息表中獲取它?留言板數據庫設計

選項 - 數據庫:

  • 用戶:ID,用戶名
  • 主題:ID,主題,CREATE_DATE,creator_id(用戶)
  • 消息:ID,subject_id,CREATE_DATE,creator_id(用戶)

選項b - 數據庫:

  • 用戶:ID,用戶名
  • 主題:ID,受試者
  • 消息:ID,subject_id,CREATE_DATE,creator_id(用戶)

二似乎在設計更好,沒有更多的重複數據。 但在第一個選項中,會有更輕的sql查詢。

哪一個更好?

+0

該主題是否創建了與消息創建日期和創建者不同的創建日期和創建者,還是它們是相同的? –

+0

他們都是相同的 – potan

回答

0

由於消息創建日期和創建者都是爲主題的創建日期和創建者,而不是這兩個選項,你可以normalize你的表,並將它們存儲在一個地方是相同的:

  • 用戶:ID,用戶名
  • subject:id,subject,create_date,creator_id(user)
  • message:id,subject_id,Sender_id,Send_date,ReplyMessage_Id。
+0

但會有回覆郵件。所以,在一個主題中會有來自多個用戶的多個消息。 – potan

+0

@potan你可以將一個可空的外鍵添加到同一個表中,因爲'ReplyMessageId'作爲回覆消息的自加入。 –

+0

消息需要日期和發件人。 – potan