矢沢久雄

●この講座の目的

 IT産業にかかわっているなら,「データベース」という言葉を耳にしない日はないでしょう。コンピュータの主な用途は,データを処理することです。つまり,データベースなくしてコンピュータは成り立たないといっても過言ではありません。ところが,データベースの難解な実装技術ばかりが話題の中心となっているため,バリバリのエンジニアでもない限り,会話にさえ着いていけない人が多いのではないでしょうか。これでは,管理者や初級エンジニアの不安は募るばかりでしょう。

 そこでこの講座では5回にわたり,あらためて「データベースとは何か?」を原点に立ち返って解説し,データベースにかかわる基礎的な知識をマスターした上で,データベースの実装技術を概観します。何事も基礎をマスターするほど心強いことはありません。それでは,はじめましょう!

●データベースとデータ・ファイルの違い

 データベース(DataBase:DBと略すことが多い)とは,データの集合体という意味です。データベースという用語は,コンピュータの分野だけで使われるものではありません。皆さんの手帳に得意先の電話番号が記載されているなら,それも立派なデータベースです。電話番号をフロッピ・ディスクやハード・ディスクにデータ・ファイルとして記録すれば,それだけでコンピュータで利用できるデータベースとなります。

 それでは,コンピュータにおけるデータベースとは,データ・ファイルのことなのでしょうか?答えは,YESともNOとも言えます。例えば得意先の氏名と電話番号を,ワープロ・ソフトのWordで入力し,これを“denwa.doc”というファイル名で保存したとしましょう。このデータ・ファイルの内容を,Word以外のプログラムで読み書きすることができるでしょうか? Word独自のファイル形式で保存されているため,一部のソフトを除けば,他のソフトでは読み書きできませんね。このように,特定のプログラム(ここではword)に依存したデータ・ファイルは,データベースとは言えません。

 今度は,Windows標準のメモ帳などを使って,「氏名,電話番号(改行)」という形式でデータを入力し,これを“denwa.txt”というファイル名で保存したとしましょう。このデータ・ファイルなら,データの格納形式(‘,’カンマで区切られ,改行で1件の情報を表すテキスト・ファイルであること)が分かるので,メモ帳以外のプログラムからでも読み書きできます。これなら,データベースと呼ぶことができます(図1)

図1●さまざまなプログラムから同じデータ・ファイルが利用できる

 このことから,データベースとデータ・ファイルの違いが見えてきたでしょう。データベースの実体がデータ・ファイルであることは事実ですが,データベースと呼ばれるためには,以下の条件を満たしていなければなりません。

  (1)特定のプログラムに依存しないこと(プログラムと独立したデータ・ファイルであること)
  (2)データの格納形式が公開されていること(任意のプログラムから読み書きできること)
  (3)容易にデータを操作できること(登録,読み出し,更新,削除,など)
 データベースの構造やデータの格納形式のことをスキーマ(schema)と呼ぶこともおぼえておいてください。

●データベース・エンジンの役割

 データをカンマで区切って格納する形式のデータ・ファイルのことを,CSV(Comma Separated Value)ファイルと呼びます。CSVファイルは単純で取り扱いやすいので,異なるOSや異なるプログラムの間でデータを交換する際によく使われます。CSVファイルなら,皆さんがオリジナルのプログラムを作成して,データを読み書きすることも容易でしょう。ところが,実際のデータ・ファイルには,マイクロソフトのデータベース・ソフトであるAccessで使われているMDBファイルのように,データ・ファイルの構造が公開されていないものも多くあります。この理由は(1)データ・ファイルの構造が企業秘密であるから,(2)たとえ構造を公開したとしても,複雑すぎるために取り扱いが困難だから,です。

 そこで,市販のデータベース管理システム(マイクロソフトのAccess,Microsoft SQL Server,及びオラクルのOracleなど)では,データ・ファイルを読み書きするための専用のプログラムを提供しているのが一般的です。このようなプログラムのことをデータベース・エンジンと呼びます。エンジンとは,特定の機能に特化されたプログラムのことです。特定のデータ・ファイルを読み書きする機能だけを持っているので,データベース・エンジンと呼ばれます。データ・ファイルの構造は非公開であっても,データベースエンジンを操作する方法は公開されています。したがって,データベース・エンジンを仲介させれば,さまざまなプログラムから目的のデータ・ファイルを読み書きすることができます(図2)

図2●データベース・エンジンを仲介させて,データ・ファイルを読み書きする

 例えば,先ほど出てきたMDBファイルを読み書きするために,マイクロソフトはMicrosoft Jet Database Engine(単にJetとも呼ぶ)というデータベース・エンジンを提供しています。皆さんがプログラミング・ツールのVisual Basicなどを使って作成したプログラムからMDBファイルを読み書きするためには,Jetを仲介させることになります。そのほかのデータベース管理システムでも,ベンダーがそれぞれ専用のデータベース・エンジンを提供しています。

 データベース・エンジンは,主にデータベースを作成,読み出し,更新,および削除する機能を提供します。これらの4機能は,データベースの基本的な操作であり,Create(作成),Read(読み出し),Update(更新),Delete(削除)の頭文字を組み合わせてCRUD(クラッド)と呼びます。

●データベースの論理的な構造を表わすテーブル

 データベースの実体は,フロッピ・ディスクやハード・ディスクに記録されたデータ・ファイルですが,データベースの構造を示すときには,テーブル(表)を使うことが一般的です。物理的なデータ・ファイルの構造など気にしないで,論理的にはテーブルすなわち表形式でデータが格納されていると考えるのです。

 どのような種類のデータベースであっても,その構造は,テーブルを使って統一的に表すことができます。データベースを読み書きするプログラムでも,表形式のユーザー・インタフェースを提供するものが多くあります。図3は,Microsoft Accessの画面の一部です。表形式でデータが入力できるようになっているのが分かるでしょう。

図3●テーブル(表)は,フィールド(列)とレコード(行)で構成される

 ここで,重要な用語を2つ覚えてください。テーブルを構成する列をフィールドと呼び,行をレコードと呼ぶ,ということです。フィールドとは,レコードを構成する個々のデータを切り分ける単位です。図3のテーブルには「氏名」と「電話番号」という2つのフィールドがあることになります。レコードとは,関連するデータの集まりです。ここでは「氏名」と「電話番号」の2つのフィールドが集まって1件のレコードとなっています。レコードは,1つ,2つ,…ではなく,1件,2件,…と数えます。図3のテーブルには3件のレコードがあることになります。

 1つのデータ・ファイルの中には,テーブルが1つだけある場合も,テーブルが複数ある場合もあります。さらに,複数のテーブルを含んだ複数のデータ・ファイルが集まって,1つのデータベースとなる場合もあります。いずれにしても,データベースを物理的なデータ・ファイルの集合ではなく,論理的なテーブルの集合として考えることが重要です。例えば,データベースの設計では,テーブルの内容と構成を設計することになります。皆さんも,データベース・エンジニアが,複数のテーブルを組み合わせたような設計図(ER図などと呼ばれます)と格闘(?)しているところを見たことがあるでしょう。