다음을 통해 공유


데이터 셰이핑 개요

데이터 셰이핑 쿼리에서 둘 이상의 논리 엔터티 간에 계층적 관계를 구축하는 것을 의미합니다. 계층 구조는 한 Recordset레코드와 다른 Recordset하나 이상의 레코드(챕터라고도 함) 간의 부모-자식 관계에서 볼 수 있습니다. 부모-자식 관계에서 부모 레코드셋 은 자식 레코드셋를 포함합니다. 이러한 계층적 관계의 예로는 고객과 주문이 있습니다. 데이터베이스의 모든 고객에 대해 0개 이상의 주문이 있을 수 있습니다. 계층적 관계는 재귀적일 수 있습니다. 즉, 손자 레코드는 자식 레코드에 중첩될 수 있습니다. 원칙적으로 계층적 레코드는 어떤 깊이로든 중첩될 수 있습니다. 실제로 ADO는 재귀를 최대 512개 레코드 집합제한합니다.

일반적으로 셰이드 Recordset 열에는 SQL Server와 같은 데이터 공급자의 데이터, 다른 Recordset대한 참조, Recordset단일 행에 대한 계산에서 파생된 값 또는 전체 Recordset열에 대한 작업에서 파생된 값이 포함될 수 있습니다. 열은 새로 제작되어 비울 수도 있습니다.

다른 Recordset대한 참조가 포함된 열의 값을 검색하면 ADO는 참조로 표시되는 실제 Recordset 자동으로 반환합니다. 레코드 집합 대한 참조는 실제로 장이라고 하는 자식의 하위 집합에 대한 참조입니다. 레코드 집합 은 하나의 부모가 두 명 이상의 자식을 참조할 수 있습니다.

데이터 셰이핑에 대한 ADO 지원을 사용하면 데이터 원본을 쿼리하여 (부모) 레코드가 (자식) Recordset을 나타내는 Recordset을 반환할 수 있습니다. 고객 주문 시나리오에서는 데이터 셰이핑을 사용하여 고객의 정보와 각 고객이 단일 쿼리로 주문한 주문을 검색할 수 있습니다. 결과 레코드 집합은 형상화된 레코드 집합이라고도 합니다.

또한 ADO의 데이터 셰이핑을 사용하면 NEW 키워드를 사용하여 부모 및 자식레코드 집합의 필드를 설명하여 기본 데이터 원본 없이 새 Recordset 개체를 만들 수 있습니다. 그런 다음 새 Recordset 개체를 데이터로 채우고 영구적으로 저장할 수 있습니다. 개발자는 자식 필드에서 다양한 계산 또는 집계(예: SUM , AVGMAX)를 수행할 수도 있습니다. 데이터 셰이핑은 자식 Recordset의 레코드를 그룹화하고, 자식의 각 그룹에 대해 부모 Recordset에 하나의 행을 배치함으로써 부모 Recordset을 생성할 수도 있습니다.

일반 SQL을 사용하면 JOIN 구문을 사용하여 데이터를 검색할 수 있지만, 지정된 부모-자식 관계에 대해 반환된 각 레코드에서 중복 부모 데이터가 반복되기 때문에 비효율적이고 다루기 어려울 수 있습니다. 데이터 셰이핑은 부모 Recordset의 단일 부모 레코드를 자식 Recordset의 여러 자식 레코드와 연결하여 JOIN의 중복을 방지할 수 있습니다. 대부분의 사람들은 부모-자식 다중 Recordset 프로그래밍 모델이 단일 Recordset JOIN 모델보다 더 자연스럽고 쉽게 작업할 수 있다고 찾습니다.