0

機械で使用できる部品の一般的な情報(参照、製造など)を含むテーブルコンポーネントがあります。しかし、バルブやエンジンなど、非常に異なる種類の部品を使用することができます。したがって、各タイプの部品には、異なるタイプの仕様データがあります。

たとえば、バルブには直径に関する情報がありますが、エンジンにはパワーに関する情報があります。バルブの力に関する情報を持っているのは意味がありません。

私は2つの選択肢を考えています。まず、仕様のすべてのデータを含む一意のテーブルを作成するため、多くのフィールドValveDiamterValveMaterial.... EnginePower、などがあります。この場合、問題は、1つのピースの場合、値が少ないEngineTypeすべてのフィールドがあることです。 nullpiceのタイプの情報を含むいくつかのフィールド。

他の解決策は、ピースのタイプごとに1つの仕様表を用意することです。だから私はテーブルなどを持っているでしょうValveSpecificaiontsEngineSpecificationsこれは私にたくさんのテーブルを持たせますが、ピースの種類に応じて必要な情報だけがあります。

何が最善の選択肢になるのだろうか。他の選択肢はありますか?

4

3 に答える 3

2

多くのフィールドを持つ1つのテーブル(ほとんどのフィールドが1つのレコードで使用されない)と、いくつかのフィールドを持つ多くのテーブル(ほとんどのフィールドがほとんど常に使用される)のどちらかを決定しているようです。これが役立つかもしれないいくつかの質問です:

  1. 「バルブ」データは「エンジン」データとは異なるクエリで使用されますか、それともすべて同時に使用されますか?多くのテーブルのアプローチを使用する場合は、面倒になる可能性のあるユニオンクエリでこれらのテーブルを常に文字列化する必要があります。
  2. どのくらいの量のデータが保存され、どのくらいの頻度でアクセスされますか?速度を上げるために、テーブルの数を減らした方がよい場合があります。
于 2012-07-16T16:10:47.327 に答える
1

このようなものに対処するには、いくつかの異なる方法があります。

  1. あなたが言ったように、単一の大きなテーブルとnullの未使用の属性を持つことです。これは、一連の共通属性と比較的少数の外れ値がある場合にうまく機能します。
  2. アイテムタイプごとに個別の属性テーブルを作成します。
  3. 単一の属性テーブルを作成し、アイテムIDを外部キーとして属性名と値を格納します。
  4. xml列を作成し、属性セットをxmlとして保存します。

最適なものは、属性の総数、共通の属性の数、および属性を検索可能にする必要があるかどうかによって異なります。

于 2012-07-16T16:06:07.243 に答える
1

十分な情報に基づいた決定を行うには、より多くの情報が必要になります(主に、それがどのように使用されるか、および部分がどのように相互に関連するかについて)が、原則として、に適用される列のみを含むより多くのテーブルを使用することをお勧めします各ピース。

これには、作業が簡単で、多くの(すべてではありませんが)一般的な使用パターンに対してより効率的なピースに合わせて調整できるという利点があります。これは、テーブルを意図的に正規化した場合に見られるパターンである可能性もあります。これは、多くの場合、実行する価値があります。

それに加えて、特定のタイプの不整合を防ぐのに役立つ可能性があります(たとえば、ピースがそれに適用されない属性を受け取らないようにするなど)。

于 2012-07-16T16:32:31.717 に答える