파생 계층에서 다 대 다 관계 표시(MDS(Master Data Services))
적용 대상: SQL Server - Windows 한정 Azure SQL Managed Instance
파생 계층은 일대다 관계를 나타내며 이제는 다대다 관계를 나타낼 수도 있습니다.
다대다 관계
두 엔터티 사이에서의 다대다 관계는 두 엔터티 사이에서의 매핑을 제공해주는 세 번째 엔터티를 사용하는 모델링이 될 수 있습니다:
위의 예제에서는 매핑 엔터티 ClassRegistration에서 제공해 드리는 Employee 및 TrainingClass 엔터티 사이에서의 다대다 관계가 있습니다. 직원은 여러 수업에서 학생으로 등록될 수 있고 각 수업에는 여러 명의 학생이 포함될 수 있습니다.
예를 들면, 클래스별로 학생을 나타내 주는 파생 계층을 만들거나 관계를 반전시켜서 학생별로 그룹화하여 나타낼 수 있습니다.
참고 항목
SQL Server 2016(13.x)은 다대다 관계에 대한 파생 계층 구조를 도입하게 되었습니다. 해당 버전 이전에는 이 기능을 사용할 수 없었습니다.
먼저 파생 계층 관리 페이지로 이동하여 새 파생 계층을 만들어 보세요:
다음에는 아래에서 위로 시작하여 새로운 파생 계층에 수준을 추가해 주세요. 이 예에서는 과정별로 그룹화된 학생(직원)을 보여주려고 합니다. 그러므로 Employee 엔터티는 계층의 리프 수준이며 먼저 추가되게 됩니다:
위의 스크린샷에서 Employee 엔터티가 가운데 부분의 현재 수준 아래에서 유일한 수준으로 나타내. 오른쪽의 파생 계층 미리 보기에서는 단순하게 Employee 엔터티의 모든 구성원에 대한 목록을 나타내 줍니다. 왼쪽에 있는 사용 가능한 수준 섹션은 현재 최상위 수준(Employee)의 맨 위에 어떤 수준을 추가할 수 있는지 보여 줍니다. 이들 중 대부분은 Department DBA를 포함하여 Employee 엔터티에서 DBA(도메인 기반 특성)입니다.
SQL Server 부터는 다대다 관계를 모델링 하는 새로운 유형의 수준이 있습니다. 예를 들면: 클래스(ClassRegistration.Student을 통해 매핑 작업이 이루어짐)가 있습니다. 수준 이름은 매핑 관계를 확실하게 설명하는 데 필요한 추가적인 정보를 반영하기 위해 다른 이름보다 더 자세합니다. 이 수준을 현재 수준에서 섹션의 직원 수준으로 끌어다 놓아 주세요:
이제 미리 보기에서는 등록된 교육 클래스별로 그룹화된 직원을 나타내 줍니다. M2M 관계이므로 각 자식 구성원은 여러 부모를 가질 수 있습니다. 위의 예제에서 직원 6 {Hillman, Reinout N}은 1 {MDS(Master Data Services) 101} 및 4 {Career-Limiting Moves}의 두 가지 클래스에서 학생으로 등록되어 있습니다.
이러한 매핑 관계는 학생별로 클래스를 그룹화하여 반전된 상태로 나타낼 수도 있습니다:
다시 한 번, 자녀가 둘 이상의 부모 아래에 나타날 수 있는 방법을 살펴보세요. 교육 클래스 1 {MDS(Master Data Services) 101}은 6 {Hillman, Reinout N} 및 40 {Ford, Jeffrey L}아래에 나타날 수 있습니다.
매핑 엔터티 ClassRegistration 의 구성원은 파생 계층 내의 어느 곳에서도 나타나지 않습니다. 계층 구조에서 부모 구성원과 자녀 구성원 사이에서의 관계를 정의하는 데만 사용되는 것입니다.
다음 중 에서 하나를 실행하여 매핑 엔터티 멤버를 수정하고 다대다 관계를 편집할 수 있습니다. 다대다 관계는 파생 계층 탐색기 페이지에서 읽기 전용입니다.
엑셀용 마스터 데이터 서비스 추가 기능을 사용하거나 데이터 스테이징을 사용하여 엔터티 탐색기 페이지에서 매핑 엔터티 구성원을 수정해 보세요.
파생 계층 탐색기 페이지에서 부모 사이에서의 자녀 노드를 끌어서 놓아 주세요.
이 메서드는 가능하면 기존 구성원을 수정하고 필요하면 새 구성원을 추가해 보세요. 기존의 구성원은 삭제되지 않습니다.
예를 들어 ClassRegistration 매핑 엔터티로 학생을 사용되지 않는 노드로 이동할 때 해당 매핑 엔터티 구성원의 클래스 특성 값은 Null로 변경되며 구성원은 삭제되지 않습니다. 반대로 학생을 사용하고 있지 않은 노드에서 일부의 클래스로 이동할 때 클래스가 null인 학생에 해당되는 기존의 매핑 구성원이 있는 경우라면 해당 멤버는 null에서 새 부모로 클래스를 변경하여 수정되는 것입니다. 이러한 구성원이 없으면 추가됩니다.
이 프로세스에서는 구성원이 삭제되는 것을 방지하게 되므로 사용자 데이터가 원치 않게 삭제되는 것을 방지해주는 것입니다. 예를 들면, 매핑 엔터티에 부모와 자녀 관계를 정의하게 되는 두 개 이외의 다른 속성이 포함된 경우를 말합니다. 사용자는 매핑 엔터티에서 직접 삭제를 확실하게 실행해 주어야 합니다.
새로운 다대다 수준은 도메인을 기반으로 한 속성 수준이 허용되는 파생 계층 내에 어느 곳이든지 나타날 수 있습니다. M2M 수준은 위 예제에서와 같은 맨 위에 있을 수 있습니다. 재귀 수준을 포함하여 DBA 수준 위 및/또는 아래일 수 있습니다. 명시적 계층(사용되지 않음) 단면 수준 아래일 수 있습니다. 여러 개의 다대다 관계를 동일한 파생 계층에서 함께 연결할 수 있습니다.
다대다 수준에서는 다른 파생 계층 수준과 마찬가지로 숨겨질 수 있습니다.
샘플 모델의 M2M 관계
다대다 관계의 데모를 보려면 마스터 데이터 서비스에 포함된 고객 샘플 모델의 지역 기후 파생 계층을 확인해 주세요.
다음의 이미지에 나타나 있는 것과 같이 이 관계를 모델로 하는 수준의 이름은 기후(RegionClimate.Region을 통해 매핑 작업이 이루어짐). 미리 보기에서는 연관되어 있는 기후 유형별로 그룹화된 지역이 나타나게 됩니다. 여러 개의 기후(부모)와 연관되어 있는 지역(자녀 구성원)이 있기 때문에 이것은 다대다 관계인 것입니다. 예를 들어 APCR {Asia Pacific}은 A {Tropical} 및 B {Dry}와 연결됩니다.
고객 샘플 모델 및 마스터 데이이터 서비스를 포함하고 있는 다른 샘플 모델을 배포하는 방법은 샘플 모델 및 데이터 배포를 참고해 주세요.
일대다 관계
파생 계층의 구성원은 많은 자녀 구성원의 부모일 수 있지만 일반적으로 둘 이상의 부모를 가질 수 없습니다 (예외의 경우에는 구성원 보안을 참고해 주세요). 예를 들면, 각 직원이 하나의 부서에 속하는 직원 및 부서에서 두 개의 두 엔터티가 있다고 가정해 보세요. 이 관계에서는 Department 엔터티를 참고하고 있는 도메인을 기반으로 한 특성을 Employee 엔터티에 추가함으로 인해 모델링이 되는 것입니다:
각 직원은 하나의 부서에만 소속되어 있지만 각 부서에는 여러 명의 직원이 소속되어 있기 때문에 일대다 관계인 것입니다. 부서별로 그룹화된 직원을 나타내 주는 파생 계층을 만들 수 있습니다:
구성원 보안
구성원의 복제를 허용하는 계층 구조(구성원이 둘 이상의 부모를 가질 수 있도록 허용)는 구성원 보안 권한을 할당하는 것에는 사용할 수 없습니다. 예시:
Null 재귀를 고정하지 않는 (재귀 파생 계층) 것입니다 (재귀 수준에서의 각 구성원은 루트 및 해당 재귀 부모 모두 아래 부분에 나타남).
재귀 수준보다 높은 수준의 재귀 파생 계층인 것입니다 (재귀 수준의 각 구성원은 비 재귀 부모와 재귀적 부모 모두 아래 부분에 나타남).
다대다 수준에서의 파생 계층인 것입니다 (자녀가 여러 부모에 매핑 작업이 이뤄질 수 있음).
컬렉션
컬렉션 및 명시적 계층은 더 이상 권장되고 있지 않습니다. 변환 저장 프로시저(udpConvertCollectionAndConsolidatedMembersToLeaf)는 컬렉션 구성원을 리프 구성원으로 변환하며 다대다 파생 계층을 만들어 컬렉션 구성원의 자격 정보를 캡처합니다.