2011-08-05 24 views
0

参照テーブルを作成したい。行と列の数は、時間の経過とともに増加(冗長化)する可能性があります。列名は時間とともに変化することがあります。列「位置」の値が行(n)の「ITエンジニア」であることを許可します。その特定の行(n)が列構造のさらに下にある場合、「Behind Sheds」列にあると言うと、取得する必要がある値です。列の数が固定されていても問題はありませんでしたが、T-SQLでは列が動的に追加されるようになりました。これらの列の名前を変更してもかなり簡単です。私の質問は、上記の例のためにダイナミックに列を追加するのがよい習慣であるか、それともより良い選択肢があり、どのようにするのですか?SQl参照テーブル - 動的列

ありがとうございました。

答えて

1

はフィールドを持つほかのテーブルのようなものより有効に活用することがあります。person_id(メインテーブルへの外部キー)、person_param(例として「ポジション」)、person_value(例として、「ITエンジニア」)?

+0

+1私は同意します。通常、スキーマを変更している場合は間違っています。 –

+0

私はSubdiggerが正しいアイデアを持っていると思います。列[位置]と[場所]が一意で、[値]列に必要な値がある複数の行があります。はるかに簡単になります。ありがとう –

0

あなたの問題は、EAVモデルを実装するための権利であると考えます。

代わりに20列を持つ基本的に、あなたは3を持っています(そうでない場合は、列名として知られている)

  • エンティティ
  • 属性
  • 値(実際には異なる種類の複数の値、かもしれない、とあなた

このように、データベース内の10個のエンティティに対して、それぞれ20個の列があると、EAVテーブルに200行のデータが移入されます。パフォーマンスは低下しますが、クエリは難しくなりますが、柔軟性があるため、各エンティティに異なる属性セットを設定することもできます。

関連する問題