2015-11-08 79 views
0

我正在開發一個聊天應用程序。您可以與一個人聊天或創建(加入)一個組。我正在考慮數據庫應該如何存儲所有消息。聊天應用程序中的消息數據庫設計

我想出了兩個解決方案:

解決方法1.存儲的所有郵件到一個表;

解決方案2.爲用戶加入的每個人或組創建消息數據庫。

解決方案1很容易實現,但我不知道隨着消息的增長它是否保持良好的性能。

該應用在iOS上運行,我將使用sqlite數據庫。任何意見,將不勝感激。提前致謝。

回答

1

通常,具有相同結構的多個表是數據庫不正確的標誌之一normalized

如果您有單獨的表格,則不容易編寫必須查看多個人員/組的查詢,例如「我最近經常與誰聊天?」

您的數據庫將以任何方式增長。 通過無需讀取所有數據即可獲得高效的查詢,這可以通過正確編寫查詢並創建適當的索引來完成。
參見Query Planning,The SQLite Query PlannerThe Next Generation Query Planner

+0

感謝您的回答。如果我想通過'date'在組「1000」中選擇最新的10條消息,查詢是否會使數據庫讀取消息表中的所有數據?我認爲你的意見是使用solution1,對嗎? – KudoCC

+0

這取決於查詢和數據庫結構。 –

+0

假設表的屬性是「autoincreasement-id userOrGoupeId groupFlag messageId messageContent date」,並且查詢是「select * message其中groupId = 1000按日期DESC限制10」。我可以使查詢更有效嗎? – KudoCC

相關問題