これ以降の節で説明するタスクの多くを実行するには、テスト環境をセットアップする必要があります。たとえば、アプリケーションの SQL コードをテストするには、データベースが必要です。
テスト環境には、以下のものを含めてください。
テスト・データベースを作成しなければならない場合には、 CREATE DATABASE API を呼び出す小規模なサーバー・アプリケーションを作成するか、またはコマンド行プロセッサーを使用してください。コマンド行プロセッサーについてはコマンド解説書 を、 CREATE DATABASE API については管理 API 解説書 を参照してください。
必要なテスト表また視点を設計するには、まずアプリケーションのデータ要求を分析してください。表を作成するには、スキーマで CREATETAB 権限と CREATEIN 特権が必要です。代替権限については、 SQL 解説書 にある CREATE TABLE に関する情報を参照してください。
アプリケーションがアクセスするデータをリストし、それぞれのデータ項目がどのようにアクセスされるかを記述してください。たとえば、開発中のアプリケーションが TEST.TEMPL、TEST.TDEPT、および TEST.TPROJ 表にアクセスするとします。アクセスのタイプは、表 1 のように記録されることになります。
表または視点名 | 行の挿入 | 行の削除 | 列名 | データ・タイプ | アクセスの更新 |
---|---|---|---|---|---|
TEST.TEMPL | なし | なし |
EMPNO LASTNAME WORKDEPT PHONENO JOBCODE |
CHAR(6) VARCHAR(15) CHAR(3) CHAR(4) DECIMAL(3) |
あり あり あり |
TEST.TDEPT | なし | なし |
DEPTNO MGRNO |
CHAR(3) CHAR(6) |
|
TEST.TPROJ | あり | あり |
PROJNO DEPTNO RESPEMP PRSTAFF PRSTDATE PRENDATE |
CHAR(6) CHAR(3) CHAR(6) DECIMAL(5,2) DECIMAL(6) DECIMAL(6) |
あり あり あり あり あり |
アプリケーション・データ・アクセスの記述が完成したら、そのアプリケーションに必要なテスト表および視点を構成してください。
この例では、CREATE VIEW SQL ステートメントを用いて TDEPT 表のテスト視点を作成します。
アプリケーションと一緒にデータベース・スキーマを開発している場合は、テスト表の定義が開発プロセス中に繰り返し詳細化されていきます。基本アプリケーションは普通、表を作成することもそれにアクセスすることもできません。それはデータベース・マネージャーが実際にはない表や視点を参照するステートメントをバインドできないからです。時間をかけずに表の作成および変更を処理するには、表を作成するために別個のアプリケーションを開発することを考慮してください。もちろん、いつでもコマンド行プロセッサー (CLP) を使用して対話的にテスト表を作成することができます。
データを表に挿入するには、以下の方法のいずれかを使用してください。
INSERT ステートメントの詳細については、 SQL 解説書 を参照してください。 IMPORT、LOAD、および RESTORE ユーティリティーについては、 管理の手引き を参照してください。
ランダムに生成されたテスト・データを表に挿入するための技法は、次の SQL ステートメントに具体的に示されています。以下の CREATE TABLE ステートメントにあるように、 EMP 表には 4 つの列、ENO (従業員番号)、LASTNAME (名字)、HIREDATE (入社日付)、そして SALARY (従業員の給料) があるものとします。
CREATE TABLE EMP (ENO INTEGER, LASTNAME VARCHAR(30), HIREDATE DATE, SALARY INTEGER);
この表で、従業員番号には 1 からある数値、たとえば 100 までを、残りの列にはランダム・データを挿入するとします。このことを実行するには、次の SQL ステートメントを使用します。
INSERT INTO EMP -- 100 個のレコードを生成する。 WITH DT(ENO) AS (VALUES(1) UNION ALL SELECT ENO+1 FROM DT WHERE ENO < 100 ) (1) -- 次に、DT 内に生成されたレコードを使用して、従業員レコードの -- 他の列を作成します。 SELECT ENO, (2) TRANSLATE(CHAR(INTEGER(RAND()*1000000)), (3) CASE MOD(ENO,4) WHEN 0 THEN 'aeiou' || 'bcdfg' WHEN 1 THEN 'aeiou' || 'hjklm' WHEN 2 THEN 'aeiou' || 'npqrs' ELSE 'aeiou' || 'twxyz' END, '1234567890') AS LASTNAME, CURRENT DATE - (RAND()*10957) DAYS AS HIREDATE, (4) INTEGER(10000+RAND()*200000) AS SALARY (5) FROM DT; SELECT * FROM EMP;
上記のステートメントについて説明します。
ランダムなテスト・データを生成するのに役立つプログラムの実例は、 sqllib/samples/c サブディレクトリー内の fillcli.sqc および fillsrv.sqc のサンプル・プログラムを参照してください。
開発中のすべてのユーザー定義関数 (UDF) を、テスト・データのプロトタイプとしたい場合もあります。 UDF を定義する理由と方法の詳細については、 ユーザー定義関数 (UDF) とメソッドの作成およびユーザー定義関数 (UDF) およびメソッドを参照してください。