Database design 在数据库中存储选举投票的最佳实践

Database design 在数据库中存储选举投票的最佳实践,database-design,asp.net-identity,asp.net-membership,privacy,voting-system,Database Design,Asp.net Identity,Asp.net Membership,Privacy,Voting System,有没有一种好方法可以存储与选举相关的取消识别的投票数据,同时确保人们不能投多张票?存储此类数据的最佳做法是什么,尤其是在较长时间内 更多背景: 我是一个娱乐俱乐部的少数网络管理员和数据库管理员之一。我们有500多名成员。每年,我们都会举行选举,为新的董事会成员投票,选举数据存储在我们的数据库中。我们有以下数据库表存储了十多年的投票数据: 选举:保存大选详细信息,如特定选举中投票的开始和结束时间 选举候选人:保存候选人及其bios等信息 选举投票:保存个人投票以及投票成员的成员ID 我们正在重

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

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

  • 选举:保存大选详细信息,如特定选举中投票的开始和结束时间
  • 选举候选人:保存候选人及其bios等信息
  • 选举投票:保存个人投票以及投票成员的成员ID
我们正在重写网站的部分内容,包括与选举相关的内容,所以这似乎是一个很好的机会,可以更批判性地思考这个数据库结构,以及它是否符合最佳实践。我主要关心的是存储与每次选举投票相关的MemberID。关注这种做法的另一个动力是,今年竞选董事会的一名成员恰好是一名网络管理员,他将完全访问数据库

最终,我相信这些人,我不太担心任何不好的事情发生。但我很好奇,处理此类数据的最佳实践应该是什么


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

我可能会选择这样的结构:

选举选举候选人基本保持不变

选举投票在每次选举中,每个候选人每票存储一行

成员投票每次选举每个成员存储一行

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

这样,你就不会有任何东西将投票的成员与他们投票给的候选人联系起来