2

オンライン選挙アプリの一意のキー名を作成する方法がわかりません。関連エンティティの典型的なセットを次に示します。

  • 1 選挙
  • 5人の候補者
  • 100,000 人の有権者
  • 最大100,000票

ここに記載されている理由により、Voter エンティティごとに一意のキー名が必要です。電子メール アドレスは、特定の選挙の有権者に対して一意ですが、必ずしも複数の選挙にまたがるとは限りません (同じ有権者が複数の選挙に参加する可能性があるため)。

選挙が有権者エンティティの親エンティティである場合、投票者の電子メールを選挙の親と組み合わせて使用​​することで、一意のキーとして十分です。Voter エンティティを更新する際にトランザクションを使用する必要があるため (有権者が複数回投票できないようにするため)、 docsに従って一度に更新できる Voter は 1 つだけなので、エンティティ グループは使用したくないと思います。

別の解決策として、フォームの投票者ごとに一意のキーを作成することもできます。

E<election ID>_<voter email>

例えば、

E1001_john@example.com

これは、Voter エンティティごとに一意のキー名を作成する合理的な方法ですか?

4

2 に答える 2

3

仮定を再確認してください。そのままでは、ID の一意性を妨げる可能性のある状況があります。

2 人の有権者が同じ電子メール アドレスを使用するとどうなりますか? 私の両親は、両親の間に1人しかいないことを知っています。そのままでは、ID が競合します。

衝突を最小限に抑える方法はたくさんあります。最悪の場合、有権者の情報の一部をハッシュ化できます。ID を作成している正確な時刻をハッシュすることもできます。

(うーん...私は物事をハッシュするのが好きだと思います...)

最も簡単な解決策は?データベース内の人々が ID に対して行うことを行います。つまり、番号です。新しい有権者を追加するたびに、番号を増やします。最初に追加した投票者の ID は 1、2 番目の投票者の ID は 2 というようになります。必要に応じて、id を文字列に変換できます。

ただし、データが一意であると想定しないでください。2 人が同じ名前、住所、電子メール アドレス、電話番号などを持つことができます。

それがあなたにいくつかのアイデアを与えることを願っています!

于 2011-07-18T00:54:44.113 に答える
0

それはユニークでなければなりません。私はおそらく自分で GUID を使用し、投票セッションと投票者に一意の制約を付けてデータ リポジトリに結び付けますが、それは単なる個人的な好みです。

于 2011-07-18T00:41:52.423 に答える