次の方法で共有


データ成形の概要

データ 整形 は、クエリ内の 2 つ以上の論理エンティティ間に階層リレーションシップを構築することです。 階層は、1 つの Recordsetのレコードと、別の Recordsetの 1 つ以上のレコード (章とも呼ばれる) の間の親子関係を見ることができます。 親子リレーションシップでは、親 Recordset は子 Recordsetを含みます。 このような階層関係の例として、顧客と注文があります。 データベース内のすべての顧客に対して、0 個以上の注文が存在する場合があります。 階層関係は再帰的であることがあり、そのため、孫レコードを子レコードの中に入れ子構造として配置することができます。 原則として、階層レコードは任意の深さに入れ子にすることができます。 実務上は、ADO は再帰を最大 512 Recordsetに制限しています。

一般に、形状 Recordset の列には、SQL Server などのデータ プロバイダーからのデータ、別の Recordsetへの参照、Recordsetの単一行の計算から派生した値、または Recordset全体の列に対する操作から派生した値を含めることができます。 列は、新しく製造され、空であることもできます。

別の Recordsetへの参照を含む列の値を取得すると、ADO は参照によって表される実際の Recordset を自動的に返します。 Recordset への参照は、実際には子のサブセットへの参照であり、チャプターと呼ばれます。 1人の親は、Recordset において以上の複数の子を参照できます。

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

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

通常の SQL では、JOIN 構文を使用してデータを取得できますが、特定の親子関係に対して返される各レコードで冗長な親データが繰り返されるため、非効率的で扱いにくい場合があります。 データ シェイプによって、親レコードセット から単一の親レコード を子レコードセット 内の複数の子レコードと関連付けることができ、JOINの冗長性を回避できます。 ほとんどのユーザーは、単一の Recordset JOIN モデルよりも、親子関係の複数の Recordset プログラミングモデルの方が自然で簡単に操作できると感じています。