Docs Menu
Docs Home
/
Relational Migrator
/ /

내장된 문서

이 페이지의 내용

  • 이 작업에 대하여
  • 단계
  • 예시

Embedded Documents 매핑 규칙을 사용하여 외래 키 관계 를 비정규화합니다. Embedded Documents 를 사용하면 상위 컬렉션 에 하위 외래 키 필드를 중첩할 수 있습니다.

Embedded Documents 옵션을 사용하여 관계형 데이터를 비정규화할 때 사용할 수 있는 주요 옵션은 두 가지가 있습니다.

  • 하위 문서를 상위 문서에 포함하고 PrefixField name 를 지정할 수 있습니다.

  • 부모 수준에서 행을 필드로 나타내는 부모 항목에 병합할 수 있습니다.

Embedded Documents 매핑 규칙은 고급 매핑 규칙 옵션입니다. 매핑 모델에 명시적으로 추가되어야 합니다.

  • Embedded Documents 매핑 규칙은 매핑하는 관계형 테이블이 외래 키 관계의 한 쪽에 있는 경우 사용할 수 있습니다.

  • 외래 키가 포함된 테이블은 MongoDB 모델의 collection에도 매핑되어야 합니다.

1
  1. 왼쪽 Schema model 창에서 MongoDB 또는 Relational 헤더 아래의 컬렉션 을 클릭합니다.

    그러면 화면 오른쪽에 Mappings 창이 열립니다.

2
  1. Mapping 화면에서 + Add 을 클릭하여 새 매핑 규칙을 만들거나 다음을 클릭합니다. 아이콘을 클릭하여 기존 규칙을 편집합니다.

  2. Migrate table as Embedded documents 을 선택합니다.

3
  1. 드롭다운에서 Source table 또는 Parent collection 의 이름을 선택합니다.

  2. 루트 경로를 구성합니다:

    • Prefix: 규칙 계층 구조를 지정합니다.

    • Field name: 내장된 배열 또는 문서 가 포함된 필드 를 지정합니다.

4

두 테이블 사이에 둘 이상의 외래 키가 있는 경우 포함할 외래 키를 선택할 수 있습니다. 이 옵션은 여러 외래 키 링크가 있는 테이블 또는 컬렉션에만 표시됩니다.

  1. Foreign key link 드롭다운에서 포함할 외래 키의 이름을 선택합니다.

5
  1. 상위 컬렉션 수준에서 다음을 클릭하여 테이블 행을 필드로 병합합니다. 아이콘을 클릭 필드 .

6

표현식 이 true 을 반환하는 행을 명시적으로 포함할 수 있습니다. 이는 SQL 쿼리 를 기반으로 필터하다 하고 특정 테이블의 모든 행에 적용 되는 테이블 필터 와는 다릅니다. 매핑 규칙 필터는 특정 매핑에만 적용 됩니다.

  1. Mappings 창에서 다음을 클릭합니다. Advanced settings 옆에 있는 아이콘을 클릭합니다.

  2. Add mapping rule filter 을(를) 선택합니다. 아이콘을 클릭합니다.

  3. Value expression 텍스트 상자에 유효한 JavaScript 필터하다 표현식 을 입력합니다.

7
  1. 새 매핑 규칙에 대한 옵션을 정의합니다. 매핑 규칙 옵션을 정의할 때 다음을 수행할 수 있습니다.

    • collection 이름을 변경합니다.

      컬렉션 이름을 변경하려면 Name 텍스트 상자를 클릭하고 새 이름을 입력합니다. 변경 사항을 저장하려면 텍스트 상자 외부를 클릭합니다. 해당 이름이 이미 사용 중인 경우 유효성 검사 오류가 발생합니다.

    • 계산된 필드를 추가 하여 관계형 소스 열을 기반으로 새 필드를 만듭니다. 자세한 내용은 계산된 필드 를 참조하세요.

    • 필드 이름을 변경합니다.

    • 필드 이름 옆에 있는 아이콘을 클릭하여 마이그레이션 작업 에서 필드 를 포함하거나 제외합니다.

8
  1. Save And Close를 클릭합니다.

이 섹션에서는 Embedded Documents 매핑 규칙의 관계형 입력과 MongoDB 출력을 보여 줍니다.

이 예시에서는

  • Order 테이블에 Embedded Documents 매핑 규칙이 적용됩니다.

  • OrderLine 테이블에는 두 개의 행이 있고 Order 테이블에는 하나의 행이 있습니다.

  • 상위 collection은 OrderLine 로 설정됩니다.

  • Merge fields into the parent 이 선택되지 않았습니다.

  • Field name 이(가) order(으)로 설정됩니다.

이 예제의 입력 및 출력을 보려면 아래 탭을 클릭하세요.

OrderLine 테이블:

OrderLineID
주문 ID
제품 ID
수량

1

1

1

1

4

1

3

1

Order 테이블:

주문 ID
CustomerID
총 금액
OrderStatusID

1

1

550.00

1

이제 OrderLine 컬렉션 의 문서에는 Order 세부 정보가 Orders 라는 내장된 문서 로 포함되어 있습니다.

{
ObjectID: {
OrderLineID: 1,
},
OrderID: 1,
ProductID: 1,
Quantity: 1,
Orders: {
OrderID: 1,
CustomerID: 1,
TotalAmount: 550,
OrderStatusID: 1,
},
},
{
ObjectID: {
OrderLineID: 4,
},
OrderID: 1,
ProductID: 3,
Quantity: 1,
Orders: {
OrderID: 1,
CustomerID: 1,
TotalAmount: 550,
OrderStatusID: 1,
},
}

이 예시에서는

  • OrderLine 테이블에는 4개의 행이 있고 주문 테이블에는 3개의 행이 있습니다.

  • Order 테이블에 Embedded Documents 매핑 규칙이 적용됩니다.

  • 상위 collection은 OrderLine 로 설정됩니다.

  • Merge fields into the parent 이 선택됩니다.

  • Prefix 이(가) (root)(으)로 설정됩니다.

이 예제의 입력 및 출력을 보려면 아래 탭을 클릭하세요.

OrderLine 테이블:

OrderLineID
주문 ID
제품 ID
수량

1

1

1

1

2

2

2

1

3

3

3

1

4

1

3

1

Order 테이블:

주문 ID
CustomerID
총 금액
OrderStatusID

1

1

550.00

1

2

2

100.00

2

3

3

500.00

3

OrderLine 컬렉션 의 문서에는 Order 세부 정보가 상위 문서 에 필드로 병합되어 있습니다.

{
_id: {
orderLineId: 1,
},
orderId: 1,
productId: 1,
quantity: 1,
customerId: 1,
orderStatusId: 1,
totalAmount: 550,
},
{
_id: {
orderLineId: 2,
},
orderId: 2,
productId: 2,
quantity: 1,
customerId: 2,
orderStatusId: 2,
totalAmount: 100,
},
{
_id: {
orderLineId: 3,
},
orderId: 3,
productId: 3,
quantity: 1,
customerId: 3,
orderStatusId: 3,
totalAmount: 500,
},
{
_id: {
orderLineId: 4,
},
orderId: 1,
productId: 3,
quantity: 1,
customerId: 1,
orderStatusId: 1,
totalAmount: 550,
}

돌아가기

임베디드 배열