ここでは,データベースの表情報から,どのように結合項目と構成項目が生成されるのかについて説明します。
(1) 結合項目と構成項目の生成例
データソース「TESTDATA」を例に,使用するデータベースがORACLEの場合,どのように結合項目と構成項目が生成されるのかについて説明します。データソース「TESTDATA」は表「NEWTABLE」を持ち,表「NEWTABLE」は「City」「State」という列を持ちます。このデータソースの表から求められる列情報の例を,表4-7に示します。
表4-7 データソースの表から求められる列情報の例
列情報項目 | 列情報1 | 列情報2 |
---|---|---|
表名 (TABLE_NAME) | NEWTABLE | NEWTABLE |
列名 (COLUMN_NAME) | City | State |
データ型 (DATA_TYPE) | SQL_CHAR | SQL_CHAR |
精度 (PRECISION) | 10 | 2 |
この例から生成されるデータ項目の関係を図4-5に,データ項目の定義内容を表4-8に示します。
図4-5 生成されるデータ項目間の関係
表4-8 生成されるデータ項目の定義内容の例
定義項目 | 生成される定義内容 | ||||
---|---|---|---|---|---|
データソース | NEWTABLE(表) | City(列) | State(列) | ||
データ項目名 | TESTDATA | NEWTABLE | City | State | |
データ項目種別 | 結合項目 | 結合項目 | 単項目 | 単項目 | |
分類 | 結合データ | 結合データ | 英数字文字列データ | 英数字文字列データ | |
けた数 | - | - | 10 | 2 | |
名前(言語共通) | TESTDATA | NEWTABLE | City | State | |
タ イ プ | COBOL又は OOCOBOL | - | - | X | X |
C又はC++ | - | - | char | char | |
SQL | - | - | CHAR | CHAR | |
IDL(CORBA) | - | - | char | char | |
帳票定義 | - | - | C | C | |
Java | - | - | char | char | |
言語4~7 | - | - | フリー定義 | フリー定義 |
生成されるデータ項目の詳細な定義内容の例は,CSV形式ファイルで提供されています。このサンプルの提供先を次に示します。
サーバのSEWB+/REPOSITORY組み込み先パス名¥SAMPLE¥ODBCIN.CSV
なお,組み込み先パス名は,デフォルトでは次のように設定されています。システムドライブとは,Windows NT Server又はWindows 2000 Serverが組み込まれているドライブを指します。
(2) 生成規則
(a) 生成の概要
ODBC入力コマンドを使用すると,生成元のデータソースから結合項目の構成が生成され,データ項目辞書に格納されます。生成されるデータ項目の関係の例を,図4-6に示します。
図4-6 データソースから生成されるデータ項目の関係
データソースから生成されるデータ項目は,次の3種類に分類されます。
(b) データソース,表,列から生成されるデータ項目の定義内容
(a)で説明した分類に従って,それぞれのデータ項目に生成される定義内容を表4-9に示します。
表4-9 データソースから生成されるデータ項目の定義内容
定義項目 | データ項目の定義内容 | |||
---|---|---|---|---|
データソースから生成 | 表から生成 | 列から生成 | ||
名称 | データ項目名 | データソース名 | テーブル識別子 | 列識別子 |
標準名称 | データソース名※1 | テーブル識別子※1 | 列識別子※1 | |
フリガナ | - | - | - | |
属性 | 分類 | 結合データ | 結合データ | ODBCタイプに対応 |
けた数 | - | - | ODBCタイプに対応 | |
小数部けた数 | - | - | ODBCタイプに対応 | |
反復回数 | - | - | - | |
付加 情報 | フィールド1~20 | - | - | - |
コメント | - | テーブルの説明 | 列の説明 | |
言語別 詳細情報 | 名前 | データソース名※2 | テーブル識別子※2 | 列識別子※2 |
タイプ | - | - | ODBCタイプに対応 | |
タイプ修飾情報※3 | - | - | - | |
取りうる値 | - | - | - | |
初期値 | - | - | - | |
言語別フィールド | - | - | - | |
セキュリティ情報 | 所有者名 | -※4 | -※4 | -※4 |
グループ名 | -※5 | -※5 | -※5 | |
アクセス権 | -※6 | -※6 | -※6 |
(凡例)-:設定されない
注
(c) ODBCタイプマッピングの規則
表4-10 ODBCタイプと分類,けた数,小数部けた数の対応
ODBCタイプ | データ項目の定義内容 | |||
---|---|---|---|---|
構成項目の サフィックス | 分類 | けた数 | 小数部 けた数 | |
SQL_CHAR | - | 英数字文字列 | 長さ | - |
SQL_VARCHAR | -length | 整数 | 9 | - |
-char | 英数字文字列 | 長さ | - | |
SQL_LONGVARCHAR | -length | 整数 | 9 | - |
-char | 英数字文字列 | 長さ | - | |
SQL_DECIMAL | - | 整数※ | 精度 | - |
実数※ | 精度 | スケール | ||
SQL_NUMERIC | - | 整数※ | 精度 | - |
実数※ | 精度 | スケール | ||
SQL_SMALLINT | - | 整数 | 精度 | - |
SQL_INTEGER | - | 整数 | 精度 | - |
SQL_REAL | - | 実数 | 精度 | - |
SQL_FLOAT | - | 実数 | 精度 | - |
SQL_DOUBLE | - | 実数 | 精度 | - |
SQL_BIT | -filler | 分類なし | 7 | - |
-bit | 分類なし | 1 | - | |
SQL_TINYINT | - | 整数 | 精度 | - |
SQL_BIGINT | - | 整数 | 精度 | - |
SQL_BINARY | - | 英数字文字列 | 長さ | - |
SQL_VARBINARY | -length | 整数 | 9 | - |
-bit | 英数字文字列 | 長さ | - | |
SQL_LONGVARBINARY | -length | 整数 | 9 | - |
-bit | 英数字文字列 | 列最大長 | - | |
SQL_DATE | -year | 整数 | 4 | - |
-month | 整数 | 4 | - | |
-day | 整数 | 4 | - | |
SQL_TIME | -hour | 整数 | 4 | - |
-minute | 整数 | 4 | - | |
-second | 整数 | 4 | - | |
SQL_TIMESTAMP | -year | 整数 | 4 | - |
-month | 整数 | 4 | - | |
-day | 整数 | 4 | - | |
-hour | 整数 | 4 | - | |
-minute | 整数 | 4 | - | |
-second | 整数 | 4 | - | |
-fraction | 整数 | 9 | - | |
その他 | - | 分類なし | - | - |
(凡例)-:設定されない
注 構成項目のサフィックス欄が「-」のODBCタイプは,単項目として生成されるタイプです。「-」以外のタイプは,結合項目としてその構成項目が生成されるタイプです。
注※ スケールに依存します。スケール=0の場合は「整数データ」となります。その他の場合は「実数データ」となります。
表4-11 ODBCタイプと言語別タイプの対応(COBOL又はOOCOBOL,C又はC++)
列の情報 | データ項目の定義内容 | ||
---|---|---|---|
ODBCタイプ | 構成項目の サフィックス | 言語別のタイプ | |
COBOL又は OOCOBOL | C又はC++ | ||
SQL_CHAR | - | X | char |
SQL_VARCHAR | -length | B | long |
-char | X | char * | |
SQL_LONGVARCHAR | -length | B | long |
-char | X | char * | |
SQL_DECIMAL | - | フリー定義※1 | フリー定義※5 |
SQL_NUMERIC | - | フリー定義※1 | フリー定義※5 |
SQL_SMALLINT | - | B※2 BU※2 | short※6 unsigned short※6 |
SQL_INTEGER | - | B※2 BU※2 | long※7 unsigned long※7 |
SQL_REAL | - | D | float |
SQL_FLOAT | - | D | double |
SQL_DOUBLE | - | D | double |
SQL_BIT | -filler | 1 | フリー定義※8 |
-bit | 1 | フリー定義※8 | |
SQL_TINYINT | - | フリー定義※3 | int※9 unsigned int※9 |
SQL_BIGINT | - | B※2 BU※2 | フリー定義※5 |
SQL_BINARY | - | X | フリー定義※10 |
SQL_VARBINARY | -length | B | long |
-bit | X | フリー定義※10 | |
SQL_LONGVARBINARY | -length | B | long |
-bit | X | フリー定義※10 | |
SQL_DATE | -year | B | short |
-month | BU | unsigned short | |
-day | BU | unsigned short | |
SQL_TIME | -hour | BU | unsigned short |
-minute | BU | unsigned short | |
-second | BU | unsigned short | |
SQL_TIMESTAMP | -year | B | short |
-month | BU | unsigned short | |
-day | BU | unsigned short | |
-hour | BU | unsigned short | |
-minute | BU | unsigned short | |
-second | BU | unsigned short | |
-fraction | BU | unsigned long | |
その他 | - | フリー定義※4 | フリー定義※4 |
(凡例)-:設定されない
注※1 精度を$p,スケールを$sとするとき,定義文字列は「PIC S9($p-$s)V9($s) SIGN LEADING SEPARATE」となります。
注※2 列符号がある場合は「B」,ない場合は「BU」となります。
注※3 定義文字列には「PIC X(1)」が設定されます。
注※4 定義文字列は設定されません。
注※5 定義文字列には「char *」が設定されます。
注※6 列符号がある場合は「short」,ない場合は「unsigned short」となります。
注※7 列符号がある場合は「long」,ない場合は「unsigned long」となります。
注※8 定義文字列には「unsigned char」が設定されます。
注※9 列符号がある場合は「int」,ない場合は「unsigned int」となります。
注※10 定義文字列には「unsigned char *」が設定されます。
表4-12 ODBCタイプと言語別タイプの対応(SQL)
列の情報 | データ項目の定義内容 | ||
---|---|---|---|
ODBCタイプ | 構成項目の サフィックス | 言語別のタイプ(SQL) | |
データべース がORACLE | データべース がHiRDB | ||
SQL_CHAR | - | CHAR | CHAR |
SQL_VARCHAR | -length | NUMBER | SMALLINT |
-char | VARCHAR2 | VARCHAR | |
SQL_LONGVARCHAR | -length | NUMBER | DEC |
-char | LONG | フリー定義※ | |
SQL_DECIMAL | - | NUMBER | DEC |
SQL_NUMERIC | - | NUMBER | DEC |
SQL_SMALLINT | - | NUMBER | SMALLINT |
SQL_INTEGER | - | NUMBER | INT |
SQL_REAL | - | NUMBERf | SMALLFLT |
SQL_FLOAT | - | NUMBERf | FLOAT |
SQL_DOUBLE | - | NUMBERf | FLOAT |
SQL_BIT | -filler | フリー定義※ | フリー定義※ |
-bit | フリー定義※ | フリー定義※ | |
SQL_TINYINT | - | NUMBER | SMALLINT |
SQL_BIGINT | - | NUMBER | DEC |
SQL_BINARY | - | フリー定義※ | フリー定義※ |
SQL_VARBINARY | -length | NUMBER | SMALLINT |
-bit | フリー定義※ | フリー定義※ | |
SQL_LONGVARBINARY | -length | NUMBER | DEC |
-bit | フリー定義※ | フリー定義※ | |
SQL_DATE | -year | NUMBER | SMALLINT |
-month | NUMBER | SMALLINT | |
-day | NUMBER | SMALLINT | |
SQL_TIME | -hour | NUMBER | SMALLINT |
-minute | NUMBER | SMALLINT | |
-second | NUMBER | SMALLINT | |
SQL_TIMESTAMP | -year | NUMBER | SMALLINT |
-month | NUMBER | SMALLINT | |
-day | NUMBER | SMALLINT | |
-hour | NUMBER | SMALLINT | |
-minute | NUMBER | SMALLINT | |
-second | NUMBER | SMALLINT | |
-fraction | NUMBER | SMALLINT | |
その他 | - | フリー定義※ | フリー定義※ |
(凡例)-:該当しない
注 言語別SQLに「ORACLE」又は「HiRDB」のどちらのタイプで登録するかを,コマンドに指定してください。コマンドの詳細については「4.2.3(3) ODBC入力コマンド(RPOdbcin)の指定」の引数 /Qを参照してください。言語別SQLで使用するタイプを,あらかじめ環境構築ユティリティでカスタマイズしておく必要があります。標準に設定されている分類とタイプの対応については「表2-4 分類区分とタイプの対応(SQL)」,HiRDBのカスタマイズ例については「表2-8 分類区分とタイプの対応のカスタマイズ例(言語区分SQLのタイプをHiRDBとして使用する場合)」を参照してください。
注※ 定義文字列は設定されません。
表4-13 ODBCタイプと言語別タイプの対応(IDL(CORBA),帳票定義,Java)
列の情報 | データ項目の定義内容 | |||
---|---|---|---|---|
ODBCタイプ | 構成項目の サフィックス | 言語別のタイプ | ||
IDL(CORBA) | 帳票定義 | Java | ||
SQL_CHAR | - | char | C | ※9 |
SQL_VARCHAR | -length | long | I | ※9 |
-char | string | C | ※9 | |
SQL_LONGVARCHAR | -length | long | I | ※9 |
-char | string | C | ※9 | |
SQL_DECIMAL | - | フリー定義※1 | I※6 フリー定義※6 | ※9 |
SQL_NUMERIC | - | フリー定義※1 | I※7 B※7 | ※9 |
SQL_SMALLINT | - | short※2 unsigned short※2 | I | ※9 |
SQL_INTEGER | - | long※3 unsigned long※3 | I | ※9 |
SQL_REAL | - | float | I | ※9 |
SQL_FLOAT | - | double | B | ※9 |
SQL_DOUBLE | - | double | B | ※9 |
SQL_BIT | -filler | octet | フリー定義※8 | ※9 |
-bit | octet | フリー定義※8 | ※9 | |
SQL_TINYINT | - | long※3 unsigned long※3 | I | ※9 |
SQL_BIGINT | - | フリー定義※1 | I | ※9 |
SQL_BINARY | - | フリー定義※4 | フリー定義※8 | ※9 |
SQL_VARBINARY | -length | long | I | ※9 |
-bit | フリー定義※4 | フリー定義※8 | ※9 | |
SQL_LONGVARBINARY | -length | long | I | ※9 |
-bit | フリー定義※4 | フリー定義※8 | ※9 | |
SQL_DATE | -year | short | I | ※9 |
-month | unsigned short | I | ※9 | |
-day | unsigned short | I | ※9 | |
SQL_TIME | -hour | unsigned short | I | ※9 |
-minute | unsigned short | I | ※9 | |
-second | unsigned short | I | ※9 | |
SQL_TIMESTAMP | -year | short | I | ※9 |
-month | unsigned short | I | ※9 | |
-day | unsigned short | I | ※9 | |
-hour | unsigned short | I | ※9 | |
-minute | unsigned short | I | ※9 | |
-second | unsigned short | I | ※9 | |
-fraction | unsigned long | I | ※9 | |
その他 | - | フリー定義※5 | フリー定義※5 | フリー定義※5 |
(凡例)-:設定されない
注※1 定義文字列には「string」が設定されます。
注※2 列符号がある場合は「short」,ない場合は「unsigned short」となります。
注※3 列符号がある場合は「long」,ない場合は「unsigned long」となります。
注※4 定義文字列には「octet *」が設定されます。
注※5 定義文字列は設定されません。
注※6 列の精度とスケールに依存します。スケール=0 かつ 精度≦16の場合と,0<スケール≦5 かつ (精度-スケール)≦16の場合は「I」となります。その他の場合はフリー定義で,内容は「C」となります。
注※7 列の精度とスケールに依存します。スケール=0 かつ 精度≦10の場合は「I」となります。その他の場合は「B」となります。
注※8 定義文字列には「C」が設定されます。
注※9 環境構築ユティリティで設定した分類区分に対応するタイプの初期値(デフォルトタイプ)が設定されます。
(3) データ項目名による更新入力
データベースから生成された定義情報で,既に辞書に登録されているデータ項目を更新できます(更新入力)。この場合は,ODBC入力コマンドで,引数「/N 辞書への登録方法」を指定します。
更新入力では,データ項目名によって,更新の対象となるデータ項目が特定されます。このため,既存の辞書フォルダ内,及び登録されるデータ項目には,一意のデータ項目名が定義されている必要があります。なお,対象となるデータ項目が辞書にない場合には,新しいデータ項目として作成,登録されます。
(4) 外部キーの扱い
表に指定された外部キーの関係を,辞書に反映できます。ここでは,外部キーを含む表の生成規則について説明します。ODBC入力コマンドの引数の指定によって,個別のデータ項目として生成するか,又はデータ項目に外部キーに基づいた関連を付けて生成するかを選択できます。
(a) 外部キーを個別のデータ項目として生成
ODBC入力コマンドで,引数「/R 外部キー関連付けの有無」を省略,又は引数「/R 外部キー関連付けの有無」で「nouse」を指定すると,外部キーは個別のデータ項目として生成されます。この場合の例を次に示します。
(b) 外部キーをデータ項目の関連として生成
ODBC入力コマンドで,引数「/R 外部キー関連付けの有無」に「use」を指定すると,外部キーの関係をデータ項目間の関連として生成できます。この場合,外部キーとなるデータ項目は作成されず,主キーとなるデータ項目に関連が付けられます。
なお,外部キーの情報をデータソースから取得するためには,ODBCドライバがAPI適合レベル2に準拠している必要があります。ODBCドライバのAPI適合レベルについては,使用するODBCドライバ,又はデータベースのマニュアルなどで確認してください。
外部キーの関連付けは,ODBCドライバのAPI適合レベルによって,生成規則が異なります。