# 다대다 관계 작성하기
다대다 관계는 하나의 엔티티가 다른 엔티티와 일대다 관계를 가지고, 그 반대도 마찬가지인 경우에 발생합니다. 예를 들어, `Author`(저자)는 여러 `Books`(책)을 쓸 수 있으며, `Book`은 여러 `Authors`에 의해 작성될 수 있습니다. 이러한 유형의 관계는 **N대M** 관계로도 알려져 있습니다.
이러한 관계는 **접합 엔티티**(junction entity)라고 불리는 제3의 엔티티를 추가하여 해결합니다. 이 엔티티에는 최소 2개의 외래 키가 필요하며, 관계를 맺는 각 엔티티에 대한 참조가 포함됩니다. 필요에 따라 다른 속성도 추가할 수 있습니다(예시 참조).
다대다 관계를 생성하려면 다음 단계를 따르세요:
1. [관계 엔티티를 생성합니다](https://success.outsystems.com/ja-jp/documentation/11/building_apps/data_management/data_modeling/create_an_entity_to_persist_data/).
2. 속성을 추가하고, 데이터 유형을 첫 번째 엔티티의 식별자로 설정합니다.
3. 다른 속성을 추가하고, 데이터 유형을 두 번째 엔티티의 식별자로 설정합니다.
엔티티에 고유한 레코드를 보장하고 싶은 경우(예를 들어, `Book`이 하나의 `Publisher`만 가질 수 있는 등), 두 외래 키에 [유니크 인덱스](https://success.outsystems.com/ja-jp/documentation/11/building_apps/data_management/data_modeling/create_an_entity_index/)를 추가합니다.
이 주제에 관한 [온라인 트레이닝 비디오](https://learn.outsystems.com/training/journeys/modeling-data-relationships-642/many-to-many-relationship/o11/448)를 확인하세요:
## 예시
GoOut이라는 모바일 애플리케이션이 있다고 가정해 봅시다. 여기서는 최종 사용자가 레스토랑이나 호텔과 같은 장소를 찾고 리뷰할 수 있습니다. 최종 사용자는 많은 장소를 리뷰할 수 있고, 한 장소는 많은 최종 사용자로부터 리뷰를 받을 수 있습니다. 즉, 다대다 관계입니다. 이 두 엔티티를 `Review`와 `Place`라고 부릅시다. 두 개의 외래 키 외에도, 리뷰에는 다른 속성들도 있습니다: 평가, 코멘트, 제출일입니다.
`Review` 엔티티를 생성해 봅시다:
1. 데이터 탭에서 GoOutWebDataModel 엔티티 다이어그램을 엽니다.
2. 사용자 시스템 엔티티와 `Place` 엔티티를 다이어그램으로 드래그합니다.
3. 다이어그램 캔버스를 우클릭하고 "엔티티 추가"를 선택합니다.
4. 엔티티 이름을 `Review`로 지정합니다.
5. `User.Id` 속성을 `Review`로 드래그합니다.
6. `Place.Id` 속성을 `Review`로 드래그합니다.
7. 나머지 속성을 추가합니다:
- `Classification`, Integer 유형
- `Comments`, Text 유형
- `SubmittedOn`, Date 유형
