NULL
17.4 定義取得
既存のRDBMSのテーブルを使う場合、あらかじめ、データ辞書に格納されているテーブル定義を取り出す
のが有効です。これで、dbMAGICで定義を初めから行う必要がなくなります。また、エラーも発生しにく くなり、開発効率も向上します。
定義取得は、[オプション ]メニューの[ 定義取得]コマンド を使用して実行できます。このコマンドでは、
ゲートウェイを介してデータベースにアクセスすることができ、また、データベースの定義も、その場で変 更できます。
データベースのファイル(テーブル)は、一つでも複数でも取得できます。[定義取得]コマンドは、[テーブ ル ]リポジトリで、テーブルにいずれかのSQLデータベースが割り当てられているときに有効になります。
単一のテーブルを取得する場合、次のようにします。
1. [テーブル]リポジトリを開きます。
2. 新規の行にカーソルを置きます。
3. データベース(RDBMS)を選択します。
4. 取得するテーブルの名前を入力します。
5. [オプション ]メニューを開きます。[ 定義取得]コマンドが有効になっているはずです。
6.[定義取得]コマンドを選択します。選択後、[定義取得]ウィンド ウが開きます。このウィンド ウは、
自動的に閉じます。この後、[テーブル ]リポジトリの各欄に何らかの値が入っているはずです。
7. [ カラム]欄に移動し 、ズームして、取得されたカラムの内容を確認します。
8.[ インデックス]欄に移動し 、ズームして、取得されたデータベースのインデックスを確認します。こ の場合、データベースのインデックスはdbMAGICのインデックスとして取得されます。
17 図17.5:[テーブル]リポジト リと[定義取得]コマンド
図17.6:[テーブル]リポジト リと[定義取得]ウィンド ウ
[ 定義取得]ウィンド ウは 、自動的に閉じます。この後、テーブルの各欄に値が表示されます。
SQLガ イド 17.4定義取得 17–11
図17.7:[定義取得]ウィンド ウが閉じた後の[テーブル]リポジト リ 複数のテーブルを取得したい場合、次のようにします。
1. カーソルを[テーブル ]リポジトリのタイトルの行に置きます。
2. [オプション ]メニューから[定義取得]を選択します。
3. [ 定義取得]ウィンド ウが表示されます。
4. [データベース]欄に移動し 、ズームします。
5. [データベース一覧]からデータベースを選択します。
6. [タグテーブル ]欄に移動し 、ズームします。
「S=選択」を選択することで、[テーブル選択]ウィンドウを使用して、データベースでアクセス可能なテー ブル(ユーザ名とパスワードが設定されているテーブル )を選択することができます。
[テーブル選択]ウィンド ウが開きます。
図17.8:[テーブル選択]ウィンド ウ
17 この後、[ テーブル選択]ウィンド ウで 、定義取得したいテーブルを選択し ます。選択したテーブルには 、 チェックマークが表示されます。選択は、次のようにして行います。
1. 定義をロードしたいテーブルをハイライトさせます。
2. スペースバーを押します。これで 、[ 選択]欄にチェックマークが表示されます。このチェックマーク が付いたテーブルの定義が読み込まれることになります。
定義取得の際の注意
定義取得を行う場合、次の点に注意してください。
■ 既存のテーブルの定義を取得した場合、データベースの各カラムのデータ型はそれぞれ 、dbMAGICの データ型のうち、データベースのデータ型に一番近いデータ型に変換されます。
■ 特殊データ型は、そのデータ型がdbMAGICにあるときには、その特殊データ型が使われます。
■ dbMAGICでサポートされていないデータ型が見つかった場合、定義取得は失敗します。
■ 定義取得処理は、データベースによって異なることがあります。
■ テーブルリポジトリの[オプション/定義取得]を行うと、[名前]欄にテーブル名が上書きされます。
ビュー定義の取得
SQLには、テーブル定義のほか、ビュー定義もあります。このビューについても、[ 定義取得]コマンド で 定義を取得できます。SQLのビューは仮想テーブルで、クエリにより定義されます。ビューはテーブルと同 じようにアクセスできますが 、格納されている行は物理行ではありません。SQLのビューに対しては、一般 に照会モード でアクセスでき、さらに、RDBMSによってはテーブルと同じように行の更新が可能です。
ビューにはインデックスはありません。そのため、ビューの定義を取得する際には、仮想ユニークインデック スを定義しなければなりません。これは、dbMAGICでは、処理上、テーブルの位置情報が必要なためです。
なお、Oracleでは、ROWIDが使われ 、ビューがテーブルをもとに作成されているときには、ROWIDを取得 できます。このROWIDが位置情報になります。ただし 、これ以外の場合、ビューの定義を取得するときに は、仮想ユニークインデックスを定義しなければなりません。