項目属性はほかの項目属性のサブタイプである場合があります。これらの項目属性は同じもので、名前のみが異なります。
サブタイプは「グループ」において定義される必要があります。たとえば、Airport (空港) という Transaction オブジェクトについて検討してみましょう:
Airport { AirportId* AirportName }
AirportId と AirportName のサブタイプは、次のようにグループに属するものとして定義する必要があります:
DepartureAirport Subtype Group |
DepartureAirportId は AirportId のサブタイプ |
DepartureAirportName は AirportName のサブタイプ |
グループは「仮想の」トランザクションと考えることができます。サブタイプグループ (Subtype Group) を定義しても、それだけで出発空港 (departure airport) の情報を格納するテーブルが作成されるわけではありませんが、グループには Transaction のほかのプロパティ (グループキーやベーステーブルなど) がすべて備わっているためです。
ここで、DepartureAirportId をサブタイプ項目属性、AirportId を DepartureAirportId のスーパータイプ項目属性といいます。同様に、DepartureAirportName 項目属性はサブタイプ、AirportName はそのスーパータイプです。明確に定義されたサブタイプグループには、対応するスーパータイプ項目属性が既存の物理テーブルの主キーを構成するサブタイプ項目属性、またはサブタイプ項目属性のセットが必ず含まれています。前述の例では、主キーが AirportId である物理テーブル、AIRPORT テーブルがあります (この物理テーブルはグループのベーステーブルです)。
サブタイプグループの定義により、次のサブタイプが可能になります。
- グループのベーステーブルに属するスーパータイプのサブタイプです。
- グループのベーステーブルの拡張テーブルに属するスーパータイプのサブタイプです。
- 計算式の項目属性は、グループ定義で使用することができます。ただし、UDP の呼び出しを使用する計算式は例外です。
サブタイプグループのベーステーブルの拡張テーブルから推論されるサブタイプを含めるには、推論に使用する外部キーのサブタイプをグループ内に定義する必要があります。
サブタイプを使用する条件
What are Subtypes?
|