2009-04-11 9 views
2

DBを設計する経験はあまりありません。私には理論的な知識がありますが。批判的な私のDBデザイン

だから、私の問題に。私たちは、たくさんのExcelファイル(yah、驚き!)のデータを持っており、それらをDBに移動したいと考えています。

簡略化するため、システムが集中型アラームシステムであるとしましょう。データは遠隔地から集められ、集中監視室に表示されます。 各ロケーションには一意の名前と複数のデバイスがあります。ある場所内では、デバイス名は一意であり、デバイスには複数のアラームがあります。デバイス内では、アラーム名は一意です。

各場所には、その場所のアラームを集約して送信する1つ以上のターミナルユニット(TU)があります。それぞれのTUには一枚のカードがあり、それぞれにTUごとに一意のIDが付いています。各カードには、カードごとに一意のアドレスを持つ各アラームの配線終端接点があります。

これらのエンティティのいずれも、名前を変更/再描画することができます。

ご覧のとおり、データは高度に階層的です。そして、私は各配線コンタクトのアラームの割り当て(関係)の履歴を保存する必要があります。アラームは、1つの連絡先から別の連絡先への割り当てを変更することができます。

Location    TU 
|     | 
+- Device   +- Card 
    |     | 
    +-- Alarm   +--Contact 
     |      | 
     +----Alarm-Contact----+ 

マイデザイン: 私は、上記の各エンティティのテーブルを作成しました。私は、自動インクリメント整数としてそれらのすべてに人工主キーを使用しました。階層構造のテーブル(Tn)は、コンポジション(Tn.name、Tn-1.pk、Tn-2.pk、...)の一意性制約を持ちます。ここで、Tnはテーブルの深さ(n)です。階層と(pk)はテーブルの主キーです。

私はSQL Serverを使用していますが、私は自動インクリメント整数PKに疑問を抱いています。私が10のレコードを持っていて、最後のレコード(10番目)以外のレコードをすべて削除したとしましょう。次の追加レコードは11に番号付けされますか、またはDBMSはそれらを10 - > 1、新しい - > 2に番号付けし直しますか?前者が正しい場合、PKオーバーフローの問題を解決する方法。

もう1つの質問は、これに関する履歴データをどのようにモデル化するかです。私は、Alarm-Contactテーブルへのn-1の関係を持つAlarm-Contact-Historyテーブルを作成する必要があると考えています。

おかげ

答えて

2

あなたはちょうどあなたが正確な歴史を作ることはありませんアラーム・コンタクト履歴テーブルを作成する場合。各カードが別のTUに移動される可能性があると仮定すると、カードの連絡先を使用していたときにカードがどのTUにインストールされたかはわかりません。

カードID、TU ID、ロケーションID、およびデバイスIDが含まれているアラーム連絡履歴が強化されている可能性があります。そうすれば、履歴レコードが生成された時点の正確な構成がわかります。途中で何かが動き回った場合、その時点でどのようになっていたかを知っていたので気にしません。

SQL Serverは引き続き識別子に割り当てられた値をインクリメントします。いくつのレコードがあると思いますか?それが大量(21億4,000万ドル)の場合は、識別子にbigintを使用することをお勧めします。

-2

私は別の計画を提案します。

ウォームアップとして、ExcelからMS Accessにデータを変換します。 ExcelとAccessは相互運用できるため、変換は非常に簡単です。

自動インクリメント番号は使用しないでください。代わりに、新しい番号を挿入するたびにVBAなどで実行する関数を記述してください。新しい番号の割り当てを制御する独自のアルゴリズムを作成し、DBMSの恩恵を受けるのではなく、独自のアルゴリズムを作成します。

MS Accessでインタラクティブなクエリビルダーなどを使用すると、習得や手間を省くことができます。しかし、たとえ作成していなくても、SQLビューを使用してすべての照会の働きを把握することができます。

次に、SQL Serverバージョンをビルドします。その方言のSQLに特有のMS Accessの機能を抽象化しますが、プロトタイプの構築を学んだことのほとんどを使用します。あなたの自動インクリメントコードはトリガーになります。

ああ、ところで、あなたが学んだ理論を忘れないでください。それは便利かもしれない。

関連する問題