法政大学国際文化学部
情報システム概論
担当 重定 如彦
2003年12月22日
第11回 データベース(その2)
1. ルックアップウィザード その1
データベースのフィールドのデータ型で「ルックアップウィザード」を指定することで、フィールド内のデータをメニューから選んで入力することができるようにすることができます。まず、先週作成した
student.mdb を開いて下さい。データベースウィンドウが表示され、その中のテーブルの右の項目に、「生徒表」というアイコンが表示されるので、それをダブルクリックして先週作成した「生徒表」のテーブルのウィンドウを表示して下さい。次に、デザインビューを表示し、性別のデータ型のメニューから「ルックアップウィザード」を実行し、下図のようなパネルを表示して下さい。
次に、下の「表示する値をここで指定する」を選択して次へボタンをクリックして下さい。フィールド内に入れることが可能なデータの一覧を入力するパネルが表示されるので、下図のように「男」と「女」を入力し、次へボタンをクリックして下さい。最後にラベルを指定するパネルが表示されますが、ここはあらかじめ「性別」という文字列がテキストボックスに入っているはずなのでそのまま「完了」ボタンをクリックして下さい。
これで設定が完了したので、データを保存し、データシートビューを表示し、性別のフィールドをクリックしてみてください。フィールドの右にメニューを表示するための▼ボタンが表示され、それをクリックすると先ほど設定した「男」と「女」をメニューから選択することができるようになっているはずです。なお、ルックアップウィザードは先にデータの型を指定してから使用する必要がある点に注意して下さい。
2. 複数のテーブル
Accessでは、一つのデータベースに複数のテーブルを作成することが可能です。例えば先ほどのデータベースに、授業に関するデータを格納する為のテーブルを作成してみましょう。2つ目以降のテーブルの作成方法は、最初のテーブルの作成方法と全く同じです。データベースウィンドウを開き、「デザインビューでテーブルを作成する」ボタンをクリックして、以下のようなフィールドを作成して下さい。
また、上記のデータを入力後、以下の設定を行って下さい。
·
科目IDを主キーフィールドに設定する
·
ルックアップウィザードを使って以下のフィールドの項目を設定する
Ø
セメスター:「前期」、「後期」
Ø
曜日:「月」、「火」、「水」、「木」、「金」、「土」
Ø
時限:「1」、「2」、「3」、「4」、「5」、「6」、「7」
設定を行った後、保存を行い、テーブルの名前を「科目表」という名前にして下さい。次に、データシートビューを表示し、以下の図のようなテーブルを作成して下さい。
科目IDの部分は「データ型」を「オートナンバー型」に設定したので、手で入力しなくても勝手に数字が入力されます。先週の授業では説明しませんでしたが、「主キーフィールド」のデータは重複してはいけないという決まりがあります。「科目表」のテーブルのようにどのフィールドでも重複するデータが存在する場合は、このように「オートナンバー型」のフィールドを用意し、それを主キーフィールドに設定すると良いでしょう。
3. ルックアップウィザード その2(テーブルの連携)
テーブルのフィールドの中の項目を、他のテーブルの中のフィールドのデータの中から選択して入力することができます。これを行うにはルックアップウィザードを使用します。
まず、生徒表のウィンドウを開き(ウィンドウの場所がわからない場合はデータベースウィンドウの「生徒表」をダブルクリックして下さい)、デザインシートビューを表示し、以下の図のように「受講科目1」というフィールドを追加して下さい。
次に、受講科目のデータ型のメニューからルックアップウィザードを選択し、今度は「テーブルまたはクエリの値をルックアップ列に表示する」を選択して次へボタンをクリックし、以下の手順で設定を行って下さい。
·
どのテーブルのデータを使用するかを選択するパネルが表示されるので、「科目表」を選択し、次へボタンをクリックする。
·
どのフィールドのデータを使用するかを選択するパネルが表示されるので、左の「選択可能なフィールド」から「科目名」、「セメスター」、「曜日」、「時限」、「担当講師」を選択し、「>」ボタンをクリックして「選択したフィールド」に移動して下さい。
·
次へボタンをクリックすると、表示する列の幅を選択するパネルが表示されます。それぞれの列の右端でダブルクリックを行うと列幅が自動で調整されます。調整が終わったら、完了ボタンをクリックして下さい。
なお、受講科目1のデータ型が「数値型」になっているのは、参照したテーブル(科目表)の主キーレコードのデータ型を使わなければならないという決まりがあるためです。
これで設定は終了です。データシートビューを表示し、新しく作成した「受講科目1」の部分をクリックし、▼ボタンをクリックしてメニューを表示してみて下さい(下図)。
このように、データベースでは、複数のテーブルの中のデータをお互いに連携して利用することが可能です。この例では、選択したフィールドに複数の項目を設定することで、上記の図のように、メニューには複数のフィールドのデータが一覧で表示されます。このように設定した場合でも、メニューから選択した結果、「受講科目1」のフィールド内には一番左の項目しかデータが表示されない点に注意が必要です
4. クエリ その1
クエリとは、データベースのデータの中から特定のフィールドを抽出(ピックアップ)して作成した表のことです。データベースのテーブルには一般的に数多くのフィールドが設定されますが、データベースのデータを利用する際には必ずしも全てのフィールドのデータが必要なわけではありません。クエリを使うことで用途に応じて必要なデータだけを表示する表を作成することが可能です。
クエリを作成するには、データベースウィンドウの左で「クエリ」をクリックし、右の「デザインビューでクエリを作成する」をクリックして下さい。まず、下図のように、表示するデータが格納されたテーブルを選択するためのパネルが表示されます。
このパネルでテーブルを選択し、追加ボタンをクリックするとそのテーブルがクエリのデザインビューに追加されます。ここでは、「生徒表」を追加し、「閉じる」ボタンをクリックして下さい。下図のように、上部に生徒表のフィールド名の一覧が追加されます。
ウィンドウの下部は、クエリで表示するフィールドを編集する部分です。クエリで表示するフィールドを設定するには以下のいずれかの操作を行って下さい。
·
上部のテーブルのフィールド名の一覧を表示しているウィンドウから、クエリに追加したいフィールドを選択し、ダブルクリックする。
·
下部の「フィールド」及び「テーブル」をクリックし、表示するフィールドの名前と、そのフィールドを持つテーブルをメニューから選択する。
下部の残りの行は以下の意味を持ちます。
Ø
並べ替え:クエリの表示の順番を、そのフィールドのデータを使って並べ替えます。
Ø
表示:この部分のチェックをOFFにするとそのフィールドが表示されなくなります。
Ø
抽出条件:この部分に条件を設定することでその条件を満たすデータのみを抽出して表示することが可能です。記述の方法は、先週解説したフォームフィルタと同じです。
Ø
または:この部分に抽出条件を記述することで、抽出条件を複数設定することができます。「または」が示すとおり、いずれかの条件が満たされていれば表示が行われます。
クエリのデザインビューの設定が出来たら、テーブルの場合と同様に保存し、クエリの名前を付けて下さい。今回はそのまま「クエリ1」という名前で保存して下さい。クエリのデータを表示するには、テーブルの場合と同様にデータシートビューを表示すればOKです。下の図のように、設定したフィールドで、データが学年の昇順で並べ替えられたクエリが表示されるはずです。
次に、デザインシートビュー表示し、学年の抽出条件の部分に「<=2」を入力し、1、2年生だけをデータシートビューで表示するようにしてみて下さい(後で元に戻すこと)。
クエリはデータベース内の必要なデータだけを抽出して表示する為に使うのが一般的であり、テーブルと異なりデータを入力する為には通常使用しません。クエリを使ってテーブルにデータを入力することはやろうと思えば可能ですが、データベース内のデータの整合性がとれなくなってしまう可能性があるので慣れないうちは行わないほうが無難です。
5. クエリ その2 (リレーションシップ)
クエリで複数のテーブルのフィールドを関連付けて表示することが可能です。関連付けて表示を行うには、ルックアップウィザードを使ってそれらのテーブルのあるフィールドが、別のテーブルのあるフィールドと関係付けられている必要があります。この参照関係をリレーションシップと呼びます。先ほどのクエリのデザインシートビューを表示し、マウスの右ボタンをクリックし、メニューから「テーブルの表示」を選択して下さい。再び、テーブルの一覧を表示したパネルが表示されるので、「科目表」を追加し、ウィンドウを閉じて下さい。デザインシートビューの上部に図のように「科目表」のウィンドウが追加されます。この時ルックアップウィザードを使って参照を行った「生徒表の受講科目1」と「科目表の科目ID」が線で繋がって表示されますが、この線はリレーションシップを表す線です。科目表のフィールドをクエリに追加する方法は先ほどと同様です。図のように、科目表の「科目名」、「セメスター」、「曜日」、「時限」、「担当講師」のフィールドをクエリに追加しデータシートビューを表示して下さい
データシートビューは2つのテーブルの関連するフィールドを繋ぎ合わせた表になります(下図)。

注:この例では、「受講科目1」と「科目名」で同じ内容が重複して表示されますが、これは2つのテーブルのデータがちゃんと関連付けられて表示されることを表すためにそのようにしています。
6. クエリ その3 応用
クエリに同じテーブルをさらに追加し、別のリレーションシップを設定することが可能です。クエリのウィンドウを一旦閉じて、生徒表のデザインシートビューで「受講科目2」というフィールドを追加し、「受講科目1」と同様設定をルックアップウィザードで行って下さい。次に、データシートビューで以下のようにデータを設定して下さい。

次に、クエリ1のウィンドウを再び開き、デザインシートビューで、右ボタンをクリックし、「テーブルの表示」を選択し、科目表を一つ追加し、「閉じる」をクリックして下さい。すると、デザインシートビューの上部に2つ目の「科目表_1」というウィンドウが追加されるはずです。このウィンドウは生徒表と線で結ばれていないので、生徒表の受講科目の部分でマウスをドラッグし、「科目表_1」の「科目ID」の上でリリースして下さい。すると図のようにリレーションシップを表す線が結ばれるようになります。(注:リレーションシップを新しく設定する際には片側を主キーフィールドと結ぶ必要があります)

次に、「科目表_1」の「セメスター」、「曜日」、「時限」、「担当講師」をダブルクリックし、クエリのフィールドに追加し、データシートビューを表示して下さい。受講科目2に関する「セメスター」、「曜日」、「時限」、「担当講師」のデータがクエリの表に追加して表示されるようになります。
このように、同じテーブルを複数クエリに配置し、それぞれ異なったリレーションシップを設定することで、この例題のように、受講科目1、受講科目2のそれぞれのセメスターや曜日などのデータを独立して関連づけて表示する事ができるようになります。
7. 期末試験
期末試験は、試験期間中(1/21)に行います。試験期間は変更される可能性があるので、各自必ず掲示板で確認しておいて下さい。試験範囲は、授業で行った範囲で、持ち込みは不可とします。この授業は複数の教官が担当しているので、授業で説明しなかった部分が一部出題される可能性がありますが、その点は考慮する予定です。プリントだけでは不安な方は教科書のほうもざっと眺めておくと良いでしょう。
なお、残念ながら、毎年何人か試験で不正行為を行う人がいます。不正行為が発見された場合、すべての教科の単位を取り消するなどの重い処分が行われますので、くれぐれも不正行為は行わないで下さい。
出席のメールはta03i004@edu.i.hosei.ac.jpにお願いします。
質問のメールなどは、sigesada@edu.i.hosei.ac.jpまでお願いします。
授業の資料の最新版はhttp://www.edu.i.hosei.ac.jp/~sigesada/にあります。