エンティティ
エンティティは、データベース内に情報を保持し、データベースモデルを実装することを可能にする要素です。これは、データベースのテーブルまたはビューとみなすことができます。
エンティティは、関連する情報を保存するエンティティアトリビュートを介して定義されます。エンティティアトリビュートの例は次のとおりです: Name、Address、Zip Code、Cityなど。
主キー
OutSystemsでは、主キーは「エンティティ識別子」と呼ばれます。
エンティティが作成されると、「Id」というアトリビュートが自動的にエンティティ識別子として追加されます。デフォルトではデータ型はLong Integerで、自動的にシーケンス番号として値が計算されます(OutSystemsではAutoNumber)。そのため、個々のエンティティレコードを一意に識別するための特別なロジックを実装する必要はありません。
別のデータ型をエンティティ識別子として使ったり、アトリビュートのAutoNumberを無効にしたりできます。その場合は、個々のエンティティレコードを一意に識別するためのロジックを実装する必要があります。
別のアトリビュートをエンティティ識別子として設定するには、そのアトリビュートを右クリックして識別子として設定します。
OutSystemsでは、エンティティ識別子となれるのは1つのアトリビュートだけであるため、複合キーを持つことはできません。ただし、インデックスを使用して代替キーを作成できます(インデックスについては以下を参照)。
シーケンシャルアトリビュート
多くの場合、エンティティ識別子アトリビュートにはシーケンシャルアトリビュートが便利です。これにより、簡単に各レコードが一意の主キーを持てるようになります。
エンティティアクションによって新しいレコードが作成されると、シーケンシャルで一意の新しい値をプラットフォームが自動的に計算します。
1つのエンティティに許可されるシーケンシャルアトリビュートは1つだけです。
インデックス
関係データベースのように、OutSystemsは、エンティティのデータにすばやくアクセスするためのインデックスを提供します。通常、エンティティの1つまたは複数のアトリビュートで検索やソートを行う場合、これらのアトリビュートに基づいたインデックスを作成することで高速化できます。
インデックスは、代替キーや複合キーを作成するために使用することもできます。
インデックスを作成する際には、データの取得と挿入のどちらを優先するかを考える必要があります(後者にいくらかのオーバーヘッドが生じる可能性があるため)。
エンティティ変更時の影響
新しいエンティティアトリビュートを作成すると、データベースに保存されているすべてのレコードの更新をプラットフォームが自動的に管理します。新しいアトリビュートはレコードに追加され、そのデータ型のデフォルト値が設定されます。
エンティティアトリビュートを必須として設定すると、ユーザーインターフェイス上でプラットフォームによって自動的に検証されます。しかし、データベースでは必須アトリビュートはNull値を許容するように作成されるため、データベースレベルでは必須アトリビュートは検証されません。
エンティティやエンティティアトリビュートを削除すると、それが使用されているかどうかにかかわらずプラットフォームは許可して削除しますが、使用されている場合は要素を修正する必要があります。データベースでは、プラットフォームがエンティティやエンティティアトリビュートを削除することはありません。