A-VXのデータベース(2)
-
A-VX RDBに話を戻します。
ちょっと専門的な話になってきます。
- 1 A-VX付属のデータベース
-
先のページでも書きましたが、復習を兼ねてもう一度簡単に説明します。
A-VXには、A-VX RDBという名前のリレーショナルデータベースが付属で付いています。
リレーショナルデータベースなので、テーブルやビューの概念があります。
SQLも使えます。が、A-VXではあまり使わないようです。A-VXではSQL文を使うには何かしら別売りのソフトを買わなくてはいけないためです。例えばCOBOLでは埋め込みSQLが使えますが、これを使うには別売りの開発用ソフトが必要です。
このためA-VXでは、従来通りのREAD/WRITEアクセスやSQL言語を使わない簡易言語などを使うことが多いようです。
- 2 A-VX RDBの用語
-
まず、A-VX RDBと他のRDBとでは用語が少し異なっていることがあります。同じことを別の言葉で言っているだけなので、慣れれば何の問題もありません。
なるべく一般のRDBの用語と比較して説明したいと思います。
- ・基本表と仮想表
-
テーブルのことをA-VX RDBでは基本表、ビューのことを仮想表、基本表と仮想表を合わせて表といいます。
A-VX RDBでは、仮想表(ビューのことね)を3種類に分類しています。単にどのような操作をして仮想表を作ったかで分けているだけです。
仮想表の種類 概要 選択型仮想表 1つの基本表から、必要な列を取り出して作った表のこと。関係演算では「射影(projection)」に当たる。(選択型だが、関係演算の「選択」ではない。) 結合型仮想表 複数の基本表から、共通な列で結合して作った表のこと。関係演算では「結合(join)」に当たる。
結合型仮想表には、「結合(JOIN)」と「連鎖(CHAIN)」という2種類の結合方法がありますが、これはそれぞれ「内部結合(INNER JOIN)」と「外部結合(OUTER JOIN)に相当します。
結合するときには、元になる表とそれに結合する表があり、それがプライマリ表、セカンダリ表と呼ばれます。合併型仮想表 同じ形式の複数の基本表を1つの表として作った表のこと。集合演算の「和(UNION)」に相当します。
複数の表を「和」した後に「射影」した仮想表を選択合併型仮想表といいます。
複数の表を「和」しただけの仮想表は基本合併型仮想表といいます。
SMARTⅡEXやCOBOL85で作ったプログラムでは、以上の種類の表があります。
RDB/EUFⅡでは、この他に「一時表」という種類の表があります。
- ・レコードキー
-
A-VX RDBのレコードキーは、キーとしての役割とインデックスとしての役割が混ざったようなものです。
後で詳しく書きますが、実際にはA-VX RDBに入れたデータは複数索引順編成ファイルに入っています。複数索引順編成ファイルは、最大8個のキーを使えるので、基本表も最大8個のキーを使用できます。このキーはレコードキーと言います。
レコードキーは主キーというよりも候補キー的なもので、プログラム中でキーを選んでそのキーを主キーのようにして使います。
レコードキーを作ると必ずインデックスができます。(A-VX RDBの場合、キーファイルと呼ばれる)
「二重キー」属性を付加するとキー項目に同じ値を入れること(ユニークではない)ができるようになったり、複数の項目(列)を組み合わせてキーにできます。
レコードキーはキーというよりもインデックスとしての性格の方が強いので、データベースを設計する時にはキーではなくインデックスだと考えた方がいいかもしれません。
- ・一時キー
-
READ/WRITEアクセスではキーを介してアクセスすることが多いです。ところが、あらかじめキーを用意しておかなければならないのは、いろいろ面倒です。そこでプログラム実行時に一時的に任意の列の項目をキーにすることができます。このキーを一時キーといいます。
- ・合成キー
-
A-VX RDBでは最大4個の項目からキーを作ることができ、これを合成キーといいます。
複合主キーのようなものと考えてもいいですし、複数の列(項目)を組み合わせて作ったインデックスと考えてもいいです。
- 3 A-VX RDBのインストール
-
A-VX RDBは、A-VXに標準に載っていますので、インストールは不要です。
ただし使用するときは設定が必要です。まずシステム生成で、「A-VX RDBを使用する」ような設定に変更します。さらにSYS@DDFやSYS@DBDIRといったファイルを作成します。この初期設定関係の話は、NECのA-VXのマニュアル、リレーショナル型データベース説明書に書いてあります。
- 4 A-VX RDBの物理構造
-
A-VX RDBの物理的な構造(主にファイル)を説明します。
システムが管理しているファイル(システムファイル) SYS@CAT システム全体のデータベースやファイルの情報が入っているシステム用のファイル。システムで1個。 SYS@DDF
SYS@DBDIRデータベースに入っている表の情報(表名、表アクセス権限など)や表を構成する項目の情報(項目名やその属性、アクセス権限など)が入っているシステム用のファイル。システムで各1個。Oracleの制御ファイルや表領域内のデータディクショナリのようなもの。 SYS@AJnn 更新後ジャーナルファイル。A-VX RDBのジャーナル機能とトランザクション機能を同時に使用する時に使うファイル。ジャーナル機能とトランザクション機能を使っていなければ不用。nnは2桁の数字。OracleのREDOログのようなもの。 SYS@BJNL 更新前ジャーナルファイル。A-VX RDBのトランザクション機能を使わないならば不用。OracleのUNDO表領域。 データが入っているファイル(物理ファイル) キーファイル レコードキーが入っているファイル。最大8つまで作ることができます。この「物理ファイルのキーファイル」はオープン系のデータベースでいうとインデックスに相当します。キーファイルが0個、つまりキー無しもできます。 データファイル データが入っているファイル。1つの基本表につき、1つできます。
オープン系のRDBだとREDO/UNDOは必須だったりしますが、A-VX RDBは必須ではありません。無ければそれらの機能無しで動きます。A-VXの世界では、どうもジャーナルファイルは使用していないのが一般的のようです。
物理ファイルの形式は複数索引順編成ファイルになります。A-VX RDBのデータをRDBを介さずに直接複数索引順編成ファイルとしてアクセスすることもできます。
- 5 A-VX RDBの構成
-
A-VX RDBに関連するものを下に挙げます。
この他にA-VX RDBをA-VX外からアクセスできるソフト群がありますが、それは前に説明済みなのでここでは挙げていません。
A-VX RDB本体
(RDBMS)A-VXに標準付属。 データディクショナリ保守 表を作ったり、削除したりするユーティリティ。A-VXに標準付属。 COBOLからの
READ/WRITEアクセスCOBOL85コンパイラのみでコンパイル可能。(COBOL85コンパイラは別売り。) COBOLからのSQLアクセス SQLを使ったCOBOLプログラムのコンパイルはCOBOL85コンパイラの他にSQLプリコンパイラが必要。(SQLプリコンパイラは別売り。) RDB/EUFⅡ RDBに対して書き込みをしたり、検索をしたりすることができる別売りのソフト。後述。 SMARTⅡEX A-VX RDBに対してアクセスできるプログラムを簡単に作成できる別売りのソフト。
- 6 表の作成/削除
-
A-VX RDBでは表を作成するのに「create table xxxx」というようなSQL文は使いません。表(基本表、仮想表)を作ったり削除したり権限を与えたりするのは、データディクショナリ保守(#DDM)というユーティリティを使います。
データディクショナリ保守で定義した情報は、SYS@DBDIRとSYS@DDF(或いはユーザDDF)というファイルに格納されます。
- 7 RDB/EUFⅡ
-
RDB/EUFⅡというソフトがありますが、これはA-VX RDBのデータを読み込んで(検索して)画面に表示したり、逆に書き込んだり、バッチを作って一括実行したりということができます。
アドホック的にRDBに対して問い合わせや更新をしたりできるので、A-VX RDBのデータのメンテナンスソフトとして使えます。SQLは使えませんが、役割的にはOracleのSQL*PLUS的なソフトです。
なお、これも別売りのソフトウェアで、A-VX本体には付属していません。
下の画面が、問い合わせの画面です。
マイクロソフトのアクセスのクエリの画面に似た感じの画面です。(下の画面はマイクロソフトのアクセスの画面。比較説明用です。A-VXの画面ではありません。RDB/EUFⅡの「列名」に対応するのがアクセスの「フィールド」の行、同様に「明細」が「表示」、「グループ・ソート」が「並べ替え」と考えれば、良く似ている。)