Skip to main content

 

アプリケーションの開発

 

OutSystems

エンティティ関係

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

ContactCompanyから移動できます。そして、Companyは2つ以上のContactを持つことができます。

この関係を実装するは、少なくとも以下のアトリビュートを持つ第3のエンティティCompanyContactを作成する必要があります。

  • Id
  • CompanyId
  • ContactId
エンティティ図 モジュールツリー

参照整合性

エンティティA とエンティティBとの間に関係を作成する際、モジュールで適用する参照整合性の仕組み(エンティティAの対応するレコードが削除された場合にエンティティBで何をする必要があるのか)を指定する必要があります。OutSystemsではこの動作は、参照アトリビュートのDelete Ruleプロパティの値によって定義されます。

OutSystemsにおける様々な削除規則について詳しく学習します。

関係インデックス

参照アトリビュートが定義されると、モジュールのパフォーマンスを向上するために自動的にインデックスが作成されます。このインデックスは、「AutoIndex_<reference attribute name>」と呼ばれ、関係を実装する参照アトリビュートを対象とします。

``

このインデックスは削除しないでください。削除すると、Service Studioは、このオペレーションがもたらす可能性があるパフォーマンス上の影響について警告を発します。

このセクションの記事