喜欢和总喜欢的数据库设计
Database design for Likes and Total Likes
我已经为我的系统创建了一个基本的类似系统。点赞按以下格式存储
user_id, post_id, liked_at
我想将点赞总数保留在数据库中(因为这有助于在检索 post 列表时获得点赞总数 post)
post_id, total_likes
我目前有 2 个选项来实现这些功能。
- 正在创建视图以生成 post 总点赞数
- 触发更新总赞数
最好的方法是什么?
就个人而言,如果可能的话,我不想添加多余的信息。所以我更喜欢一个视图。如果您将 'total_like' 添加到 post table 并通过触发器保持更新,则没有任何东西(除了另一个触发器)会阻止某人直接更新该字段并错位数据)。
只有当它变慢时,我才会考虑触发器的想法。
希望对你有帮助
因为您可能只会从代码中的一个地方调用 "LIKE" 代码,所以这是一个折腾:
- 在您的应用程序代码中编写代码(内联或子例程)
- 有
STORED PROCEDURE Like(user_id, post_id)
- 使用
TRIGGER
,然后插入一个地方,让它做另一个insert/update
VIEW
前两个'feel'更好;我倾向于避免 "side effects";一年后我忘记了他们,他们咬了我。
我想我最喜欢的是子例程或存储过程——这将 LIKEing 的所有操作隔离在一个地方;它有助于干净地构建整个系统。
我已经为我的系统创建了一个基本的类似系统。点赞按以下格式存储
user_id, post_id, liked_at
我想将点赞总数保留在数据库中(因为这有助于在检索 post 列表时获得点赞总数 post)
post_id, total_likes
我目前有 2 个选项来实现这些功能。
- 正在创建视图以生成 post 总点赞数
- 触发更新总赞数
最好的方法是什么?
就个人而言,如果可能的话,我不想添加多余的信息。所以我更喜欢一个视图。如果您将 'total_like' 添加到 post table 并通过触发器保持更新,则没有任何东西(除了另一个触发器)会阻止某人直接更新该字段并错位数据)。 只有当它变慢时,我才会考虑触发器的想法。 希望对你有帮助
因为您可能只会从代码中的一个地方调用 "LIKE" 代码,所以这是一个折腾:
- 在您的应用程序代码中编写代码(内联或子例程)
- 有
STORED PROCEDURE Like(user_id, post_id)
- 使用
TRIGGER
,然后插入一个地方,让它做另一个insert/update VIEW
前两个'feel'更好;我倾向于避免 "side effects";一年后我忘记了他们,他们咬了我。
我想我最喜欢的是子例程或存储过程——这将 LIKEing 的所有操作隔离在一个地方;它有助于干净地构建整个系统。