2011-11-04 50 views
0

您能否描述一下創建Facebook「like」功能表的最佳方式,我可以在其中存儲用戶喜歡的內容以及如何操作? (columsn,pks等) 另外,如果有可能,我想知道什麼是從該表中檢索數據的最好和最快的方法。SQL Server「Facebook Like」表設計建議

謝謝。

回答

1

因爲「喜歡」可以添加/刪除,它們與特定的用戶和用戶通常只能「喜歡」的東西一次,是有意義的創建這樣一個表:

CREATE TABLE Post_Likes 
( 
    Post_ID int FOREIGN KEY REFERENCES Posts(Post_ID), 
    User_ID int FOREIGN KEY REFERENCES Users(User_ID), 
    created_date datetime, 
    CONSTRAINT PKC__Post_Likes__Post_id__User_id PRIMARY KEY (Post_id, User_id) 
) 

這裏有很多考慮因素。 post_id和user_id一起構成了一個很好的自然關鍵,但會容易出現碎片。有一個單獨的IDENTITY鍵不會增加很多,因爲post_Id上的重要索引仍然會被分割。值得擁有User_id上的另一個索引,這樣優化器可以快速找到用戶喜歡的類型,但最好調整一些真實的數據和查詢計劃。

除了這個表,我會緩存運行的總喜歡在Posts記錄,所以你不必JOIN到子表和SUM所有喜歡每次顯示的東西的時候,也可以得到昂貴快。您可以使用觸發器維護該值,也可以將代碼保留在DAL中。