現在地: Visual LANSA 開発者ガイド > 1. アプリケーション、フィールド、データベース、リポジトリの概要 > 1.6 アプリケーション・データベースの作成 > インデックスの例
インデックスの例

テーブル定義の過程で、インデックスを定義する例を示します。

ここでは次のような列から成る顧客マスター・テーブル CUSMST を例として使います。

説明

タイプ

長さ

小数点の位置

CUSTNO

顧客番号(プライマリ・キー)

S

7

0

NAME

個人/組織名

A

30

 

ADDR1

住所1

A

35

 

ADDR2

住所2

A

35

 

ADDR3

住所3

A

35

 

POSTCD

郵便番号

A

4

 

STATE

州コード

A

3

 

ACTIVE

稼動/休止フラグ

A

1

 

CREDIT

与信限度

P

11

2

AMTDUE

貸し出し残高

P

11

2

ACCTYP

口座種別

P

1

0

 

例1

NAMEフィールドを基準に整列した、CUSMSTV1というインデックス/テーブルを定義。

Index name     : CUSMSTV1

Desc of index  : Customer master by customer name

Access path maint opt : IMMED Unique? NO Dynamic select? NO

Key column details

    Column   Description      A/D    S/U/A

    NAME___                  A      _   

    _______                  _      _        +

    _______                  _      _        +

                                             +

例2

州コード順、同じ州内では郵便番号順に並べ替えた、CUSMSTV2というインデックス/テーブルを定義。

Index name     : CUSMSTV2

Desc of index  : Cust master by state and postcode

Access path maint opt : IMMED Unique? NO Dynamic select? NO

Key column details

    Column      Description      A/D   S/U/A

    STATE____                   _      _

    POSTCD___                   _      _

                                _      _   +

 

昇順/降順の指定はしていないので、省略値である昇順になります。

例3

顧客番号順に並べた、CUSMSTS1というインデックス/テーブルを定義。ただし、稼動口座(ACTIVE = 'Y')のみ選択します。

Index name     : CUSMSTS1

Desc of index  : Active customers by customer no

Access path maint opt : IMMED Unique? NO Dynamic select? NO

Key column details:

    Column       Description      A/D   S/U/A

    CUSTNO__                     _      _

    ________                     _      _        +

    ________                     _      _        +

                                                 +

 

Select/Omit criteria:

    AND/OR    SELECT/OMIT    Column       Operation(s)       

              SELECT_____    ACTIVE__    COMP(EQ 'Y')______

例4

貸し出し残高順に並べた、CUSMSTS2というインデックス/テーブルを定義。ただし、与信限度(CREDIT)が100000を超え、貸し出し残高(AMTDUE)が20000以上のもののみ選択します。また、貸し出し残高の高いものから順に並べます。実行時選択機能も使います。

Index name    : CUSMSTS2

Desc of index : High credit, large debt customers

Access path maint opt: IMMED Unique? NO Dynamic select? YES

Key column details:

    Column       Description      A/D   S/U/A

    AMTDUE__                     D      S

    ________                     _      _        +

    ________                     _      _        +

                                                 +

 

Select/Omit criteria :

    AND/OR    SELECT/OMIT    Column     Operation(s)    

              SELECT____     CREDIT____ COMP(GT 100000)_______

    AND       __________     AMTDUE____ COMP(GE 20000)________

「Select/Omit criteria」の2行目、「SELECT/OMIT」欄が空になっているのは、2つの選択条件をAND条件で結ぶことを表します。この場合、CREDITが100000より大きく、かつ、AMTDUEが20000以上である顧客を選択することになります。

例5

与信限度順に並べた、CUSMSTS3というインデックス/テーブルを定義。ただし、与信限度(CREDIT)が100000を超えるか、または貸し出し残高(AMTDUE)が20000以上のもののみ選択します。

Desc of index  : High credit or large debt customers

Access path maint opt : IMMED Unique? NO Dynamic select? NO

Key column details:

    Column        Description      A/D    S/U/A

    CREDIT__                       _      _   

    ________                       _      _        +

    ________                       _      _        +

                                                   +

 

Select/Omit criteria:

    AND/OR    SELECT/OMIT   Column      Operation(s)       

              SELECT____    CREDIT____ COMP(GT 100000)________

    OR        SELECT____    AMTDUE____ COMP(GE 20000)_________

「Select/Omit criteria」の2行目、「SELECT/OMIT」欄が空になっていないので、2つの選択条件をOR条件で結ぶことを表します。この場合、CREDITが100000より大きいか、または、AMTDUEが20000以上である顧客を選択することになります。

例6

州と顧客番号を基準に並べ替えた、CUSMSTS4というインデックス/テーブルを定義。ただし、州(STATE)が「NSW」(ニュー・サウス・ウェールズ州)、「VIC」(ビクトリア州)、「QLD」(クイーンズランド州)のいずれかであるもののみ選択します。

Index name     : CUSMSTS4

Desc of index  : East coast customers by state, cust

Access path maint opt : IMMED Unique? NO Dynamic select? NO

Key column details

    Column      Description      A/D   S/U/A

    STATE___                    _      _   

    CUSTNO__                    _      _   

    ________                    _      _         +

                                                 +

 

Select/Omit criteria:

    AND/OR    SELECT/OMIT    Column     Operation(s)       

              SELECT_____    STATE____ COMP(EQ 'NSW')________

    OR        SELECT_____    STATE____ COMP(EQ 'VIC')________

    OR        SELECT_____    STATE____ COMP(EQ 'QLD')________

 

An identical condition can be made using the VALUES keyword:

Select/Omit criteria

    AND/OR    SELECT/OMIT   Column   Operation(s)       

              SELECT_____   STATE_ VALUES('NSW' 'VIC' 'QLD')   

例7

顧客番号順に並べた、CUSMSTS5というインデックス/テーブルを定義。ただし、口座種別(ACCTYP)が2、3、4のいずれかであるもののみ選択します。

Index name     : CUSMSTS5

Desc of index  : Customers with type 2, 3 or 4 accounts

Access path maint opt : IMMED Unique? NO Dynamic select? NO

Key column details:

    Column      Description      A/D   S/U/A

    CUSTNO__                    _      _   

    ________                    _      _        +

    ________                    _      _        +

Select/Omit 条件:

    AND/OR    SELECT/OMIT    Column     Operation(s)       

              SELECT_____     ACCTYP____ COMP(EQ 2)_____

    OR        SELECT_____     ACCTYP____ COMP(EQ 3)_____

    OR        SELECT_____     ACCTYP____ COMP(EQ 4)______

選択条件は、次のような書き方も可能です。

 

             SELECT_____    ACCTYP____ COMP(GE 2)________

    AND                     ACCTYP____ COMP(LE 4)_________

または

 

             SELECT_____     ACCTYP___ VALUES(2 3 4)______

または

 

             SELECT_____    ACCTYP____ RANGE(2 4)______