データベース
はじめに
今回は、データベースとはどういったものなのか、どういったことができるのかについて解説します。 ここではdBASE IVとAccessを具体例として用います。他のデータベースシステムを使う場合でも、操作方法に違いはありますが、基本的な考え方はあまり違いません。
データベースとは
データベースとは 岩波 情報科学辞典 によると、「広義には組織的に集められたデータのことを、狭義にはデータベースシステムが扱うデータのこと」をいいます。本講座では、このなかの狭義のデータベースについてお話しします。 データベースシステムで扱うデータベースは蓄積されるデータと、その形式や対応の定義を与えるデータベーススキーマとからなります。単なるデータの蓄積だと、そのデータの定義はプログラムのなかに組み込まれているので、データの再利用は簡単ではありません。しかし、データベースはデータの定義がプログラムとは独立していて、データベースマネジメントシステムを通して利用されるので、再利用が簡単に行えます。
一口にデータベースといっても、データを表現するモデルにはいろいろな種類があります。少し前まではパソコン用のデータベースシステムはカード型のものが多く出ていましたが、最近はdBASE IVやAccessのようなリレーショナルデータベースが主流になっています。
リレーショナルデータベースとは、1970年にIBM社のE.F.Coddが提唱したモデルで、縦横2次元の表を基本にデータを管理するものです。表の縦一列が項目に、横一列がレコードにあたります。この表に対して、射影(プロジェクション)、選択(セレクション)、結合(ジョイン)といった操作を行うことにより、自分の望むデータを取り出すことができます。
表を作成するとき、すべての情報が入っている大きな表を作ると、場合によってはたくさんの重複したデータを保存することになります。そうすると何回も同じデータを入力しなければならなかったり、一つのデータに変更を加えようとすると関連するすべてのデータを変更しなければならなくなったりします。
リレーショナルデータベースでは、上記のような大きな表を作るのではなく、小さな表をいくつも作成し、それぞれの表を関連(リレーション)付けて大きなデータベースを構成することができます。このようにすることによって、データの更新やデータベースの管理が容易になります。
表というとLotus 1-2-3のような表計算ソフトが連想されると思いますが、データベースのそれとは同じようでいて違うものです。
表計算の表の最小単位はセルです。あるセルと別のセルがどういったつながりがあるのか、あるセルがどういった種類の情報を格納しているのか、などは人間が意識しなければなりません。
それに対して、データベースの表の最小単位はレコードです。ひとつのレコードはひとかたまりとして扱われますし、あるレコードのある項目がどういった種類の情報を格納しているのかは、データベーススキーマに記述されています。
これから言えることは、データベースのほうが表計算ソフトより、大量のデータを扱うのに適したシステムであるということです。だからといって表計算が良くないというわけではありません。細かい計算などを行うのには、表計算ソフトの方が適しています。
図1 リレーショナルデータベース
- 射影
データベースの中から、ある特定の項目のデータを取り出します。
図1 では、工事台帳から[工番]と[工事名称]を取り出しています。
- 選択
データベースの中から、指定条件にあったレコードを取り出します。
図1 では、材料表から[材料]が"電線"のデータを取り出しています。
- 結合
あるデータベースと他のデータベースを関連付けて結合します。
図1 では、材料表と工事台帳を[工番]で関連付けて結合しています。
データベースの構造
dBASE IVは一つの表を一つのファイルとして管理します。これを、データベースファイルと呼びます。データベースファイルは、構造部とデータ部の二つの部分によって構成されています。 構造部には、データベースの持つフィールドの名前とその型や、データが何件入っているか、データを最後に更新した日付などの、データベースファイルに関する情報が入っています。
データ部には、データそのものがレコード単位でデータを入れた順に入っています。
レコードとは1件分のデータのことをいいます。レコードは、構造部で定義されている全てのフィールドを持ちます。
フィールドとは前述の項目のことで、一つのデータベースファイル内でユニークな(他と重複しない)名前を付けなければなりません。また、フィールドはそれぞれ型を持ち、その型に合わないデータは入力できません。
図2 dBASE IVのデータベースファイル
データベースを設計する
データベースファイルを作成するときに、dBASE IVでは表1 のような設定項目とそれぞれの項目が採りうる範囲があります。データベースを設計するときには、これらの範囲のなかで行わなければなりません。 ファイル名やフィールド名は、それがどういったものなのか後で見てわかりやすいように付けましょう。
インデックスはデータの並べ替えや、検索を効率的に行うための機能です。レコードの並べ替えや、検索を行う頻度の高いフィールドはインデックスをYにしておくとよいでしょう。
ファイル名 |
フィールド名 |
フィールド型 |
幅 |
小数 |
インデックス |
最大8バイト |
最大10バイト |
C.文字型 |
1~254 |
|
Y/N |
N.数値型 |
1~20 |
0~18(幅-2) |
Y/N |
F.浮動型 |
1~20 |
0~18(幅-2) |
Y/N |
D.日付型 |
8 |
|
Y/N |
L.論理型 |
1 |
|
N |
M.メモ型 |
10 |
|
N |
表1 dBASE IVのデータベースファイル設定項目
例) 現場で使った材料の管理をするデータベース
材料表
No. |
フィールド名 |
説 明 |
フィールド型 |
幅 |
小数 |
インデックス |
1 |
材料番号 |
材料を識別するための番号 アルファベット1文字+数字5桁 |
C.文字型 |
6 |
|
Y |
2 |
名称 |
材料の名称 |
C.文字型 |
20 |
|
Y |
3 |
単位 |
材料を扱うときの単位 |
C.文字型 |
4 |
|
N |
4 |
単価 |
材料1単位当たりの価格 |
N.数値型 |
8 |
0 |
N |
5 |
備考 |
特記事項があれば記入 |
M.メモ型 |
10 |
|
N |
使用材料
No. |
フィールド名 |
説 明 |
フィールド型 |
幅 |
小数 |
インデックス |
1 |
材料番号 |
材料表の材料番号とリンク |
C.文字型 |
6 |
|
Y |
2 |
数量 |
使った材料の量 |
N.数値型 |
8 |
0 |
N |
3 |
日付 |
材料を使った日付 |
D.日付型 |
8 |
|
Y |
4 |
備考 |
特記事項があれば記入 |
M.メモ型 |
10 |
|
N |
クエリー
クエリー(query)とは、日本語に訳すと「質問」という意味になります。 クエリーの機能を使うと、データベースのデータを並べ換えたり、前述の射影、選択、結合や計算を行うこともできます。クエリーの設定は表に対して、いくつでも作成できるので、データベースのデータをいろいろな角度から見ることができます。
データの並べ換え
射影、選択、結合 計算
データの印刷
データベースの印刷には、大きく分けて二種類あります。 一つは、データベースの表や、クエリーで出力される結果をそのまま印刷するものです。これは、画面に表示するかわりに、プリンタに出力するだけですから簡単にできます。
もう一つは、印刷の形式を自分で自由に作って印刷するものです。ここでいう印刷の形式は、各フィールドの配置だけでなく、日付やページ番号の位置、グループ化や小計、合計の計算などまでを含みます。このように印刷形式を設計して、印刷する機能をレポートと言います。
レポートはバンド (セクション)という単位で設計していきます。バンド (セクション)にはページヘッダーバンド (ページヘッダー)、レポートイントロバンド (レポートヘッダー)、詳細バンド (詳細)、レポート要約バンド (レポートフッター)、ページフッターバンド (ページフッター)、グループバンド (グループ)があります。(括弧内はAccessでの呼称)
- ページヘッダーバンド (ページヘッダー)
毎ページのヘッダ部分に印刷されます。フィールド名や、日付、ページ番号などに使用します。
- レポートイントロバンド (レポートヘッダー)
レポートの最初の部分として印刷されます。レポートの表紙や、前書きなどに使用します。
- 詳細バンド (詳細)
データベースのデータ、1レコードを印刷します。
- レポート要約バンド (レポートフッター)
レポートの最後に印刷されます。レポート全体の集計などに使用します。
- ページフッターバンド (ページフッター)
毎ページのフッタ部分に印刷されます。ページの集計や、ページ番号などに使用します。
- グループバンド (グループ)
特定のフィールドや一定数のレコードでデータをグループ化します。データのグループ毎の集計などに使用します。
グループバンド (グループ)には、グループイントロバンド (グループヘッダー)とグループ要約バンド (グループフッター)があり、各グループのヘッダ部とフッタ部を印刷できます。詳細バンド (詳細)はグループ毎に印刷されます。ただし、 dBASE IVの場合、グループバンドを使用するときにデータがそのフィールドでインデックス付けされていないと、きちんとグループ分けされない場合があります。
図3 レポート印刷例
トップ >
社内教育 >
AES > データベース