SQL Server“Facebook赞”表设计建议

时间:2011-11-04 07:23:20

标签: c# asp.net sql sql-server facebook

请您描述创建Facebook“喜欢”功能表的最佳方式,我可以存储用户喜欢的内容以及如何存储? (columsn,pks等) 另外,如果可能的话,我想知道从该表中检索数据的最佳和最快的方法是什么。

谢谢。

1 个答案:

答案 0 :(得分: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记录中缓存喜欢的累计总数,这样您就不必{child} JOINSUM所有喜欢每当你展示某些东西时,这会很快变得昂贵。您可以使用触发器维护该值,或者将代码放在DAL中以保持该值。