スキーマ ファイルの構文

この記事には、以下のトピックが含まれています。
casm173
この記事には、以下のトピックが含まれています。
CA SDM データベース スキーマは、$NX_ROOT/site(UNIX)ディレクトリまたは
インストール ディレクトリ
/site(Windows)ディレクトリにある複数の .sch ファイルに定義されます。 設定時に、これらの .sch ファイルは、独自に作成してカスタマイズした .sch ファイルと共に、$NX_ROOT/site/ddict.sch(UNIX)または
インストール ディレクトリ
/site/ddict.sch(Windows)という単一ファイルにマージされます。
これらのファイルに変更を加える前に、「Web Screen Painter の使用」を確認します。
$NX_ROOT/site (UNIX)または
installation
-
directory
/site (Windows)ディレクトリにある .sch ファイルはどれも変更しないでください。 これらのファイルに変更を加えても、新しいリリースにアップグレードしたり、パッチを適用したりすると、変更内容が失われます。 スキーマに変更を加える場合は、$NX_ROOT/site/mods(UNIX)ディレクトリまたは
インストール ディレクトリ
/site/mods(Windows)ディレクトリに、拡張子を .sch としてファイルを作成する必要があります。 次に、その .sch ファイルに変更内容を追加します。これで、設定時に変更内容が標準装備のスキーマにマージされます。 これが、新しいリリースにアップグレードしても変更が保持される唯一の方法となります。
TABLE ステートメント
CA SDM データベース スキーマの論理テーブルとそのテーブルの論理列(フィールド)を定義します。 これらの論理テーブルおよび論理列は、TABLE ステートメントに続くマッピング ステートメントでデータベース管理システムが使用する物理テーブルおよび物理列にマップされます。
新しいテーブルを定義する場合は、そのテーブルのマッピング ステートメントを定義する必要があります。 マッピング ステートメントについてはこの章の最後で説明します。その後に、TABLE ステートメント、TABLE_INFO ステートメント、およびマッピング ステートメントを結合する例を示します。
構文
TABLE
table_name
{
field value_type field_attributes
; [...]}
引数
  • TABLE
    TABLE ステートメントを導入します。 必ず大文字で指定してください。 スキーマの論理テーブルごとに 1 つの TABLE ステートメントが必要です。
  • table_name
    データベース テーブルの名前(たとえば、Call_Req)。 データベース テーブルを追加する場合は、小文字 z で始まる名前を指定できます (これで、既存の CA SDM テーブル名とも、今後付与される名前とも、競合する可能性がなくなります)。既存のテーブルを変更する場合は、いずれかの .sch ファイルでそのテーブルを探し、同じ名前を使用します。
  • field
    テーブルの論理列の名前(たとえば、ID や desc)。 各列を名前で識別する必要があります。 テーブルを追加する場合や、列を既存のテーブルに追加する場合は、小文字 z で始まる名前を指定できます。ただし、フィールド名を文字「_f」で終了しないでください(これで、既存の CA SDM 列名とも、今後付与される名前とも、競合する可能性がなくなります)。
  • value_type
    フィールドのデータ型。 有効な値は以下のとおりです。
説明
STRING
nn
長さが
nn
文字の文字列。
INTEGER
32 ビットの数字。
LOCAL_TIME
1970 年 1 月 1 日からの秒数。 CA SDM は、このデータ タイプを指定された日付形式(たとえば、
mm
/
dd
/
yy hh
:
mm
:
ss
)に自動的に再フォーマットします。
DURATION
秒単位の期間。
REAL
浮動小数点数。
UUID
16 バイトのバイナリ値。
field_attributes
フィールドの説明。 有効な値は以下のとおりです。
説明
KEY
このフィールドを、pdm_load で更新するレコードを指定するためのプライマリ キーとして指定します。 これは、デフォルトのプライマリ キー(ID)が指定されていない場合に使用されます。 フィールドがテーブルのプライマリ キーである場合は必須です。
NOT_NULL
フィールドに値が必要であることを示します。 フィールドがテーブルのプライマリ キーである場合は必須です。 フィールドがプライマリ キーでない場合はオプションです。
REF other_table_name
フィールドが別のテーブルを参照することを示します。 フィールドがプライマリ キーであるかどうかに関係なくオプションです。
S_KEY
このフィールドを、pdm_load で更新するレコードを特定するためのセカンダリ キーであると見なします。オプションです。
UNIQUE
フィールドの値が一意である必要があることを示します。 フィールドがテーブルのプライマリ キーである場合は必須です。 フィールドがプライマリ キーでない場合はオプションです。
マクロは、設定時にそのマクロが表す値に変換される同義語です。 データ型または属性にマクロを使用できます。 マクロを使用するには、#include ステートメントを追加して、そのマクロを定義するファイルを、(通常はスキーマ ファイルを基準とした)パス名を含めてインクルードします。 インクルード ステートメントは、マクロを使用する前に定義する必要があります。 インクルード ステートメントの例を以下に示します。
#include "../schema.mac"
以下に、$ NX_ROOT/site (Windows 以外)ディレクトリまたは
installation-directory
/site (Windows)ディレクトリにある .mac ファイルに定義されているマクロをいくつか示します。
データ タイプ
同値
nn
NOT_NULL
uniq
UNIQUE NOT_NULL
ADDR_LINE
STRING 30
EMAILADDR
STRING 120
ENT_DESC
STRING 40
ENT_NAME
STRING 30
OSI_NAME
STRING 80
OSI_TYPE_STRING
STRING 60
USERID
STRING 85
PHONENUM
STRING 32
SYMBOL
STRING 12
HIER_SYM
STRING 60
LONG_SYM
STRING 30
COMMENT
STRING 1000
LONG_STR
STRING 500
LONG_DESC
STRING 240
BOOL
INTEGER
データベース スキーマのこの TABLE ステートメントは重大度を定義します。 マクロ nn は、del フィールドには値が必須であることを示します。 マクロ uniq は、値が必須で、かつ一意である必要があることを示します。
#include :../schema.mac" TABLE Severity { id INTEGER uniq KEY; // key id del INTEGER nn; // 0=present,1=gone sym SYMBOL uniq S_KEY; // type symbol desc ENT_DESC; // non-OSI specified column }
次のように TABLE ステートメントを変更して、[リクエストの詳細]ウィンドウの[優先度]フィールドを必須とします。
TABLE Call_Req {priority INTEGER NOT_NULL;}
以下の TABLE ステートメントは、[Resolution Code]フィールドを Call_Req テーブルに追加します。 フィールドの内容は数値であり、Resolution_Code テーブルを参照します。 この参照により、ユーザは[リクエストの詳細]ウィンドウの[解決方法コード]フィールドをダブルクリックして Resolution_Code テーブル内の値を表示することができます。
TABLE Call_Req {zres_code INTEGER REF Resolution_Code;}
TABLE_INFO ステートメント
これは、論理テーブルにデータを保存し、インデックスを作成する方法をデータベース管理システムに指示します。 その指示に従う程度は、データベース管理システムによって異なります。 指示を提供しないと、データベース管理システムは独自の保存とインデックス作成の指示に従います。
構文
TABLE_INFO table_name {
[STORAGE
storage_mtd Field
;] [INDEX
ndx_props field1
[
field2
...];] ...}
引数
  • TABLE_INFO
    TABLE_INFO ステートメントを導入します。 必ず大文字で指定してください。 TABLE_INFO ステートメントはオプションですが、指定する場合は TABLE ステートメントごとに 1 つの TABLE_INFO を指定できます。また、TABLE ステートメントの後に続ける必要があります。
  • table_name
    TABLE ステートメントのデータベース テーブルの名前。
  • STORAGE
    storage_mtd
    保存方法を示します。 有効な値は以下のとおりですが、データベース管理システムの中にはこれらの値を無視するものもあるため注意してください。
説明
BTREE
均衡ツリー保存方法を使用することを示します。
HASH
ハッシュ テーブル保存方法を使用することを示します。 これは、フィールドがプライマリ キーである場合に限り有効です。
HEAP
ヒープ保存方法を使用することを示します。
  • field
    指定した保存方法(STORAGE
    storage_mtd
    )に従って保存される列を示します。 TABLE ステートメントの列の名前と同じように指定する必要があります。
  • INDEX
    ndx_props
    指定したフィールドで構成されるインデックスのプロパティを 1 つ以上示します。 有効な値は以下のとおりです。
説明
SORT ASCENDING | DESCENDING
各フィールドのデータを昇順と降順のどちらで並べ替えるかを示します。 データはデフォルトでは昇順に並べ替えられます。このため、SORT DESCENDING を指定するだけで済みます。
PRIMARY
このインデックスをテーブルのデフォルトの並べ替え順として使用することを示します。
CLUSTER
これをクラスタ化インデックスであると見なします。
UNIQUE
インデックスの値が一意である必要があることを示します。
  • field1
    [
    field2 . . .
    ]
指定のインデックス プロパティ(INDEX
ndx_props
)に従ってインデックスを作成する列を 1 つ以上指定します。 TABLE ステートメントの列の名前と同じように指定する必要があります。
以下の TABLE_INFO ステートメントは、ハッシュ テーブルを使用して Contact_Type テーブルに ID フィールドの値を保存し、そのテーブルを sym フィールドの値に従って降順に並べ替えるようにデータベース管理システムに指示します。 また、値が一意である必要があることも示しています。
TABLE_INFO Contact_Type {
STORAGE HASH id; INDEX SORT DESCENDING PRIMARY UNIQUE sym;}
マッピング ステートメント
CA SDM データベース スキーマの論理テーブル/列と、データベース管理システムで使用する物理テーブル/列との対応を定義します。 このステートメントは、.schファイル内の各TABLEステートメントの後に指定します。 新規テーブルを定義する場合は、このステートメントを定義する必要があります。
構文
p1 logical_table_name -> CURR_PROV physical_table_name [{logical_field -> physical_field ...] ;
引数
  • p1
    マッピング ステートメントを開始します。 必ず「p1」と指定してください。
  • logical_table_name
    TABLEステートメントで指定しているデータベース テーブルの名前(たとえばzManufacturer)です。
  • CURR_PROV
    必須のキーワードです。
  • physical_table_name
    データベース管理システムで使用するテーブル名(たとえばman)です。 短い名前を使用するとパフォーマンスが向上します。また、一部のデータベース管理システムでは、短い名前を使用する必要があります。
  • logical_field
    CA SDM データベース スキーマの列名(たとえば、desc)です。 TABLE ステートメントの
    field
    と同じである必要があります。 論理列と物理列の名前が同じ場合は、この引数を省略してください。 この引数を省略するときは、
    physical_table_name
    の後にセミコロンを付けます。
  • physical_field
データベース管理システムで使用する列の名前(たとえばnx_desc)です。 論理列と物理列の名前が同じ場合は、この引数を省略してください。 この引数を省略するときは、
physical_table_name
の後にセミコロンを付けます。
以下の例は、TABLEステートメント、マッピング(p1)ステートメント、およびTABLE_INFOステートメントを使用してzManufacturerテーブルを定義する方法を示します。
TABLE zManufacturer { id INTEGER uniq KEY; // key id del INTEGER nn; // 0=present,1=gone sym HIER_SYM uniq S_KEY; // manufacturer name desc ENT_DESC; // manufacturer description } p1 zManufacturer -> CURR_PROV man // maps logical table "zManufacturer" { // to physical table "man" desc -> nx_desc; // maps logical column "desc" } // to physical column "nx_desc" TABLE_INFO zManufacturer {
STORAGE HASH id; INDEX SORT ASCENDING PRIMARY UNIQUE sym;}