2012-02-08 12 views
2

私は現時点では新しいアプリケーションの設計段階にあります。私はいくつかのアドバイスをソースに集めることができるかもしれないと思っている設計質問を少ししています。SQL ServerのXMLデータ型を使用する方法と使用方法

私は独自の接続を使用してさまざまなデバイスに接続していますが、各デバイスはマシンの種類に応じて良いクラスを解析するデータの集合で応答します。一部のマシンは他のマシンとは異なるデータで応答しますが、共通の根拠があります。このため、単純な継承モデルがあります。

- (abstract) Machine 
    - Machine Type A 
    - Machine Type B 
    - Machine Type C 

「マシン」タイプには、すべてのマシンに共通の名前、IPアドレスなどのプロパティがあります。

この時点で私は自分のデータベースを設計するようになりました。クラスごとに異なるテーブルを用意することは望ましくありません。さらに、私は時間の経過とともにシステムに追加される新しいマシンに柔軟に対応したいと考えています。

私の考えは、「マシン」の共通の機能の列を持つテーブルと、次に特定のマシンに関する残りの情報を含むXMLフィールドを持つことでした。このようにして、データベースに冗長な "ヌル"値を持たずに柔軟性を保つことができたと思いました。

これは、マシンが記録される30または40の異なるフィーチャを有する可能性があるので、これはまた、カラムのカウントダウンを維持する。

これまでXMLデータ型を使用したことがないので、私はこの問題を賢明なやり方で考えていますか? XMLフィールドを使用する意味は何ですか?

XMLのフィールドで検索する可能性は低く、一般的なフィールドでしか検索できないことにも注意してください。

答えて

2

これらのカスタムデータのデータを使用する頻度と頻度によって異なります。

基本的には、XML全体をBLOBとして保存する必要があり、まったくクエリしない場合、XMLデータ型は本当に良い選択肢です。 の詳細情報を抽出するためにクエリを実行します。これは実行するのが最も効果的ではありません。

その特定のデータがあなたのアプリの心と魂であり、いつもそれを使用してクエリする必要がある場合は、必要なリレーショナルテーブルを作成してその方法で保存するだけです。あなたがXML形式のデータのほとんどの時間を(例えばあなたには、いくつかのソースからそれを得ることが必要な場合

XMLデータ型は

  • 素晴らしいですが、いくつかの他の場所を楽しみ、おそらくそれを、それを格納するために必要再び照会:しかし、再び - )

  • あなたは非常に頻繁に照会し、使用していないデータを格納する必要がある場合は、

SQL ServerのXMLデータ型は非常にうまく機能しますそれは可能ですが、むしろ遅い(リレーショナル表の照会と比較して)。

+0

EAVモデルを代わりに使用することを提案しますか? – KingCronus

+2

@AdamKing:** NO !! **なぜ[ここ(ポイント番号3)]を参照してください(http://www.simple-talk.com/sql/database-administration/five-simple--database-design-エラー - あなたがすべきである/)、[ここ](http://www.simple-talk.com/sql/t-sql-programming/avoiding-the-eav-of-destruction/)恐ろしく間違ってしまったEAVシステムの](http://www.simple-talk.com/content/article.aspx?article=292) - ここではしないでください! –

+3

私は今尋ねてうれしい! – KingCronus

3

個人的には、XMLをデータベースに格納しないようにすることをお勧めします。このアプローチは、強力なサーバーでOracle 10gを使用した後に使用します。XMLから値をフィルタリングし、パフォーマンスは急落し始めます..はい、あなたはXMLDBの設定を深く深く知ることができますが、それはあなたを怒らせるようになります。

まず、任意のデータを保存する際の他の質問をいくつかお試しください。 Storing Scientific Data in a Relational Database

データの使用方法、抽出方法、クエリの使い方を考えるのが賢明です。

関連する問題