数据整形 意味着在查询中的两个或多个逻辑实体之间构建分层关系。 可以在一个 Recordset 的记录与另一个 Recordset 的一个或多个记录(也称为章节)之间的父子关系中看到层次结构。 在父子关系中,父 Recordset 包含子 Recordset。 此类分层关系的一个示例是客户和订单。 对于数据库中的每个客户,可以有零个或多个订单。 分层关系可以是递归的,这意味着孙子记录可以嵌套在子记录中。 从理论上讲,层次记录可以嵌套到任意深度。 在实践中,ADO 将递归限制为最多 512 个 Recordset。
通常,结构化 记录集 的列可以包含来自数据提供程序的数据,如 SQL Server、对另一个 记录集 的引用、从 记录集 的单个行的计算派生的值,或从整个 记录集 列的操作派生的值。 列也可以是新捏造的,也可以为空。
检索包含对另一个 Recordset 的引用的列的值时,ADO 会自动返回由引用表示的实际 Recordset 。 对 Recordset 的引用实际上是对子集的引用,称为 章节。 单亲父母可以引用多个子Recordset。
ADO 对数据整形的支持使你可以查询数据源并返回 一个记录集 ,其中(父)记录表示(子) 记录集。 在客户订单方案中,可以使用数据整形来检索客户的信息以及每个客户在单个查询中下达的订单。 生成的 Recordset 也称为格式化 记录集。
此外,通过 ADO 中的数据整形,可以使用 NEW 关键字描述父记录集和子记录集的字段来创建新的 Recordset 对象,而无需基础数据源。 然后,可以使用数据填充新的 Recordset 对象并持久存储。 开发人员还可以对子字段执行各种计算或聚合(例如 SUM、 AVG 和 MAX)。 数据整形还可以通过对子 记录集中的记录进行分组,并在父 记录集中为子记录集的每个组放置一行,从而创建父记录集。
常规 SQL 允许使用 JOIN 语法检索数据,但这可能效率低下且笨重,因为在给定的父子关系中,每条返回的记录都会重复冗余的父数据。 数据整形可以将父 Recordset 中的单个父记录与子 Recordset 中的多个子记录相关联,从而避免 JOIN 的冗余。 大多数人发现父子多 Recordset 编程模型比单个 Recordset JOIN 模型更自然且更易于使用。