step07 課題レポート:自由テーマによるDB構築Ⅰ
これまでの講義によって、みなさんはそれぞれのデータベースオブジェクト(テーブル、クエリ、フォーム、レポート)の設計、そしてデータベース全体の設計ができるようになったはずだ。
そこで、興味のある分野の情報を集めた、自由なテーマのデータベースを作成してみよう。関心が持てるテーマなら勉強でも、将来目指す仕事でも、趣味でも、なんでもよい。できればこの課題のためだけではなく、将来も使い続けられるデータベースを構築してほしい。
要求仕様
提出するデータベースに要求される項目は以下の通りである。
- 2つ以上のテーブルを含むデータベースであること。複数テーブルとリレーションシップを要求するようなテーマは自ずと限定されるので、テーマは慎重に選ぶ必要がある。
- 1つめのテーブル(メインテーブル)は、 50~100レコードを格納していること。
- ネット上などからデータを集めてExcelのワークシートとしてまとめておくと、Accessのテーブルにインポートできるので、後の作業が楽になる。
- 2つめ以降のテーブル(サブテーブル)は、メインテーブルほどのレコード数でなくてよい。メインテーブル中で重複が多いフィールド値に着目して、くくり出せばよい。 しかし、IDと名前だけのサブテーブルでは、何かをenumコード化しただけなので見映えがしない。3つ、4つと追加のフィールドを増やす努力をすること。
- 2つ以上のクエリを含むこと。
- 元々1つの一覧表を分けたのだから、元の形で一覧するための一覧クエリは必須である。
- あとは抽出(パラメータークエリ)、演算、選択など、自由に考えてかまわない。
- 2つというのは上限ではなく下限なので、クエリはいくつ作ってもかまわない。
- 2つ以上のフォームを含むこと。
- メインテーブルのためのエントリーフォームは必須である。
- あとはクエリと同様、自由に考えてかまわない。しかし課題のヒントの項目で解説するメイン/サブフォームは見栄えがするので、ぜひ挑戦してほしい。
課題のヒント
メインテーブルからサブテーブルをくくり出す手順
これははやや複雑であり、教科書で解説されていないアクションクエリを使うと便利であるから、以下に手順をまとめておく。
- メインテーブルで、値に重複の多い列を見つける。
- テーブル作成用の仮のクエリ1で、その列の重複のない一覧表を作成する。
- フィールドを選択して集計行を表示し、グループ化する。
- クエリを実行して結果を確認したらテーブル作成クエリに変更し、1回だけ実行すると、サブテーブルができる。
- サブテーブルにIDと主キーを追加する。追加後にIDのデータ型を、オートナンバー型から数値型(長整数型)に変更する。これはテーブル作成用の仮のクエリを作る時の準備である。
- メインテーブルからサブテーブルのIDを参照するよう変更する。
- 対応するフィールド(IDではなく、同じ値を格納しているフィールド同士)に1対1のリレーションシップを張る。
- テーブル作成用の仮のクエリ2を作る。そのフィールドにはメインテーブルとサブテーブルのすべてのフィールドが含まれる。つまり、以下の3つ組が含まれることになる。
- メインテーブルのフィールド値
- サブテーブルのフィールド値
- サブテーブルのID
- クエリを実行して結果を確認したらテーブル作成クエリに変更し、1回だけ実行すると、新しいメインテーブルができる。
- 以上の3つ組の中のフィールド値の対応を確認し(同じ値が入っているはずだ)、IDのみを残して削除する。
- 最初のメインテーブルを削除し、新規のメインテーブルに差し替える。
メイン/サブフォームの作成手順
このフォームは、セミナーテキスト【基礎】の教科書では解説されていないので、以下に手順をまとめておく。- 1対多のリレーションシップで結ばれている2つのテーブルのうち、1側のテーブルを選択する。
- フォームウィザードを実行し、選択クエリを選び、「次へ」を押す。
- 1側テーブルのいくつかのフィールドをフォームに含めるものとして選択する。
- 続けて多側テーブルのいくつかのフィールドを追加で選択し、「次へ」を押す。
- データの表示方法のダイアログで、サブフォームがあるフォームのオプションボタンが選択されているのを確認する。右側に、メイン/サブフォームのプレビューが表示されているのを確認して、「次へ」を押す。
- サブフォームのレイアウトとして表形式を選択し、「次へ」を押す。
- フォームとサブフォームの名前(F○○/F○○サブなど)を指定して、「完了」を押す。
- メイン/サブフォームを使用してみて、必要ならデザインビューで修正する。