喜欢和总喜欢的数据库设计

Database design for Likes and Total Likes

我已经为我的系统创建了一个基本的类似系统。点赞按以下格式存储

user_id, post_id, liked_at

我想将点赞总数保留在数据库中(因为这有助于在检索 post 列表时获得点赞总数 post)

post_id, total_likes

我目前有 2 个选项来实现这些功能。

最好的方法是什么?

就个人而言,如果可能的话,我不想添加多余的信息。所以我更喜欢一个视图。如果您将 'total_like' 添加到 post table 并通过触发器保持更新,则没有任何东西(除了另一个触发器)会阻止某人直接更新该字段并错位数据)。 只有当它变慢时,我才会考虑触发器的想法。 希望对你有帮助

因为您可能只会从代码中的一个地方调用 "LIKE" 代码,所以这是一个折腾:

  • 在您的应用程序代码中编写代码(内联或子例程)
  • STORED PROCEDURE Like(user_id, post_id)
  • 使用TRIGGER,然后插入一个地方,让它做另一个insert/update
  • VIEW

前两个'feel'更好;我倾向于避免 "side effects";一年后我忘记了他们,他们咬了我。

我想我最喜欢的是子例程或存储过程——这将 LIKEing 的所有操作隔离在一个地方;它有助于干净地构建整个系统。