資料成形概觀
「資料成形」表示在查詢中建立兩個或多個邏輯實體之間的階層式關聯性。 階層可見於一個 Recordset 的記錄,以及另一個 Recordset 的一或多個記錄 (也稱為章節) 的父子式關聯性之中。 在父子式關聯性中,父 Recordset 包含子 Recordset。 這類階層式關聯性的範例是客戶和訂單。 對於資料庫中的每一位客戶,可以有零或多個訂單。 階層式關聯性可以是遞迴的,這表示孫系記錄能以巢狀方式放在子記錄中。 基本上,階層式記錄能以巢狀方式放在任何深度。 實際上,ADO 會將遞迴限制為最多 512 個 Recordset。
一般而言,成形 Recordset 的資料行可以包含來自資料提供者的資料,例如 SQL Server、對另一個 Recordset 的參考、從 Recordset 單一資料列計算衍生的值,或是衍生自整個 Recordset 資料行上作業的值。 資料行也可以是新產生且空白的。
當您擷取包含另一個 Recordset 參考的資料行值時,ADO 會自動傳回參考所代表的實際 Recordset。 Recordset 的參考實際上是子集的參考,稱為「章節」。 單一父代可以參考多個子 Recordset。
資料成形的 ADO 支援可讓您查詢資料來源,並傳回 Recordset,其中 (父) 記錄代表 (子) Recordset。 在客戶訂單案例中,您可以使用資料成形來擷取客戶的資訊,以及每位客戶在單一查詢中下單的訂單。 產生的 Recordset 也稱為成形的 Recordset。
此外,ADO 中的資料成形可讓您使用 NEW 關鍵字來描述父和子 Recordsets 的欄位,以建立沒有基礎資料來源的新 Recordset 物件。 然後,新的 Recordset 物件可以填入資料並持續儲存。 開發人員也可以在子欄位上執行各種計算或彙總 (例如,SUM、AVG 和 MAX)。 資料成形也可以建立子 Recordset 的父 Recordset,方法是將子系中的記錄分組,並將一個資料列放在子系中每個群組的父代中。
一般 SQL 可讓您使用 JOIN 語法來擷取資料,但因為針對指定父子式關聯性所傳回每個記錄中具有重複的備援父資料,所以這可能缺乏效率且使用不便。 資料成形可以將父 Recordset 中的單一父記錄與子 Recordset 中的多個子記錄產生關聯,以避免 JOIN 的備援。 大部分的人發現父子式多個 Recordset 程式設計模型比單一 Recordset JOIN 模型更自然,且更容易使用。