2013-03-13 4 views
5

データベースには、エンジニアリングプロジェクトのさまざまなオブジェクトタイプ(モーター、ケーブル、ポンプ、センサーなど)が格納されています。多くのオブジェクトタイプをSQLデータベースに保存したいと思います。オブジェクトタイプごとに異なるテーブルを用意する必要がありますか?

オブジェクトタイプごとに異なるテーブルを使用するかどうか議論していますか? (テーブルのヒープ、新しいオブジェクトタイプを追加するときの痛み) -

または、私たちが現在行っているように、オブジェクトタイプを格納するテーブルを1つ用意する必要があります(ID、name)と、各オブジェクト型の可能な属性を格納する別の表と、各属性型の各属性の値を格納する別の表(本物のPITAですが、フレキシブルです)

誰でも同様のことをしましたか?考慮すべき点は?実装?

+3

私には、ストレージとしてSQLデータベースを使用して独自のNoSQLデータベースを構築しようとしているようで、後者はちょっと聞こえます。 –

+3

EAVとタイプごとのテーブルのような音。 [ここ](http://stackoverflow.com/questions/4066463/should-i-use-eav-model?lq=1)と[here](http://stackoverflow.com/questions/870808/entity-属性値データベース対厳密関係モデル電子商取引質問) –

+1

[製品表、多くの種類の製品、各製品には多くのパラメータがあります]の重複が可能です(http://stackoverflow.com/questions/695752/製品表 - 多くの種類の製品 - それぞれの製品に多数のパラメータがあります) –

答えて

6

Patterns of Enterprise Application Architecture(ファウラー)のコピーを手に入れることができる場合は、Object-Relational Structural Patternsをご覧ください。それぞれのアプローチに賛否両論があり、あなたの特定のプロジェクトの状況によって答えが異なるでしょう。具体的に

Single Table Inheritance

Class Table Inheritance

Concrete Table Inheritance

Serialized LOB(そして、あなたは、このパターンもRDBMSの代わりにのNoSQLデータストアを使用することを検討して検討している場合)

最大答えが必要な質問はwですリレーショナルデータベースは、データの正しいデータストアです。あなたはちょうどデータを保存する場所を探していますか?あなたはお互いの関係で異なるオブジェクトからのデータを使用しますか? Serialized LOBに大きなシリアル化フレームワーク(Kryoなど)を使用して、標準列のリレーションシップの検索または関連付けに必要なメタデータを格納すれば十分でしょう。

+2

いつものように、ビジネス要件を明確に理解することは、合理的な技術選択をするために必要な前提条件です。 –

関連する問題