デスクトップDBも基本は一緒

写真2●SQLを直接記述する
データベース・サーバーを利用するクライアントは,デスクトップ・データベースほどの柔軟なユーザー・インタフェースは付属しないことが多い。この場合,SQLを使って直接操作することになる。ただし最近では,多少のデータ操作は可能である。ここではボーランドのInterBase用のクライアント・ソフトを操作している。
写真3●デスクトップ・データベースによるテーブル定義
表形式の分かりやすいユーザー・インタフェースを採用している。インデックスの設定なども同じ画面でできる。
写真4●表形式でデータを一覧した画面
表形式で表示されたデータを一覧し,直接操作できる。データの絞り込みや並べ替えを駆使すれば,データの分析にも使える。
写真5●フォームの作成
画面自体は汎用言語を使って開発するクライアントと大きく違わないが,標準でさまざまな部品が用意されているので開発は楽になる。

 手軽に使えるデータベースという印象のある,Accessを筆頭としたデスクトップ型のデータベースだが,基本的に求められることは本格的なデータベース・サーバーと変わりがない。きちんとしたデータベース設計と,それに応じた入出力フォーム,そして,データの検証などを盛り込まなければならない。違うのは,データ入力やテーブル定義がビジュアルで,わかりやすいという点だ。

 例えばSQL ServerやInterBaseといったデータベース・サーバーも,対話的に利用できる。だがその方法は,味も素っ気もないウインドウが表示されて,パソコン通信用のターミナルと同じような画面に直接コマンドを記述していくだけなのだ(写真2[拡大表示] )。こういったコマンドはSQLと呼ぶ,データベース操作言語で実施する。ほとんどのDBMSで共通に利用できるものなので,慣れてしまえば十二分に使える。だが,決して便利とは言えない。もちろんこの方式にも利点はある。サーバーの場合,同じ構造のデータベースを複数個用意して,負荷分散させることはよくある。その際に,定義やデータなどをテキスト・ファイルで一括して作っておいて,それをこういったコンソールで一気に読み込む。対話型にありがちな操作ミスを回避できるのだ。

使いやすさがデスクトップDBの売り

 その点,デスクトップ・データベースはユーザー・インタフェースが充実している。例えばテーブルの定義にしても,表形式で表示した専用のウインドウを使う(写真3[拡大表示])。分かりやすいし,DBMSが備えているデータ型などを選択式で選べるので,つまらないスペルミスなどによるエラーもない。SQLで記述するにはややこしいフィールドの属性(ヌル値の禁止やインデックスの設定,値重複の禁止など)は一括して定義できるのでわかりやすい。SQLでは例えばヌル値の禁止はテーブル作成時に指定するが,重複値の禁止はインデックス設定時になる。このほか,値集合の制約なども簡単に定義可能だ。

 デスクトップ・データベースの一番の売りは,データ操作のしやすさだろう。データベースを利用するシステムは多くの場合,業務などに特化したアプリケーションなので,それなりのユーザー・インタフェースを作ってやらなければならない。だが管理をする際や,システム構築の初期段階などはあまり固まったユーザー・インタフェースでなくてもよいことは多い。さらに,データ分析などをする際には,さまざまなアドホック操作をするため,ユーザー・インタフェースを固めることができない。いろいろな条件でレコード集合を取り出して,ソートしたりする。こういった処理には,表形式でデータを一覧できると便利である(写真4[拡大表示])。

 またフォームなどのユーザー・インタフェースを作る場合でも,デスクトップ・データベースはデータベースに特化した機能を備えているので,いろいろ便利である(写真5[拡大表示])。例えばウィザードを使えば自動的にフォームを作成してくれる。ドロップダウン型の項目にデータを入れるのも簡単だ。こういった機能を実現するのに,Visual Studio .NETやDelphiなどでは多少のプログラミングが必要となるが,Accessであれば完全にプログラミングなしで実現できてしまう。ただし入力の制約など相応のシステムとして実現するには,ある程度プログラミングする覚悟は必要である。

「データベースって,使いそうで使わないソフトの一つですよね」
「うん。本当に定型的な構造で,しかもたくさん存在するデータって,定型業務以外ではあまり見かけないからね。でもちょっと馬力かけなきゃいけないときには便利だよ」
「使う上で気を付けなきゃいけないことって,何ですか」
「重複した情報を持たないようにすることだね。そのためにはちゃんとデータ設計をしておかないといけないんだ」
「えー。難しそう…」

(北郷 達郎、八木 玲子)