데이터 셰이핑 개요
데이터 셰이핑은 쿼리에서 둘 이상의 논리 엔터티 간에 계층적 관계를 구축하는 것을 의미합니다. 계층 구조는 한 레코드 집합의 레코드와 다른 레코드 집합의 하나 이상의 레코드(챕터라고도 함) 간의 부모-자식 관계에서 볼 수 있습니다. 부모-자식 관계에서 부모 레코드 집합에는 자식 레코드 집합이 포함됩니다. 이러한 계층적 관계의 예로는 고객과 주문이 있습니다. 데이터베이스의 모든 고객에 대해 0개 이상의 주문이 있을 수 있습니다. 계층적 관계는 재귀적일 수 있습니다. 즉, 손자 레코드는 자식 레코드에 중첩될 수 있습니다. 원칙적으로 계층적 레코드는 모든 깊이에 중첩될 수 있습니다. 실제로 ADO는 재귀를 최대 512개의 레코드 집합으로 제한합니다.
일반적으로 셰이핑된 레코드 집합의 열에는 SQL Server와 같은 데이터 공급자의 데이터, 다른 레코드 집합에 대한 참조, 레코드 집합의 단일 행에 대한 계산에서 파생된 값 또는 전체 레코드 집합의 열에 대한 작업에서 파생된 값이 포함될 수 있습니다. 열을 새로 제작하여 비워 둘 수도 있습니다.
다른 레코드 집합에 대한 참조가 포함된 열의 값을 검색하면 ADO는 참조가 나타내는 실제 레코드 집합을 자동으로 반환합니다. 레코드 집합에 대한 참조는 실제로 챕터라고 하는 자식의 하위 집합에 대한 참조입니다. 한 부모가 둘 이상의 자식 레코드 집합을 참조할 수 있습니다.
데이터 셰이핑에 대한 ADO 지원을 사용하면 데이터 원본을 쿼리하고 (부모) 레코드가 (자식) 레코드 집합을 나타내는 레코드 집합을 반환할 수 있습니다. 고객 주문 시나리오에서는 데이터 셰이핑을 사용하여 고객의 정보와 각 고객이 단일 쿼리로 주문한 주문을 검색할 수 있습니다. 결과 레코드 집합을 셰이핑된 레코드 집합이라고도 합니다.
또한 ADO의 데이터 셰이핑을 사용하면 NEW 키워드를 사용하여 부모 및 자식 레코드 집합의 필드를 설명하여 기본 데이터 원본 없이 새 레코드 집합 개체를 만들 수 있습니다. 그런 다음, 새 레코드 집합 개체를 데이터로 채우고 영구적으로 저장할 수 있습니다. 개발자는 자식 필드에서 다양한 계산 또는 집계(예: SUM, AVG 및 MAX)를 수행할 수도 있습니다. 데이터 셰이핑은 자식 레코드를 그룹화하고 자식의 각 그룹에 대해 부모에 한 행을 배치하여 자식 레코드 집합에서 부모 레코드 집합을 만들 수도 있습니다.
일반 SQL을 사용하면 JOIN 구문을 사용하여 데이터를 검색할 수 있지만 지정된 부모-자식 관계에 대해 반환된 각 레코드에서 중복 부모 데이터가 반복되므로 비효율적이고 다루기 어려울 수 있습니다. 데이터 셰이핑은 부모 레코드 집합 의 단일 부모 레코드를 자식 레코드 집합의 여러 자식 레코드와 연결하여 JOIN의 중복성을 방지할 수 있습니다. 대부분의 사람들은 부모-자식 다중 레코드 집합 프로그래밍 모델이 단일 레코드 집합 JOIN 모델보다 더 자연스럽고 쉽게 작업할 수 있다고 생각합니다.