我的数据库知识是合理的,我会为此使用MySQL(InnoDb),并且还完成了一些Postgres工作。 无论如何...

  • 我有很多是或否的问题。
  • 大量的人可以参与相同的投票。
  • 用户可以选择任一选项,这将被记录在数据库中。
  • 用户可以稍后改变主意并交换选择,这将需要更新存储的数据。

我当前用于存储此数据的计划:

  • POLLID,USERID,DECIONSION,TIMESTAMP

显然,用户数据在另一个表中。

要添加他们的选择,我必须查询一下他们是否已投票并插入,否则请更新。 如果我想查看民意调查结果,则每次有人要查看民意调查时,我都需要遍历所有决策(尽管有索引部分)。

我的问题是

  1. 有没有更有效的方法来存储/查询此内容?
  2. 我是否有关于POLLID或POLLID&USERID的索引(也许只是一个唯一约束)? 或其他?
  3. 附加问题:为什么我没有选择在Postgres中的表上选择HASH vs BTREE索引的选项?

#1楼 票数:1 已采纳

设计听起来不错,有几点建议:

投票表:投票ID,问题。

选择表:选择ID,文本。

用于将民意测验链接到选项的表:民意测验ID->选择ID。

用户表:用户详细信息,用户ID。

投票表:(用户ID,投票ID),选择ID,时间戳。 (方括号是唯一的对)

为单个用户插入/更新将可以正常工作,因为您只需检查用户ID和投票ID是否存在条目即可。

与使用COUNT进行遍历相比,您可以更轻松地查看结果。

e.g.: SELECT COUNT(*) FROM votes WHERE pollid = id AND decision = choiceid

这将告诉您在民意测验“ pollid”中有多少人投票支持“ choiceid”。

后期编辑:

这是一种插入(如果不存在)和更新(如果存在)的方法:

IF EXISTS (SELECT * FROM TableName WHERE UserId='Uid' AND PollId = 'pollid')
    UPDATE TableName SET (set values here) WHERE UserId='Uid' AND PollId = 'pollid'
ELSE   
    INSERT INTO TableName VALUES (insert values here)

  ask by Z-Mehn translate from so

未解决问题?本站智能推荐:

3回复

您如何构造一个类似于stackoverflow的允许投票的数据库?

我是数据库和Web开发的新手,但是我正在尽自己最大的努力通过创建自己的动态网站来学习自己的方式。 我正在逐步研究它,目前正在纸上设计数据模型。 我想知道如何为网站构建一个数据库,该数据库可以像stackoverflow这样进行投票? 如果存在一个包含问题列表的表,则用户创建的每个问题都会添
1回复

如何一起计算UP票数,然后按UP票数从数据库ORDER中选择

我的网站上有投票系统,它将每个用户的投票存储在名为skmp_voting的表中,该数据库中的每个记录都有id , item_id (这是用户投票的文章ID)和vote_value 。 如果用户投票否定值为“ -1”,则vote_value取决于用户的操作。 我有toparticles.p
3回复

从数据库中检索与用户关联的“喜欢”

我是数据库结构的新手。 我正在尝试创建一个允许用户喜欢某些条目的应用程序,但我希望能够将喜欢与用户联系起来,这样我就可以在类似操作之前/之后更改视觉效果。 我认为从研究中我应该有一个'条目'和'用户'表,然后有一个'喜欢'表,将两者相互联系起来。 我唯一不确定的是,在获取和显示内容
2回复

如何构建分类投票数据库?

我有一个关于如何构建数据库的问题。 我有一个reddit'esque投票系统。 物品可以获得投票。 但每个项目属于一个主题,每个主题属于一个类别。 虽然只有项目可以获得投票,但我希望能够访问主题内和类别中的投票数。 有关如何完成此任务的任何建议? 我看到了4种主要方法:
3回复

根据数据库中保存的IP地址删除特定对象的投票访问权限

我曾尝试就此问题发表几篇文章,但已决定收集最后一篇文章中的所有内容,希望以某种方式解决它。 我正在建立一个站点,用户可以在该站点上对数据库中的问题进行投票。 没有登录,因此,为确保每个人只能对每个问题投票一次,我将使用他们的IP和问题的ID。 首先,获取ID和IP地址并存储两者,确
1回复

非唯一多对多表设计

我正在为使用mysql的php项目实现投票系统。 重要的是,出于统计原因,我必须分别存储每个投票操作。 用户可以多次对许多项目进行投票,每一次投票都有其价值(可以将其视为捐赠之类的东西)。 到目前为止,我有一张表票 ,打算在其中存储以下几列的票: user_id-投票用户的ID,用户表
1回复

有效的数据库设计继承

我想设计一个具有2个类别的数据库。 每个类别中有2个子类别,但它们与其他类别非常相似,例如: 预防性设备维护: 猫1 id,设备,型号,系列,配件,日期,成本,状态 猫2 id,设备,型号,系列,配件,日期,成本,状态
2回复

最有效,可扩展的mysql数据库设计

我对数据库设计有一个有趣的问题: 我提出以下设计: 第一张桌子: 第二张表: 第三张表: 在第一个表格中,幸存者会有很多记录,并且会不时增长。 在第二张表中,只有少数幸存者可以学习的技能(例如:重新坐姿(视野范围更大),狙击手(精度更高)...)。 这些技