2016-03-28 5 views
0

私は現在、政党の投票意図データを扱うリレーショナルデータベースを設計しています。地方の当事者は、選挙登録記録(CSV)をアップロードしてから、その人の投票者の意向を記録することができます。全国データベースの縮尺の基準は?

各地方の当事者は、地理的(投票区、地方自治体、州)、政党および意図の歴史のテーブルを持つことになります。当事者がローカルデータを追跡することができる国家キャンペーンのために規模を拡大するには、これは各州ごとに別のテーブルを追加することで達成できると思いますか、または多数のデータベースが必要ですか(国)。

メモには、有権者の名前、住所、有権者の資格などが記載されていますが、3NFを守らなければならないと思いますか?

+2

これは、mysqlが処理できるものを考慮すると、比較的小さなデータベースのようです。はい、リレーショナルです。しかし、ユーザーが多対1を持つことができる状況の関係を選択します。私は別のテーブルに余分なデータを格納します。ユーザーテーブルを最小限に保つだけです。ユーザーベースが非常に大きくなるとスケーリングが有効になり、その時点で冗長性と同期を考慮する必要があります。それ以外の場合、これはかなりシンプルなシステムのように聞こえます –

+0

各状態のテーブルを追加すると、後で自分自身を殺すのに役立ちます。あなたは、状態ごとに別々のテーブルを持つことによって誰にも助けていません。 **同じ**構造を持つ複数のテーブルを持つことは、あなたが持っているので、まったく意味がありません。 MySQLは数十億ものレコードを扱うことができます。使用するハードウェアには常に依存します(Fusion-IOカードを搭載したブレードは、数十億回、またはナイフのような記録をバターで飛ばします)。シンプルでシンプルなシンプルなシステムで、それほど多くのレコードはありません。 –

+0

@ N.B。私は混乱があったと思う。私は状態ごとに別々のテーブルを作成するのではなく、すべての状態を保持する別々のテーブルを作成することを提案していました。各ユーザは州との1対1の関係を持つだろうが、一般的にはこれは国民が使用するだけで、通常は1つの州の情報にアクセスするように設定されている。 –

答えて

0

原則として全国選挙記録を取り扱うことは、あまりにも挑戦的であってはならない。世界最大の民主主義国であるインドは、850万人の選挙人を輩出しています。

すでに多くの国の政党によって使用され、使用されている多くの選挙データベースソフトウェアパッケージがあります。おそらくあなたは自分の代わりに作業を開始する前にそれらを研究したいと思うでしょう。独自のソリューションを構築することに決めた場合、あなたの質問はあなたにいくつかの支援が必要であることを示しているようです。データベース設計に関する質問を開発チームに伝えてください。

2

数点。

スケールを調整するときは、常に正規化されたデータから始めます。スケールアップするときに非正規化する必要があるかもしれませんが、どこで、いつ行うのかは事前に知ることができません。ノーマライゼーションは、データ管理とパフォーマンスの両面で、多くの一般的な最適化を提供します。逆正規化を開始すると、メンテナンスの問題(およびデータの異常)が増え、あるタイプのクエリに対して他のクエリのタイプを最適化していることがわかります(一部のクエリを10倍向上させることができます他のクエリは10倍の長さを要します。これは、事前にわかっていない限り通常は勝てません)。私は良いパフォーマンスを維持するために1NFを壊さなければならなかった場合に取り組んだが、そうすることでいくつかの種類のクエリへの扉を閉じることができます。

第2に、MySQLが持っていないもの(賢明な最適化やPostgreSQLへの移行を強いるかもしれません)は再帰的な共通テーブル式です。つまり、SQLのグラフ上で木構造や幅優先検索を正常に実行することはできません。地理的データベースの場合、大きな問題になる可能性があります(州を州ごとに分け、各州を郡に分け、各郡を区域に入れて、すべての責任を負うスタッフを付けることを考えてください)。だからこそ、あなたはデザインを考えて、MySQLでどのようにそれを行うのかを見てみたい(または、単一のクエリで再帰的にツリーを生成できるPostgreSQLに移動する)べき領域です。

+0

ありがとうございます。このデザインで私を助けてくれるツリー構造やユーザー/役割の割り当てについては、私が調べることができるサイト、ビデオ、書籍をお勧めしますか? –

+0

残念ながら、データベースのスケーリングは知識よりも多くの経験を要するものです。私。最適化しないことの問題は、最適化する問題ほど重要ではありません。そして、突然低レベルの詳細(物がテーブルに保存される方法など)が突然重要になることがあります。私はそこに良い勧告を持っていればいいと思う。実際には最良の選択肢は、この点について経験豊富な人と仕事をしたり、困ったときに質問をしたりすることです。 –

関連する問題