2

ユーザーがさまざまなポジションのさまざまな候補者に投票できるようにする投票システムを作成する必要があります。有権者のログインがあります。1人の投票者の投票を保存し、その投票を前の投票に追加するにはどうすればよいですか?唯一可能な方法は、すべての投票をデータベースに保存することです。しかし、データベースの構造はどのようになりますか?そして、どのようにそれを数えますか?

編集:
投票システムには、投票する候補者のグループが1つだけではありません。市長、副市長、上院議員などがいます。多すぎます。それが私が混乱している理由です。大統領の投票制度だけならもっと簡単だろう。したがって、投票した候補者の列を含む投票者用のテーブルがある場合、投票者は多くの候補者に投票するため、それは不可能です。

4

5 に答える 5

3

より良い方法は、投票を格納する別のテーブルを用意することです。そのテーブルには 2 つの属性 (VoterId、CandidateId) があり、このテーブルから複数の投票を許可している場合は、投票数を取得できます。

ただし、このテーブルでは VoterId を主キーにした方がよいでしょう。多重投票を避けるには

CandidateType : - (TypeId(PK), typeName, maxVotePerVoterForThisType)

投票者テーブル: - (voterId(PK),voterName, otherInfo)

候補テーブル: - (candidateId(PK)、candidateName、constituency、otherInfo、TypeId(FK))

投票:- (voterId(PK、FK)、TypeId(PK、FK)、candidateId(FK))

*編集:- 元の投稿で変更された要件で編集されたスキーマ

*EDIT: - CandidateType テーブルに を許可するフィールドを追加しました(例: このタイプが 10 に設定されている場合multiple votes、有権者は に投票できるようになりました..)10 SenatorsmaxVotePerVoter

于 2012-09-23T09:07:37.357 に答える
1

各候補者をテーブルに保存し、別のテーブルに配置してから、IDに基づいて関係を作成する必要があります。投票システムは、比較的単純です。

データベース:

id, position_id, candidate_id, votes

次にPHP

$query = "UPDATE `votes` SET `votes`=`votes`+1 WHERE `position_id`=1 AND candidate_id=1"; // adds 1 vote where position_id is 1 and candidate_id is 1
于 2012-09-23T09:03:01.743 に答える
1

これら 3 つのテーブルは、アカウント (有権者) と候補者に必要です。

Account: Id (PK), Name, Password
Candidates: Id (PK), Name
Votes: AccountId (PK), CandidateId (PK)

投票が行われると、投票に行を挿入します。これにより、PK による重複投票が防止されます。

于 2012-09-23T09:05:44.657 に答える
0

私は簡単な言葉で、投票ユーザーをusersというテーブルに格納していると言えます。フィールドvaotecount (int)タイプを使用して、ゼロでinitilizeし、IPを追跡して、投票したトピックIDに投票できます。 IPとtopic_idに、2回投票していないことを確認し、合格した場合は、vaotecountフィールドを1つ増やすことができます。

開票中は、開票対象のトピックIDを持つユーザーを数えます。シンプル:D

于 2012-09-23T09:18:18.677 に答える
0

問題の説明から、次のデータベース構造を提案できます。

tlbUserVote:

UserID(PK)  |  UserName  |  Vote  |  CandidateId(FK)

tlbCandidate:

CandidateId(PK)  | CandidateName | TotalVotes

この構造により、現在の投票を以前の投票に追加できます (以前の投票を最初に取得して現在の投票に追加することにより)。

候補者の総投票数も更新されます。

于 2012-09-23T09:06:18.340 に答える