2011-11-04 62 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中。