Поделиться через


Общие сведения о формировании данных

формирование данных означает создание иерархических связей между двумя или более логическими сущностями в запросе. Иерархию можно увидеть в отношениях между записью одного Recordsetи одной или несколькими записями (также известных как главы) другого Recordset. В отношениях между родительским и дочерним элементами родительский Recordset содержит дочерний Recordset. Примером такой иерархической связи являются клиенты и заказы. Для каждого клиента в базе данных может не быть ни одного заказа или быть несколько заказов. Иерархическая связь может быть рекурсивной, что означает, что записи внука могут быть вложены в дочернюю запись. В принципе, иерархическая запись может быть вложена на любую глубину. На практике ADO ограничивает рекурсию не более 512 Recordset.

Как правило, столбцы набора записей могут содержать данные от поставщика данных, например SQL Server, ссылки на другой набор записей , значения, производные от вычисления одной строки набора записей, или значения, производные от операции над столбцом целого набора записей . Столбец также может быть новосозданным и пустым.

При получении значения столбца, содержащего ссылку на другой набор записей , ADO автоматически возвращает фактический набор записей , представленный ссылкой. Ссылка на набор записей фактически является ссылкой на подмножество дочернего набора данных, называемого главой . Один родитель может ссылаться на более чем одного ребенка Recordset.

Поддержка ADO для формирования данных позволяет запрашивать источник данных и возвращать набор записей, в котором (родительская) запись представляет собой (дочерний) набор записей . В сценарии заказа клиента можно использовать формирование данных для получения сведений клиентов, а также заказов, размещенных каждым клиентом в одном запросе. Результирующий набор записей также известен как оформленный наборзаписей.

Кроме того, формирование данных в ADO позволяет создавать новые объекты Recordset без базового источника данных, используя ключевое слово NEW, чтобы описать поля родительских и дочерних Recordset. Затем новый объект Recordset можно заполнить данными и постоянно храниться. Разработчики также могут выполнять различные вычисления или агрегаты (например, СУММ, AVGи MAX) в дочерних полях. Форматирование данных также может создать родительский набор записей из дочернего набора записей путем группировки записей в дочернем наборе и размещения одной строки в родительском наборе для каждой группы в дочернем наборе.

Обычный SQL позволяет получать данные с помощью синтаксиса JOIN, но это может быть неэффективно и неудобно, так как избыточные родительские данные повторяются в каждой записи, возвращаемой для заданного отношения родитель-потомок. Формирование данных может связать одну родительскую запись в родительском наборе записей с несколькими дочерними записями в дочернем наборе записей, избегая избыточности соединения (JOIN) . Большинство пользователей считают модель программирования в формате "родитель-ребенок" с несколькими Recordset более естественной и удобной для работы, чем модель с единственным Recordset JOIN.