2016-11-21 45 views
0

我有一個簡單的消息系統:用戶向組發送消息。在簡單的聊天應用程序中存儲不同類型的「消息」

我試圖儘可能地規範化,並正確地做事情,以便模式可以在需要時進化。

我決定有一張存儲每條消息的表格,還有一張用於不同類型消息的表格。

但我發現這個問題。對message的查詢沒有意義,因爲它們不會生成消息。您必須分別查詢message_imagemessage_text。這使我認爲我的模型是錯誤的。

message 
------- 
+ id (int) 
+ group_id (int) 
+ sender_id (int) 
+ created_at (timestamp) 

message_image 
------------- 
+ id (int) 
+ title (varchar) 
+ url (varchar) 
+ created_at (timestamp) 

message_text 
------------ 
+ id (int) 
+ message (varchar) 
+ created_at (timestamp) 

這樣做有什麼不利嗎?

+0

您是否每封郵件有多個圖片和/或每張圖片有多封郵件? – WillardSolutions

+0

@EatPeanutButter每條消息只有一個圖像。每封郵件有一條短信。它可以是一個或另一個,而不是兩個。 – BugHunterUK

+0

所以你可以添加一個外鍵約束到'message'引用'message_image'以及一個外鍵約束在'message'引用'message_text'?然後,你可以在'message'中查找行,如果你真的想在不同的表中分開文本和圖像,那麼這些列<> NULL,那麼你可以查找行。 – WillardSolutions

回答

1

將外鍵約束添加到message引用message_image以及在message引用message_text的外鍵約束。然後,您可以在消息中查找那些列<> NULL的行。

相關問題