내장된 문서
Embedded Documents 매핑 규칙을 사용하여 외래 키 관계 를 비정규화합니다. Embedded Documents 를 사용하면 상위 컬렉션 에 하위 외래 키 필드를 중첩할 수 있습니다.
Embedded Documents 옵션을 사용하여 관계형 데이터를 비정규화할 때 사용할 수 있는 주요 옵션은 두 가지가 있습니다.
하위 문서를 상위 문서에 포함하고 Prefix 및 Field name 를 지정할 수 있습니다.
부모 수준에서 행을 필드로 나타내는 부모 항목에 병합할 수 있습니다.
Embedded Documents 매핑 규칙은 고급 매핑 규칙 옵션입니다. 매핑 모델에 명시적으로 추가되어야 합니다.
이 작업에 대하여
Embedded Documents 매핑 규칙은 매핑하는 관계형 테이블이 외래 키 관계의 한 쪽에 있는 경우 사용할 수 있습니다.
외래 키가 포함된 테이블은 MongoDB 모델의 collection에도 매핑되어야 합니다.
단계
(선택 사항) 매핑 규칙 필터 구성
표현식 이 true
을 반환하는 행을 명시적으로 포함할 수 있습니다. 이는 SQL 쿼리 를 기반으로 필터하다 하고 특정 테이블의 모든 행에 적용 되는 테이블 필터 와는 다릅니다. 매핑 규칙 필터는 특정 매핑에만 적용 됩니다.
Mappings 창에서 다음을 클릭합니다. Advanced settings 옆에 있는 아이콘을 클릭합니다.
Add mapping rule filter 을(를) 선택합니다. 아이콘을 클릭합니다.
Value expression 텍스트 상자에 유효한 JavaScript 필터하다 표현식 을 입력합니다.
필드 구성
새 매핑 규칙에 대한 옵션을 정의합니다. 매핑 규칙 옵션을 정의할 때 다음을 수행할 수 있습니다.
collection 이름을 변경합니다.
컬렉션 이름을 변경하려면 Name 텍스트 상자를 클릭하고 새 이름을 입력합니다. 변경 사항을 저장하려면 텍스트 상자 외부를 클릭합니다. 해당 이름이 이미 사용 중인 경우 유효성 검사 오류가 발생합니다.
계산된 필드를 추가 하여 관계형 소스 열을 기반으로 새 필드를 만듭니다. 자세한 내용은 계산된 필드 를 참조하세요.
필드 이름을 변경합니다.
필드 이름 옆에 있는 아이콘을 클릭하여 마이그레이션 작업 에서 필드 를 포함하거나 제외합니다.
예시
이 섹션에서는 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, }