我想存儲和檢索社區站點的用戶通知數據。當有人對用戶的帖子發表評論或某人關注用戶時,應該生成通知。我想要這個行爲來複制Facebook的通知。因此,它應該是這樣的:用於存儲和檢索通知數據的數組設計
User A, User B and 3 other started following you.
User A, User Z and 2 others commented on your post Super Duper.
如果我創建一個通用的陣列,用於保持通知那麼它應該是這樣的:
$notification = array ($notification_id, notification_time, $read_status, $notification_recipient_id, $notification_initiator_id, $post_id=NULL, $comment_id=NULL); // This array represents a single notification
$notifications = array ($notification, ...); // This array is made up of many single notification array.
所以,如果我是來檢索$通知的數據數組(包含所有單個通知數組的數組),我將使用for循環並在根據時間對數組進行排序後回顯結果。這會給我這樣的事情作爲結果:
User A started following you.
User B started following you.
User C started following you.
User D started following you.
User E started following you.
User A commented on your post Super Duper.
User B commented on your post Super Duper.
User C commented on your post Super Duper.
User D commented on your post Super Duper.
所以,如果你看一下結果,我打算做到,而且我會走出陣列設計我公司目前擁有的一個,這兩個是不同的。我可以通過執行N個操作來達到所需的結果,這些操作可能涉及到$ notifications數組的扁平化,循環遞歸,排序等。但是,我想我可以通過重新設計數據如何存儲在陣列中來減少開銷,以便在需要檢索數據時我可以執行的操作數量最少。另外,由於在顯示數據時需要考慮讀取狀態,因此實現我想要的結果將變得更加複雜。我請求提供關於設計數組結構的建議,以及如何從數組中檢索數據以獲得我想要的結果的示例。
Thx for the reply。是的,數據模型應該反映約束而不是格式化問題。但是,該應用程序目前正在開發中,並且不包含有意義的數據。所以,現在我可以正確地構建它。您的建議可以用於跟蹤。然而,帶有註釋的變量$ post_id被引入。每篇文章可以有不同的人評論導致嵌套。當用戶讀取通知以及新用戶評論或關注時,我還需要設置/取消設置閱讀狀態。你能否考慮這些並據此提出建議。謝謝。 – John 2012-04-14 21:20:31
更新了我的答案。我的觀點是要表明,用你現在的模型,你可以處理很多案例。保持你的數據模型簡單。 – 2012-04-14 21:33:49
現在我明白你的意思了。起初,我認爲你指的是陣列,正如我在問題中所問的那樣。但是我現在看到你的建議是直接向數據庫傳遞SQL語句。我會在此寫一個工作代碼並在一天或兩天內回覆給您。同時,我將留下標記爲未答覆的問題。 Thx的擡頭。 – John 2012-04-14 21:36:53