【发布时间】:2020-01-04 10:43:39
【问题描述】:
我有一个简单的数据库结构,带有模型和关系:
型号:
- 用户
- 组
- 活动
关系:
- User/Group –> 用户属于组,组有很多用户
- User/Activity –> 用户有很多活动,Acitivty 属于用户
- Group/Activity –> Activity属于Group,Group有很多Activity
我的问题 - 我希望能够跟踪用户在给定时间段内(可能是每周,但可能是每天)在群组中执行的活动数量,但我不知道什么是最好/最高效的方法实现这一目标。
理论上,我可以执行一个查询,根据 created_at 日期属性计算这些活动,但我认为这不是最高效的方式(我错了吗?)
有谁知道如何正确地构造这样的东西?
【问题讨论】:
-
您的要求不清楚。您想要特定用户在一天或一周内在每个组中执行的总活动吗?具有预期输出的示例数据集将帮助您获得解决方案。
-
@Samir 是的!我正在编写的后端对用户的活动施加了限制,例如用户每周只能在群组内发帖 7 次(或一天一次)。
-
我会在应用程序代码中实现这样的规则,而不是在数据库元数据中。
-
如您所说,根据
created_atdatetime 属性计算它们。当然,在userid和created_at列上放置一个索引。除非您的网站发展到非常大的规模,否则这可能会产生令人满意的性能,如果这样做,您无论如何都必须重新设计所有内容。 -
@Ancinek 。 . .我删除了不一致的数据库标签。请仅使用您真正使用的数据库进行标记。样本数据和期望的结果真的很有帮助。