# 多対多の関係を作成する
多対多の関係は、一つのエンティティが別のエンティティと1対多の関係を持ち、逆もまた同様である場合に発生します。例えば、`Author`(著者)は複数の`Books`(書籍)を書くことができ、`Book`は複数の`Authors`によって書かれることがあります。この種の関係は**N対M**関係としても知られています。
このような関係は、**接合エンティティ**(junction entity)と呼ばれる第三のエンティティを追加することで解決します。これには少なくとも2つの外部キーが必要で、関係にある各エンティティへの参照が含まれます。必要に応じて他のアトリビュートも追加できます(例を参照)。
多対多の関係を作成するには、次の手順に従います:
1. [関係エンティティを作成します](https://success.outsystems.com/ja-jp/documentation/11/building_apps/data_management/data_modeling/create_an_entity_to_persist_data/)。
2. アトリビュートを追加し、データ型を最初のエンティティの識別子に設定します。
3. 別のアトリビュートを追加し、データ型を2番目のエンティティの識別子に設定します。
エンティティに一意のレコードを確保したい場合(例えば、`Book`が一つの`Publisher`しか持てないなど)、2つの外部キーに[ユニークインデックス](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というモバイルアプリケーションを持っているとします。ここではエンドユーザーがレストランやホテルなどの場所を見つけてレビューすることができます。エンドユーザーは多くの場所をレビューでき、ある場所は多くのエンドユーザーからレビューを受けることができます。つまり、多対多の関係です。これら2つのエンティティを`Review`と`Place`と呼びましょう。2つの外部キーの他に、レビューには他のアトリビュートもあります:評価、コメント、提出日です。
`Review`エンティティを作成しましょう:
1. データタブで、GoOutWebDataModelエンティティ図を開きます。
2. ユーザーシステムエンティティと`Place`エンティティを図にドラッグします。
3. 図のキャンバスを右クリックして「エンティティの追加」を選択します。
4. エンティティの名前を`Review`とします。
5. `User.Id`アトリビュートを`Review`にドラッグします。
6. `Place.Id`アトリビュートを`Review`にドラッグします。
7. 残りのアトリビュートを追加します:
- `Classification`、Integer型
- `Comments`、Text型
- `SubmittedOn`、Date型
