如何实施"喜欢的人数"在关系数据库

时间:2016-04-06 20:24:12

标签: mysql sql database relational-database

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

我设置了两个表:

[OBJECT]
id
path
desc

[LIKES]
obj_id
user_id
timestamp

我会在对象表中实现一个字段" nr_of_likes" ,每当新行插入到likes表中时,该字段就会递增。 这应该比{{1}每个对象的喜欢数量快得多,对吗? 问题在于我获得了冗余数据,通常情况下,从我研究的内容来看,这并不好。 关于这类问题有哪些最佳做法?可以" nr_of_likes"领域实施? 感谢您分享您的意见!

1 个答案:

答案 0 :(得分:1)

当然可以像你提出的那样实现一个列。正如你所发现的那样,这通常是一种不好的做法。如果您在Likes表上有正确的索引,那么性能通常会很好。当然,这取决于您的数据库究竟有多大以及它所处的系统类型。

您是否想要违反数据库设计的“一般”规则就像决定任何其他类型的非规范化一样 - 这是什么原因?与该设计选择相关的成本是多少?它们是否超过了优势?

我自己的方法是始终遵循标准的数据库设计规则。在您确定可能存在性能问题之前, TEST 的性能。如果确实发现性能问题,请在不使用劣质数据库设计的情况下查看解决方法(索引等)。非规范化作为最后的手段。它是工具带中的一种工具,不幸的是,这种工具的使用频率超出应有的范围。

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