アプリケーション開発は、大きく「処理(プロセス)」と「データ」に分けられる。「処理」は業務の変化に伴い、将来的に変更が発生する可能性が高い。一方「データ」は、そもそも後からの設計変更が容易ではないこともあり、変更の発生はほとんどない。そのためデータベースの設計はとても重要である。
IBM iで使用する「Db2 for i」は、OSに組み込まれて提供されるリレーショナル・データベースであるので、導入作業が不要であったり、ほかのRDBと比較して運用の際に考慮すべき設定がOSやデータベースで管理される特徴があるが、データベース設計やアプリ設計で検討すべき項目や、開発で実施する作業はほかのデータベースと同じである。Db2 for iの特徴を踏まえながら設計・開発の概要を説明する。
Db2 for iの特徴
基礎知識編05「IBM iとデータベース」(前号)の章でDb2 for iのインターフェースとして、一般的に使われるSQL以外に、IBM iが従来からもつシステム・インターフェースがあることを述べた。このためIBM iでテーブルを作成する方法は、大きく2種類ある。
1つはSQLで、DDL(Data Definition Language、データ定義言語)のCreate Tableコマンドを使用する方法。もう1つは、システム・インターフェースのDDS(Data Description Specification、データ記述仕様)を使用して作成する方法である。
DDSでは、ファイルのデータ属性を記述したソース・ファイルをコンパイルすることで、物理ファイルや論理ファイルを作成する。DDLで作成したテーブル、DDSで作成した物理ファイルや論理ファイルはともに、他方のインターフェースからの操作が可能である。詳細については、後述する。
● データのアクセス方法
データのアクセス方法はさまざまあるが、代表的なSQLとレコード・レベル・アクセス(RLA)の2つについて説明する。
SQLは、5250インターフェースからSTRSQLコマンドを実行することにより使用できる対話型SQL画面や、アプリケーション・プログラムのなかで組み込みSQLとして使用することが可能である。一方、レコード・レベル・アクセスは、RPGプログラムなどで使用される主流なアクセス方法である。
両者の特徴として、RLAは大量データをバッチ処理などで順次処理する際に非常に高速かつ効率よくアクセスできる処理方法である。SQLはレコードセット単位でのアクセスを主体とし、アプリ側の検索、データ結合ロジックをデータベースに任せることによりアプリ開発の効率化およびビジネス・ロジックとデータ間のモジュール化を促進させる処理方法と言える。
このほかに「Navigator for i」「IBM i Access Client Solutions、System iナビゲーター」といったツールからのアクセスも可能である。これらを理解したうえで、いよいよDb2 for iにおけるデータベース設計および開発について説明する。
データベース設計の流れ
データベース設計は図表1に示すとおり、一般的に、(1)概念設計、(2)論理設計、(3)物理設計のフェーズに分けられる。(1)(2)はシステムによらず普遍的であり、(3)は物理固有の考慮が必要となるが、それらを具体的に記述する。
【図表1 画像をクリックすると拡大します】
(1)概念設計
プロジェクトの要件定義では、基本計画に基づき、新規の業務アプリケーションに対する要件を洗い出し、対象を絞り込み、最終的な要件を決定する。業務の仕組みや流れを整理するために、処理やデータの流れをデータフローやデータストアにまとめる。
概念設計ではこれらのアウトプットを参考に、システムで扱うデータ項目を整理する。データ項目の整理では、データの正規化も行う。データの正規化は、冗長性の排除、データの正しさを保証する保全性の向上、データ形式の統一、定義や命名方法の標準化をすることが目的である。またデータ構造やデータ間の関連をわかりやすく視覚的に捉えるためにER図を作成する。
ER図はその名前のとおり、データを実体(エンティティ)と関連(リレーション)で示し図式表現することができる。実体や関連に属性(アトリビュート)をもたせることも可能である。
(2)論理設計
概要設計のアウトプットをもとに、システムではなくビジネスの観点で設計を行う。たとえばテーブルや索引の設計を行うなかで、不必要に正規化されていないか、といった観点でデータを最適化する。またテーブルや列に対して制約を定義して、データ保全の観点から検討する。さらに、データ操作方法(SQL、レコード・レベル・アクセスなど)やデータ構造の定義方法(SQLまたはDDS)についても検討する。
(3)物理設計
パフォーマンスや可用性も考慮し、システムの観点で、Db2 for iのオブジェクトとしてデータベース、テーブル、索引、制約を定義し、実際のハードウェアにどのように構築するか決定する。最終的に必要となるハードウェア資源や、ジャーナル設計といった詳細についても検討する。CCSIDについても必ず検討が必要である。
データベース開発における作業
データベース開発では、実際に物理ファイル、論理ファイルといったデータベース・オブジェクトを作成する。SQLおよびDDSによる方法を簡単に紹介する。
(1)SQLによる方法
SQLではDDLを使用してテーブル、インデックスなどを作成する。作成されたテーブルは「PF」、インデックスは「LF」というオブジェクト・タイプとなるが、オブジェクトの属性値のなかにSQLという属性が付与され、DDLで作成されたことが識別可能である。
(2)DDSによる方法
DDSによる物理ファイル、論理ファイルの作成の流れを図表2にまとめる。
【図表2 画像をクリックすると拡大します】
DDSで物理ファイルを作成する場合、図表3のようなフィールドを定義したソース・ファイルを作成する。図表4のように定義が完成したら、CRTPFコマンドにより物理ファイルを作成する。
【図表3 画像をクリックすると拡大します】
一方、論理ファイルはデータをもたず、定義のみ指定する。CRTSRCLFコマンドでソース論理ファイルを作成し、図表4のように定義が完成したら、CRTLFコマンドにより論理ファイルが作成される。[松川 真由美]
【図表4 画像をクリックすると拡大します】