【问题标题】:Best Practice for Storing Election Votes in a Database在数据库中存储选举投票的最佳实践
【发布时间】:2020-06-11 01:28:38
【问题描述】:

有没有一种好方法可以存储与选举相关的去识别化投票数据,同时仍确保人们不能投多票?存储此类数据的最佳做法是什么,尤其是在较长时间段内?

更多上下文:

我是休闲俱乐部的少数网络管理员和数据库管理员之一。我们有超过 500 名会员。每年,我们都会举行选举以选举新的董事会成员,选举数据存储在我们的数据库中。我们有以下数据库表存储了十多年的投票数据:

  • 选举:保存大选详细信息,例如在特定选举中投票的开始和结束时间。
  • ElectionCandidates:保存有关候选人、他们的简历等的信息。
  • ElectionVotes:持有个人投票以及投票成员的 memberID。

我们正在重写网站的部分内容,包括与选举相关的内容,因此这似乎是一个很好的机会来更批判性地思考这个数据库结构以及它是否符合最佳做法。我主要关心的是存储与每次选举投票相关联的 memberID。关注这种做法的另一个推动力是,今年竞选董事会的成员之一恰好是网络管理员,将拥有对数据库的完全访问权限。

归根结底,我相信这些人,而且我不太担心会发生任何不好的事情。但我很好奇处理这类数据的最佳做法是什么。

虽然不直接相关,但我们现在使用 ASP.NET Membership(但很快将切换到 ASP.NET Identity)。

【问题讨论】:

    标签: database-design asp.net-identity asp.net-membership privacy voting-system


    【解决方案1】:

    我可能会采用这样的结构:

    ElectionElectionCandidates 几乎保持不变,

    ElectionVotes在每次选举中为每位候选人的每票存储一行,

    MemberVotes在每次选举中为每个成员存储一行。

    当成员投票时,您在 ElectionVotes 中为他们投票的候选人添加一行,并在 MemberVotes 中为投票的成员添加一行(一个简单的存储过程交易应该很容易做到这一点)。
    您也不应该在这些表中存储投票日期等内容,以防止按日期比较行。

    这样,您就没有任何东西将投票的成员与他们投票的候选人联系起来。

    【讨论】:

      猜你喜欢
      • 2010-10-23
      • 1970-01-01
      • 2011-03-23
      • 2011-03-31
      • 2018-07-27
      • 1970-01-01
      • 2012-04-28
      • 2011-05-04
      • 1970-01-01
      相关资源
      最近更新 更多