step02 テーブルとクエリ
MS Office Suitという一連のアプリの中で、WordやExcelに比べてAccessの影が薄いのも、データベースには文書という目に見える形がないために、取っ付きづらさを感じるからではないだろうか。
Accessのデータベースは、データベース・ファイルという1つのファイルに格納されているのはWord文書やExcel文書と同じだが、内容はさまざまな種類のデータベース・オブジェクト※1の集合体である。
- テーブル(表)
- まずはExcelのワークシートのようなものをイメージすればよい。実際のデータを格納するためのオブジェクト
- クエリ(問合せ)
- 1つ以上のテーブルを自在に組み合わせ、結果をやはりテーブルの形式(ダイナセット)として表示するためのオブジェクト。
- フォーム
- 画面上のユーザインタフェース(UI)。テーブルにデータを格納したり、クエリの結果を表示するためのオブジェクト。
- レポート
- 紙上のユーザインタフェース。明細書や一覧表などの帳票を印刷したもの。
1 step01で解説したオブジェクト・データベースとは関係ない。
テーブル設計
データベースは、一般に図2-1に示す手順で設計する。図中の青い矢印は、後の工程への影響を表している。要するに、先の工程(上流)できちんと設計して、必要なものを作り込んでおけば、後の工程(下流)で余分な作業が発生しなくて楽だということ。もちろん、設計を進めていって、不具合が生じたら、上流工程に戻って修正する。

1番の基本となるのが、最初の工程であるテーブル設計である。ここは現実世界(の一部)をテーブルという、人工的な枠組みになんとか押し込んで表現するということだから、日頃からデータ構造についての眼を養っておく必要がある。たとえば広辞苑や、カツカレーや、自転車にもデータ構造はあるし、熟練したプロは、化学プラントや高速道路のジャンクションといった複雑なものも、テーブルの集合として表現できるようになる。
この講座では、続くstep03とstep04で、それぞれ1つのテーブルの設計と、リレーション(関連)で結ばれた複数のテーブルの設計を実習し、テーブルをいくつも組み合わせることで、どのように複雑な内容でも表現できることを体感してもらう。
クエリ設計については、指定の教科書を用いて、step05の一部として習得してもらう。
テーブル設計は、ふつう、以下の手順で行う。
- テーブルの構成(数と種類)を決める。
- テーブル設計をする。以下、テーブル毎に、
- フィールドの構成(数と種類)を決める。
- フィールド毎のデータ型(文字列、整数、日付・時刻など)、サイズ、定型入力、インデックスなどのフィールドプロパティ(属性)を決める。
- 主キーとなるフィールドを決める。
- テーブル間のリレーションシップ(関連)を設定する。
- テーブルにデータを入力する。
- 問題があれば、テーブル構成やフィールド構成を修正する。最近のDBMSでは、フィールド構成を変更しても入力済みのデータが失われない※2ので、安心して作業できる。
2 最近の学生さんは、これを当然のことと思っている。私自身の労苦とくらべると、腹立たしいやらうらやましいやらである。
クエリとは
クエリ設計については、前述のように教科書を用いた実習で習得してもらうので、ここではクエリの概念についてだけ解説する。クエリというものがイメージできるようになったら、リレーショナル・データベースについては概ね理解できたと思ってよい。
クエリは日本語で問合せの訳語を充てる。この語が持つ検索の機能も確かに一部ではあるが、クエリ自体は、図2-2に示すように、それよりはるかに広い機能を持っている。
- 選択(図中の青い絵)
- テーブルのいくつかのフィールドを選んで、それだけからなる小さなテーブルを作る。この絵は1つのテーブルについてのイメージだが、複数のテーブルを結合して、そこから選択することもできる。
例:学生名簿から、氏名と電話番号だけの表を作る。 - 抽出(図中の赤い絵)
- テーブルの各レコードを抽出条件でテストし、条件に合致するレコードだけからなる小さなテーブルを作る。 例:著者名が「森見登美彦」である本のデータを表示する。
なぜ、クエリという一つの仕組みで、このようにさまざまな機能を持てるのかといえば、実はクエリは、テーブル(表)を自由に組み合わせた、表の数式(演算)として実現されているからである。この考え方を図2-3A/Bに示す。


図のAは、たとえば3 + 5 = 8と同様であり、Bは、たとえば(3 + 5) * 4 = 32と同様だと考えればよい。これらの四則演算式の定義域と地域が整数なのに対し、テーブルの演算ではテーブルであるというだけの違いだ。これがコッドによって発明された、リレーショナル・データベースの基本構想である。
その結果、リレーショナル・データベースにおいては、テーブルとクエリの見分けがつかなくなる事態が起こる。クエリの結果をダイナセットと呼んでテーブルと区別するが、唯一の違いは、ダイナセットは数学的操作の結果表示に過ぎないのに対し、テーブルは現実のデータを格納している点である。