数据整理概述

数据整理是指在查询中的两个或多个逻辑实体之间建立层次结构关系。 在一个 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 关键字来描述父 Recordset 和子 Recordset 的字段,从而在无需基础数据源的情况下创建新的 Recordset 对象。 然后可以用数据填充新的 Recordset 对象并将其永久存储。 开发人员还可以对子字段执行各种计算或聚合(例如 SUM、AVG 和 MAX)。 数据整理还可以从子 Recordset 创建父 Recordset,方法是对子级中的记录进行分组,并在父级中为子级中的每个组放置一行

常规 SQL 使你能够使用 JOIN 语法检索数据,但这种方式不仅效率低而且难操作,因为在为给定父子关系返回的每条记录中都会重复冗余的父数据。 数据整理可以将父 Recordset 中的单个父记录与子 Recordset 中的多个子记录相关联,从而避免 JOIN 的冗余。 大多数人发现父子结构的多 Recordset 编程模型比单一 Recordset JOIN 模型更自然且更易于使用