データベース・プログラミング入門へ戻る 

 データベースとは何か

 少し大きな書店に行くと、データベースの解説本が多数売られていて、もう解説することなど尽きているのではないかと考えてしまう。しかし、データベースを使おうとしている人(プロではない)からは、今でもかなり悲壮な質問が飛んでくる。このギャップはどこにあるのだろうか、というのが、近年の私の懸案事項である。
 というのも、私自身は、データベース入門は決して難しくないと考えているのもかかわらず、現状ではソフトの使い方の書籍が多くて、それらでは、まともなプログラミングができないからだ。逆に、データベースのプログラミングの本はやたらと難解で、たしかに敷居が高いと思える。そこで、記憶をたどって、私のデータベースへの接近法を思い出し、現在に通用する形にまとめたいと考えた。

● データベースとは

 本稿で述べるデータベースは、多人数で複数のプログラムから使用できる、「データの基地」のデータベースである。
 たとえば、Microsoft Accessは一人用だが、本格的な多人数用のデータベースと共通点が多いので、「Accessが多人数から同時に使用できたら…」と考えてみれば良いだろう。
 企業や団体で共有すべきデータはいろいろ考えられる。たとえば、従業員全員の基本データ、職種別の技能データ、委員会ごとのメンバの表、顧客基本データ、契約内容のデータ、一つ一つの取引内容データ、扱う商品のデータ、在庫のデータ、などである。
 むろん、数人の会社で顧客も数十人、という状況では、機械の手など借りなくても、書類のみで管理できるかもしれない。しかし、数千件、数万件、数十万件のデータとなるとどうだろうか。機械(コンピュータ)の活躍の場が、そこにある。

● データベースのデータの特性

 データベース以前のシステムでは、在庫等のデータは継続して使われ、取引内容データはその変更のためのデータとして扱われると思う。
 データベースを使用する場合、ある期間の伝票を集めて一気に処理、ではなく、座席予約などのオンライン・システムのように、刻々とシステムの状態が変わってゆく、という状況が望ましいであろう。データベースは、まさに、その時点の企業や団体の状態を計算機内に反映していることになる。

● コードについて

 データベースばかりでなく、従来型のオンライン・バッチ・システムにおいても、コード化は基本である。
 身近なコードとして、ISBNコードを見てみよう。たまたま手元にある本、全音楽譜出版社のショスタコービッチ交響曲12番"1917年"の総譜を見てみる。裏表紙にISBN4-11-891812-9と、いかにも機械で読めそうな字体での印刷がある。私の記憶では、先頭の4が日本を表し、末尾の9がチェックディジットである。「-」記号には読みやすくするための区切りの意味しかない。
 ISBNコードにより、書籍は特定できる。特定できるということは、いわゆるID番号である。

 人物の特定を考えてみよう。まず、名前は一定しないかもしれない。結婚・離婚もあるし、私は名前欄が5つもあるカルテを見たことがある。誕生日は覚えていなければアウトである。戸籍の生年月日は本当だろうか、もし、数万人以上のデータがあるのなら、調べてみると面白い事実が明らかになると思う、つまり生物としての生年月日と社会的な生年月日の二重性がある、ということだ。性別ですら一定ではないし、定義も複数ありそうだ。逆に考えて、同姓同名・同一生年月日というペアも珍しくはない。だから背番号 = ID番号はぜひとも必要なのである。
 コードの命名規則の設計は大切で、わずかに意味を付けるのがよい、とされている。たとえば、従業員番号なら、入社年度とその年の一連番号にする、などである。コード番号は、数が増えてくると計算機なしでは管理しきれない。ID管理は歴史上の計算機の起源とも関連しているほどである。

● 表示と印刷について

 アマチュアに意外に分かりにくいのが、システム設計において、画面・帳票とプログラムはほとんど同一物、として扱われる点である。もちろん、ユーティリティと呼ばれる、さまざまなプログラムから呼び出される定型処理 (たとえば日付から曜日や休日を知りたい、など) のプログラムもある。
 システムを設計する際、画面を図面上の四角で表し、構成図を描いてゆく。通常、階層構造になっていて、最初の画面があり、メニュー等で下位の画面がでる仕掛けになっている。
 各々の画面には処理前のデータ(入力)と処理後のデータ(出力)が対応している。ある画面が表示されるということは、対応するデータの処理が行われる、ことが期待されている。
 帳票(印刷)の設計は大切で、最終的な報告に反映されないデータは入れても無駄である。入れたデータしか出てこない、出したいデータだけを入力する、データベースの鉄則である。

● データベースソフトの使い方

 Accessをはじめとするデータベースソフトには、データを扱うための画面や、定型処理のためのスクリプトが用意されているのだが、ウィンドウ時代に入ってからは、私にはデータベースソフトのみでシステム作成に成功した覚えがない。
 これはなにも、データベースソフトが役立たない、ということではない。それどころか、最近のデータベースソフトの機能は大いに活用させていただいている。

 データベースの作業を、3つに分類して考えてみる。
 (1) データベースの作成、ネットワーク利用者との接続、排他処理、セキュリティの確保。いわゆるDBMS (データベース・マネージメント・システム)の仕事である。データベースは複雑である、というのは、このあたりの話で、OSに匹敵する機能が要求される。入門者にとっては、データベースの作成が最初の関心事になる。
 (2) データのお世話。データベースのデータを表計算ソフトで扱いたいとか、少量のデータを追加したいとか、リレーショナル・データベース(RDB)なら、表形式でデータを見たくなるし…、そのような軽い作業はOfficeに付属するようなデータベースソフトの独壇場、と思う。ODBC等でもっと大きなデータベースに接続することもできる。以前はこんなことにもプログラムを組んでいた、今は本当に楽である。
 (3) 一般の入力、照会、印刷の指令等。プログラムを組むべきである。それも、Visual BASICのような専用のプログラミング言語を使用するのが良い。

 一つのパソコンで使用するだけなら、(1)と(2)をパソコン用のデータベースソフトひとつで済ますことができる。問題は(3)で、外部のプログラミング言語から扱える手軽なデータベースソフトは意外に少ないようである。Microsoft AccessにはDBMSの側面があるので、(3)もクリアしている。データベースへの接続はSQL照会言語を使用するので、組み合わせの自由度も高い。本稿でもっぱら紹介するやりかたである。

2002年11月2日 岡田好一