エンティティ関係
Service Studioでは、エンティティは、ビジネスエンティティの論理的な定義だけではなく、他のエンティティとの関係も包含しています。
関係は、1つの参照アトリビュート(データベース用語では「外部キー」とも呼ばれる)を定義することにより作成されます。そのデータ型は、<Entity>識別子
で、相手方エンティティの識別子のタイプに対応しています。参照アトリビュートは、別のアイコン(関係のタイプに応じて、 または
)で表示され、これはエンティティ図でも確認できます。
参照アトリビュートを作成する必要があるエンティティは、関係の濃度(1対1、1対多、多対多)および必須度(必須、オプション)によって異なります。静的エンティティは、他の静的エンティティとだけ関係を持つことができます。
関係には次のようなタイプがあります。
- 1対1
- 1対多
- 多対多
これらの関係のタイプの詳細については、以下をご覧ください。
1対1の関係
2つのエンティティ間の1対1の関係は、エンティティA
の1つのレコードはエンティティB
の1つのレコードに対応し、エンティティB
の1つのレコードは関連するレコードがエンティティA
に1つしかない、ということを表しています。
この場合、参照アトリビュートは、エンティティ
A
かエンティティB
のいずれかになります。どちらのエンティティが参照アトリビュートを持つかを決めるには、関係の必須度を考慮する必要があります。関係の両方がともに必須かオプションである場合には、たとえば、どちらのエンティティがより頻繁に共有されるかなどの要因を考慮し、どちらのエンティティに関係を追加するかを決める必要があります。
1対1の関係を作成する方法について説明しています。
例
たとえば、ビジネスロジックに次のようなエンティティがあるとします。
Contact
ContactPhoto
ContactPhoto
は常にContact
に属します。Contact
にはContactPhoto
を1つ関連付けることができます。これは、Contact
エンティティを任意にカスタマイズする場合に有効です。
この関係を実装するには、ContactPhoto
の主キーがContact
の主キーに対する参照アトリビュートである必要があります。
エンティティ図 | モジュールツリー |
---|---|
![]() |
![]() |
1対多の関係
2つのエンティティ間の1対多の関係は、エンティティA
の1つのレコードはエンティティB
の複数のレコードに対応し、エンティティB
の1つのレコードは関連するレコードがエンティティA
に1つしかない、ということを表しています。
この状況では、 参照アトリビュートは関係の「多いほう」(エンティティ
B
)にある必要があります。
1対多の関係を作成する方法について説明しています。
例
たとえば、ビジネスロジックに次のようなエンティティがあるとします。
Company
Contact
Company
は1つまたは複数のContact
を持ちます。Contact
は1つのCompany
に属します。
この関係を実装するには、関係アトリビュートがContact
エンティティにある必要があります。
エンティティ図 | モジュールツリー |
---|---|
![]() |
![]() |
多対多の関係
2つのエンティティ間の多対多の関係は、エンティティA
の1つのレコードはエンティティB
の複数のレコードに対応し、エンティティB
の1つのレコードは関連するレコードがエンティティA
に2つ以上あるということを表しています。この状況では、エンティティA
とエンティティB
に少なくとも2つの 参照アトリビュートを持つ第3のエンティティを作成する必要があります。多対多の関係は、実際には、この第3のエンティティとの1対多の関係が2つあることになります。
多対多の関係を作成する方法について説明しています。
例
たとえば、ビジネスロジックに次のようなエンティティがあるとします。
Company
Contact
Contact
はCompany
から移動できます。そして、Company
は2つ以上のContact
を持つことができます。
この関係を実装するは、少なくとも以下のアトリビュートを持つ第3のエンティティCompanyContact
を作成する必要があります。
Id
CompanyId
ContactId
エンティティ図 | モジュールツリー |
---|---|
![]() |
![]() |
参照整合性
エンティティA
とエンティティB
との間に関係を作成する際、モジュールで適用する参照整合性の仕組み(エンティティA
の対応するレコードが削除された場合にエンティティB
で何をする必要があるのか)を指定する必要があります。OutSystemsではこの動作は、参照アトリビュートのDelete Ruleプロパティの値によって定義されます。
詳細については、OutSystemsでの様々な削除規則をご覧ください。
関係インデックス
参照アトリビュートが定義されると、モジュールのパフォーマンスを向上するために自動的にインデックスが作成されます。このインデックスは次のように呼ばれます:
AutoIndex_<reference attribute name>
また、関係を実装する参照アトリビュートを対象とします。
このインデックスは削除しないでください。削除すると、Service Studioは、この操作がもたらす可能性があるパフォーマンス上の影響について警告を発します。
このセクションの記事
- 1対1の関係を作成する
- 複数のデータエンティティ間で1対1の関係を定義する方法です。
- 1対多の関係を作成する
- OutSystemsで、複数エンティティ間の1対多の関係を作成する方法です。
- 多対多の関係を作成する
- OutSystemsで接合テーブルを使用して多対多のリレーションを実装する方法について説明しています。
- 削除規則
- エンティティ関係で保持する参照整合性動作を定義します。