x7.Accessによるデータベースの作成(2/2)
2015年度は、Accessの演習は見送る。
同様の内容を、XAMPPで実施する。
第7週 Accessによるデータベースの制作 中間制作としてデータベースの設計を行う
キーワード: 3層スキーマ 内部設計 外部設計
演習内容は先週の続きである。
中間制作の評価について
ここまでで学んだ概念をもとに、
・各自で個別にデータベースを利用したシステムの企画をする。
・データベースを MS-Access で制作する。
提出物:
・企画書( Wordファイル 前回の課題)
・データベース( Accessのファイル 今回の課題)
単位認定について: 評価点の 20% として採点する。
この課題が未提出となる場合、 今後続けてデータベースを受講することは お勧めしません。
- 設計演習1(先回)
- 課題1 <要件定義> 概念スキーマの設計
- 基本的な仕様を決める。
- 要求分析: 自分が作成するデータベースに必要な機能を見つけ出し、確認する。
- データベースで業務のどの部分を処理するか決める。
- データベースの利用目的と、利用方法・状況の確認。
- 要件定義: どのような情報を、どのような形式でデータベースに格納し、どのようにデータベースから取り出す必要があるかを
- <書面> にまとめる。
- 課題2 <内部設計> 内部スキーマの設計
- ・プロトタイプのテーブル設計(テーブルのデータ定義域(ドメインと正規化)
- ・テーブルのリレーション設定(等結合・内部結合・外部結合)
- 設計演習2(今回)
- 課題3<外部設計> 外部スキーマの設計
- ・プロトタイプのクエリー設計(検索・集計機能の実装)
- ・何件か動作確認用データを入力
- ・レコード入用・表示用フォームの設計
- ・レコード印刷用レポートの設計
本日の演習内容:
設計演習2
前回の設計演習1で作成したデータベースの要件定義に従いデータベースのプロトタイプを完成しテストを行う。
前回でデータベースの概念スキーマ(テーブル・テーブルのリレーション)と外部スキーマ(クエリー)は設計済みである。
今回はデータベースの外部設計を行い、データベースにデータ入出力インターフェイス(入出力フォーム)を準備する。
<外部設計>
・レコード入用・表示用フォームの設計
・レコード印刷用レポートの設計
<テスト>
データベースを試験的に利用してみる。
・何件か試験用データを入力
試験用データは自分で適当に準備すること。
試験用データについて:
テーブルに入力するデータ件数は、データベースの動作を確認できる程度でよい。
例えば、テレビ番組表 のようなデータベースを作成している場合、実際に放映されているデータを利用してもよいが、全テレビ局の全放映予定を入れておく必要は無い。各局、数件程度入力しておく。
ジャンル分け用のテーブルには、要件に従い、全ジャンルを入力しておくことになる。
要件に集計機能がある場合は、集計結果を見て、何が表示されているか確認できる程度のレコードを入力しておくこと。
(ジャンル別のランキングなど)
例題:
レコード入用・表示用フォームの設計
以下の様に、テーブルのフィールドの設定を行うことで、テーブルに記録するデータの値の制限や、
データ入力フォームを作成する場合に、ブルダウンメニューを利用した値選択などが出来るようになる。
設定項目
- 入力規則・ルックアップの設定
- テーブルのフィールドに入力規則とルックアップを設定する。
- 設定した効果は、手順4.のフォームの作成に影響する。
- テーブルのデザイン変更画面から、
- ■
- 科目テーブル
- 効果
- 3単位などの、許可されない値の入力を防止する。
- 単位数
- メニューから値を選択できるようになる
- ■
- 履修テーブル
- 効果
- 値集合ソースを、他のテーブルに指定し、
- そのテーブルのフィールドの位置を連結列(先頭が1)の番号で指定することで、
- そのテーブルに入力された値をメニューから選択して、入力可能になる。
- 例)
- 履修テーブルに記載する、学籍番号を、学生テーブルの先頭フィールド「学籍番号」を
- 連結列を1に指定することで、参照すする。
- 左の設定の例で、「列数」が、「3」となっている。
- 列数は、選択メニューで表示される項目数のこと。
- 例)
- 3列表示: 講義番号の選択メニューに3列分(講義番号・担当者名・科目名)を表示
- 学籍番号
- 講義番号
- 成績
- フォーム・レポート表示用クエリを作成する。
- ■クエリの新規作成:
- クエリは、データベースに対する 問い合わせ 機能。クエリにより、
- テーブルの結合表示
- テーブルの表示フィールドの指定
- レコードの条件指定表示
- レコードの表示順序指定
- グループ化
- 集計
- のデータベース操作が可能。作成したクエリは、名前をつけて保存しておき、再利用することが出来る。
- ○デザインビューで新規作成
- クエリ名「履修データ一覧」で保存する。
- (参考)リレーションの向きに注意すること!
- <<矢印の向きの考え方>>
- テーブルA テーブルB
- フィールドX → フィールドX
- の向きにリレーションを設定すると、
- 「AのXについて関連する情報は、BでXを調べると分かる」
- 状態になる。
- (参考)作成したクエリを、SQLビューに表示を切り替えると、以下のようなSQLプログラムが生成されていることが確認できる。
- SELECT [履修テーブル].[学籍番号], [学生テーブル].[名前], [履修テーブル].[講義番号], [科目テーブル].[科目名], [科目テーブル].[単位数], [時間割テーブル].[担当者名], [履修テーブル].[成績]
- FROM ((学生テーブル LEFT JOIN 履修テーブル ON [学生テーブル].[学籍番号]=[履修テーブル].[学籍番号]) LEFT JOIN 時間割テーブル ON [時間割テーブル].[講義番号]=[履修テーブル].[講義番号]) LEFT JOIN 科目テーブル ON [科目テーブル].[科目名]=[時間割テーブル].[科目名];
- より複雑なSQLが必要な場合は、デザインビューではなく、SQLを直接作成する。SQLの文法・機能については次回から解説する。
- フォームの作成
- ここで、最初にテーブルに設定した、ルックアップや入力規則に従い、メニューが作成される。
- ■「ウィザードを使用してレポートを作成する」をダブルクリックする
- 「完了」を押す。
- 印刷レポートの作成■「ウィザードを使用してレポートを作成する」をダブルクリックする。
- ・テーブル/クエリ で、履修データ一覧 を選ぶ
- ・「>>」ボタンで全てのフィールドを選択する
- ・データの表示方法を指定する。
- ・「>」ボタンで、グループ化のレベルを指定する。
- 「次へ」で進んで行き、「完了」まで進む
- サブフォームの設定(省略可)
- 学生1名ごとの履修科目を表示したり、注文1件ごとの商品のリストの入力や表示が必要な場合は、サブフォームを利用する。
- 以下の様な手順で、フォーム内で別のフォームを組み込み、データの入力や表示が可能になる。
- ■ サブフォーム付きのフォームを作成する。
- 「ウィザードを使用してレポートを作成する」をダブルクリックする
- 「完了」を押す。
- フォームの「学生テーブル」フォームを選び(マウスで選択)、「デザイン」ボタンを押す。
- ウィンドウのサイズと、フォームの境界付近をマウスでドラッグし、サイズを広げる。
- ツールボックスを表示する。
- サブフォームボタンで、サブフォームの領域を設定する。
- ・既存のテーブルまたはクエリを使用する を選ぶ
- ・テーブル/クエリで 履修データ一覧 を選び、以下の様にフィールドを選択する
- ・そのまま完了へ進む
- ■フォームのデザイン画面で、以下の様に サブフォームの大きさを調整する。
- ■フォームのデザイン画面を閉じて保存する
動作テスト
クエリ・フォーム・レポートなどの動作を確認する。
応用課題:
中間課題データベースに、以下の様な機能を設定してみてください。
・フォームまたはレポート用のクエリを定義する。
・データ入出力フォームとレコード印刷用レポートを作成する。
・テーブルの各フィールドのデータ入力規則を定め、データベースに設定する。
(ヒント) 旧資料
提出するファイルをレポートフォルダに提出:
ファイル名は
Accessファイル「学籍番号(中間課題)」
Wordファイル「学籍番号(要件定義)」 ←こちらは、要件に変更があった場合に修正して提出する。
講義中にデータベースが仕上がらなかった人は 来週までの宿題とします。