gpt4 book ai didi

mysql - 如何在关系数据库中实现 "number of likes"

转载 作者:行者123 更新时间:2023-11-29 11:36:43 27 4
gpt4 key购买 nike

我正在尝试设置一个数据库架构,其中对象可以接收喜欢。我经常需要访问任何给定对象的点赞总数。

我设置了两个表:

[OBJECT]
id
path
desc

[LIKES]
obj_id
user_id
timestamp

对我来说,在对象表中实现一个字段“nr_of_likes”是有意义的,每次在喜欢表中插入新行时,该字段都会递增。这应该比 COUNT(*) 快得多每个对象的点赞数,对吗? 问题是我得到了冗余数据,而且通常根据我的研究,这并不好。关于此类问题有哪些最佳实践? “nr_of_likes”字段可以实现吗?感谢您分享您的意见!

最佳答案

当然可以按照您的建议实现一个专栏。但正如您也发现的那样,这通常是一种不好的做法。如果您的 Likes 表上有适当的索引,那么性能通常会很好。当然,这具体取决于您的数据库有多大以及它所在的系统类型。

无论您是否想要违反数据库设计的“一般”规则,就像任何其他类型的非规范化的决定一样 - 原因是什么?该设计选择会产生哪些成本?它们是否比优点更重要?

我自己的方法是始终遵循标准数据库设计规则。在确定可能存在性能问题之前,测试性能。如果您确实发现性能问题,请寻找解决该问题的方法(索引等),而不要使用较差的数据库设计。非规范化作为最后的手段。它是工具带中的一种工具,不幸的是,它的使用频率超出了应有的范围。

始终确保您完全了解设计决策的缺点。

关于mysql - 如何在关系数据库中实现 "number of likes",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36461609/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com