0
您能否描述一下创建Facebook“like”功能表的最佳方式,我可以在其中存储用户喜欢的内容以及如何操作? (columsn,pks等) 另外,如果有可能,我想知道什么是从该表中检索数据的最好和最快的方法。SQL Server“Facebook Like”表设计建议
谢谢。
您能否描述一下创建Facebook“like”功能表的最佳方式,我可以在其中存储用户喜欢的内容以及如何操作? (columsn,pks等) 另外,如果有可能,我想知道什么是从该表中检索数据的最好和最快的方法。SQL Server“Facebook 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
记录,所以你不必JOIN
到子表和SUM
所有喜欢每次显示的东西的时候,也可以得到昂贵快。您可以使用触发器维护该值,也可以将代码保留在DAL中。