データ シェイプの概要

データシェイプ とは、クエリ内の2つ以上の論理エンティティ間の階層リレーションシップを構築することを意味します。 階層は、1つのレコード セットのレコードと、別のレコード セット の1つまたは複数のレコード (チャプターとも呼ばれます) の間の親子関係に表示できます。 親子リレーションシップでは、親 レコードセット に子 レコードセット が含まれています。 このような階層関係の例として、顧客と注文があります。 データベース内のすべての顧客に対して、0個以上の注文を行うことができます。 階層リレーションシップは再帰的にすることができます。つまり、孫レコードを子レコードに入れ子にすることができます。 原則として、階層レコードは任意の深さに入れ子にすることができます。 実際には、ADO は再帰を最大512の レコードセット s に制限します。

一般に、整形された レコードセット の列には、Microsoft® SQL Server、別の レコードセット への参照、レコードセット の1行の計算から派生した値、レコードセット 全体の列に対する操作から派生した値など、データプロバイダーからのデータを含めることができます。 また、新たに列を設定したり、空にしたりすることもできます。

別の レコードセット への参照を含む列の値を取得すると、その参照によって表される実際の レコードセット が ADO によって自動的に返されます。 レコードセット への参照は、実際には、チャプター と呼ばれる子のサブセットへの参照です。 1つの親が複数の子 レコードセット を参照できます。

データシェイプの ADO サポートにより、データソースに対してクエリを実行し、(親) レコードが (子) レコード セット を表す レコードセット を返すことができます。 顧客注文シナリオでは、データシェイプを使用して、顧客の情報だけでなく、1つのクエリで各顧客が配置した注文を取得することもできます。 結果の レコードセット は、整形された レコードセット とも呼ばれます。

さらに、ADO のデータシェイプを使用すると、新しい キーワードを使用して親および子の レコードセット のフィールドを記述することにより、基になるデータソースを使用せずに新しい レコードセット オブジェクトを作成できます。 その後、新しい レコードセット オブジェクトにデータを設定し、永続的に格納することができます。 開発者は、子フィールドでさまざまな計算や集計 ( SUMAVGMAX など) を実行することもできます。 また、子のレコードをグループ化し、子の各グループの親に1つの行を配置することで、子 レコードセット から親 レコードセット を作成することもできます。

通常の SQL では、結合 構文を使用してデータを取得できますが、特定の親子リレーションシップに対して返される各レコードで重複する親データが繰り返されるため、非効率的で扱いにくくなる可能性があります。 データシェイプは、親レコード セット 内の1つの親レコードを、子レコード セット 内の複数の子レコードに関連付けることができます。これにより、 結合 の冗長性が回避されます。 ほとんどの人は、親子関係にある複数の レコードセット プログラミングモデルを、単一の レコードセット結合 モデルよりも自然で使いやすくしています。