我在一个投票网站上工作,我想知道我应该如何处理投票。
例如,当您为问题(或答案)投票时,您的投票将被存储,并且每次我返回页面时,我都可以看到我已经为这个问题投票,因为向上/向下按钮是彩色的。
你是怎样做的?我的意思是我有几个想法,但我想知道它是否不会对数据库造成沉重的负担。
这是我的想法:
编写一个助手,如果已投票,它将检查每个问题
这意味着查询的数量将取决于页面上显示的项目数量(通常约为 20)
在我的项目上循环获取 id 并为每个页面编写一个查询,如果已投票或为 NULL,该查询将返回
看起来不错,因为只有一个查询与页面上有多少项目无关,但可能会破坏某些 MVC/域模型设计,不知道。
当用户登录(或为其创建匿名用户的来宾)检索所有投票时,将它们存储在会话中,如果进行了新投票,只需将其添加到会话中。
看起来不错,因为除了第一个之外根本不需要查询,但是,这一个以及根据投票的数量(可能每个用户可能有一堆)可以增加每个用户的会话大小并可能进行身份验证减缓。
你好吗?还有其他想法吗?