2013-03-29 27 views
0

我打算建立一個Symfony 2.1應用程序,它需要知道項目的狀態(讀/未讀),是否有任何有效的方法來保存項目狀態(有很多項目)?使用SQL關係表保持最佳選擇?或者,像MongoDB這樣的NoSQL數據庫對於處理讀取/未讀狀態是一個更好的主意?管理讀取/未讀項目(NoSQL/SQL)的最佳方式是什麼?

+0

您的對象在一個人閱讀時會考慮閱讀,還是可以按用戶分別跟蹤狀態? – datasage

+0

是的,每個用戶都可以單獨跟蹤狀態。 – shinework

回答

1

準確管理這種情況的最佳方法(即不加剪角)是一個關聯表。假設您的數據庫包含項目用戶,另建表如下:

item_users (id, user_id, item_id, time_added) 

存在的任何領域存在(的用戶和項目組合)被視爲「用戶已經閱讀本」。這將產生大量數據,但可以通過巧妙的索引/分片輕鬆處理。例如:

  • 如果你有大量的用戶和大量的項目,分片由用戶可能是最好的
  • 如果你是經常有興趣誰讀過一定的崗位,分片由產品也值得
  • 考慮索引功能USER_ID並分別index_id的(INDEX +外鍵級聯兩個UPDATE和DELETE)

這將讓你很容易查詢表。請記住,如果您有大量用戶和帖子,您的數據可能會變大,此時分片真的變得必要。

+0

什麼是'id'專欄爲你做? –

+0

允許您更方便地刪除?在這種情況下,ID字段是個人偏好。 –

相關問題