SQL Server "Facebook "表格设计建议

本文关键字:quot Facebook Server SQL 表格 | 更新日期: 2023-09-27 18:13:41

你能描述最好的方式来创建一个Facebook "喜欢"的功能表,我可以存储喜欢的用户和如何?(栏、栏等)另外,如果可能的话,我想知道从该表中检索数据的最佳和最快方法是什么。

谢谢。

SQL Server "Facebook "表格设计建议

因为"likes"可以添加/删除,它们与特定的用户相关,并且用户通常只能"like"一次,所以创建这样一个表是有意义的:

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记录中的喜欢总数,这样您就不必在每次显示某些内容时将JOINSUM的所有喜欢都缓存到子表中,这可能会很快变得昂贵。您可以使用触发器维护该值,或者将维护该值的代码放在DAL中。