x6.Accessによるデータベースの作成(1/2)

2015年度は、Accessの演習は見送る。

同様の内容を、XAMPPで実施する。

履修者名簿の確認:

履修中止期間が終了しました。

受講生各自で履修登録に間違いが無いか、学生ポータルの個人時間割を確認してください。

第6週 Accessによるデータベースの制作 中間制作としてデータベースの設計を行う

キーワード: ERモデル ドメイン

旧資料 ←こちらのMS-Accessの演習部分を実施予定。 SQLは導入せずに、クエリビルダを利用して表の結合・検索などを実装する。

中間制作の評価について

ここまでで学んだ概念をもとに、

・各自で個別にデータベースを利用したシステムの企画をする。

・データベースを MS-Access で制作する。

提出物:

・企画書( Wordファイル 今回の課題)

・データベース( Accessのファイル 次回の課題)

単位認定について: 評価点の 20% として採点する。

この課題が未提出となる場合、 今後続けてデータベースを受講することは お勧めしません

開発モデルについて:

ソフトウェアの開発手法には様々なモデルがあるが、今回は プロトタイピング という手法で開発を行う。

プロトタイプとは試作品のことで、プロトタイピングモデルでは、早期にユーザに動作可能な開発システム(試作品)を確認してもらい、システムの要件の不足を早い段階で把握する。これにより大きなコストを要する開発終盤での設計変更を避けることができる。

(ちなみに、他の開発モデルとしてはウォーターフォールモデルやスパイラルモデル、アジャイルソフトウェア開発などがある。システム開発系の関連の講義参照。)

プロトタイピングによるシステムの開発工程:

    1. 要件定義: 開発するシステムに必用な要件(機能)を決める。
    2. 要件を、文章や図にまとめて残しておく。
    3. システム設計: システム開発に必要な事項を決める。
    4. データベースの設計では、テーブルの設計とリレーション図の作成を行う。
    5. 開発: 第1段階の開発目標として、システムのプロトタイプ(試作品)を設計する。
    6. プロトタイプには、開発システムの必要最小限の機能を実装する。
    7. レビュー: プロトタイプの動作テスト(試験運用)。
    8. 実際にデータベースを使用するユーザに利用してもらい、プロトタイプに追加・変更の必要な点を見つける。
    9. フィードバック: 4.に基づきプロトタイプを改良。
    10. 以後、十分な結果が得られるまで 1.-4.を繰り返す。
    11. 繰り返しにより、開発システムを成熟させ完成に近づけて行く(問題点・不具合などを減らす)。

今回と次回の講義の流れ(2回分の内容)

データベースシステムのプロトタイプを作成する。(評価とフィードバックのフェーズは省略)

    1. 設計演習1(今回)
    2. 課題1 <要件定義> 概念スキーマの設計
    3. 基本的な仕様を決める。
      1. 要求分析: 自分が作成するデータベースに必要な機能を見つけ出し、確認する。
      2. データベースで業務のどの部分を処理するか決める。
      3. データベースの利用目的と、利用方法・状況の確認。
      4. 要件定義: どのような情報を、どのような形式でデータベースに格納し、どのようにデータベースから取り出す必要があるかを
      5. <書面> にまとめる。
      6. 課題2 <内部設計> 内部スキーマの設計
      7. ・プロトタイプのテーブル設計(テーブルのデータ定義域(ドメインと正規化)
      8. ・テーブルのリレーション設定(等結合・内部結合・外部結合)
    4. 設計演習2(次回)
      1. 課題3<外部設計> 外部スキーマの設計
      2. ・プロトタイプのクエリー設計(検索・集計機能の実装)
      3. ・何件か動作確認用データを入力
      4. ・レコード入用・表示用フォームの設計
      5. ・レコード印刷用レポートの設計

本日の演習内容:

設計演習1

例題 「科目履修データベース」 の開発手順を参考に、各自で

■ 要件定義書 (ワープロで作成)

■ 内部設計1 (Access でテーブルと、リレーションを作成)

について作業を行う。

■課題1 要件定義書の作成

<要件分析>

自分が企画するデータベースの「開発システム名」・「利用者」・「要件定義」についてワープロなるべく具体的に書いておく。

タイトルはキャッチフレーズのような言葉遊び的な意味不明のものは用いないこと。出来るだけ作成対象が具体的にイメージ出来るようにしておく。

コツとしては、(固有)名詞をいくつかタイトルに混ぜてみると具体的になる。

例) 名古屋文理大学|学生用駐車場|予約システム

システムの名称が具体性であれば、どんな記録を取ればよいかの見当がついて、

システムの要件も具体的に見えてくる筈である。

この例では、 記録するのは「誰が、いつ駐車場を利用したいのか」を記録し、「駐車場の空きを確認」、「予約状況の表示」などがデータベースの処理として必要なことがイメージできる。

ファイル名は「学籍番号(要件定義)」としてレポートフォルダに提出する。

例題: 要件定義の例

以下の形式を参考に、ワープロで要件定義を書いて提出する。

<要件定義>

開発システム名: 名古屋文理大学履修登録データベース

利用者: 名古屋文理大学教学課職員

要件:

○概要

学生の科目の履修と成績をデータベースで管理したい。

多数の受講生が複数の科目を履修する。

その際、

科目履修では、既修得科目の重複登録など履修不能科目が登録されない様にしたい。

科目の履修には、学籍番号と、時間割表に記載の科目番号を用いる。

履修した科目について、成績の管理を行い、取得単位数の合計が分かるようにしたい。

学生の単位取得状況について、カリキュラムごとの平均取得単位を求めたい。

○入力項目と出力項目について

履修登録に必要な入力項目と、利用者別の出力項目は以下とする。

<入力項目>

学生データ

学籍番号 (7桁数字)

名前 (全角文字10文字まで 苗字と名前は分けずに入力)

科目データ

科目名 (文字で入力)

単位数 (数値で入力)

時間割データ

講義番号 (講義番号はデータベース側で自動設定)

担当者 (文字で入力)

科目名 (科目データの値を使用)

履修データ

学籍番号 (学生データの値を使用)

講義番号 (時間割データの値を使用)

成績 (優・良・可・不可 で入力)

<出力項目>

担当者別科目履修者表

(講義番号ごとにまとめて表示)

講義番号

担当者

科目名

学籍番号

名前

学生別履修科目表

(学籍番号ごとにまとめて表示)

学籍番号

名前

科目名

単位数

成績

学生別取得単位数合計表

学籍番号

名前

取得単位合計

○データ管理上の留意点など

・学生データや科目データの重複登録は出来ないようにする

・1人の学生が同じ講義番号の科目を重複して履修登録できないようにする(再履修は別の講義番号の同一科目名の科目を履修することで記録)

・履修データで単位取得済みの科目を履修できないようにする

・データ入力画面では、なるべく入力の省力化を計る(キーボードからの入力を減らし、メニュー選択方式を利用する)

・成績表を印刷する際には、ディスプレイのコピーではなく印刷専用のレイアウトで印刷すること

■課題2 データベースの設計

<内部設計>

上記の例題について、データベースをAccessで作成する際の、内部設計部分について例を示す。

Accessを起動→新しいデータベースを作成→空のデータベース→

保存場所「ユーザホーム(マイドキュメント)」→ファイル名「学籍番号(試作品)」

テーブルの設計

テーブル新規作成→デザインビュー

(テーブル名は、フィールドの設計終了後、テーブルを閉じるときに入力できる)

テーブル名

学生テーブル

科目テーブル

時間割テーブル

履修テーブル

フィールド名と(データ型)データ型の詳細については各自で決定

■学籍番号(数値型・ フィールドサイズ:長整数型)

■名前(テキスト型)

例)学籍番号は以下の様に設定する

フィールドサイズ: 長整数型

値要求: はい

インデックス: はい(重複なし)

主キー

学籍番号

科目名

講義番号

学籍番号・講義番号

■科目名(テキスト型)

■単位数(数値型)

■講義番号(オートナンバー型)

■担当者名(テキスト型)

■科目名(テキスト型)

■学籍番号(数値型)

■講義番号(数値型)

■成績(テキスト型)

例)

Accessのデータ型について:

ヘルプ→Microsoft Accessヘルプ→キーワード→データ

で、内容をよく確認しておくこと。

例)上記テーブルでは以下を使用した。

テーブルのリレーション設定(内部結合・外部結合)

ツール→リレーションシップ→(各テーブルを追加)

ドラッグ&ドロップでリレーションを設定。結合の向きを指定すること。

リレーションの向きについて:

リレーションの向きに注意すること!

<<矢印の向きの考え方>>

テーブルA テーブルB

フィールドX → フィールドX

の向きにリレーションを設定すると、

「AのXについて関連する情報は、BでXを調べると分かる」

状態になる。

□レコードの対応関係から考える

一対多」 を 「A→B」 で表現する。 上の例では、

■科目テーブルの科目名「データベース演習1つに対して時間割テーブルの科目名は複数の担当者や開講曜日があり得るので、「科目→時間割」となる。

■時間割テーブルの講義番号1つに対して、複数の学生が履修しえるので、「時間割→履修」となる。

■学生テーブルの学籍番号1つに対して、複数の科目を履修しえるので、「学生→履修」となる。

課題2:(講義中に仕上がらない場合は宿題とする。次回は続きの作業を行う)

データベースを企画するにあたって、何を記録し、どう利用(表示や集計方法)するかを考えよう。

また、どんなデータベースを造ればよいのかさっぱりイメージできない人は、 まずは上記の例題のまねをしてみて、次に、自分の企画にアレンジしてみてはどうだろうか?

ただし、 中間課題の目標は 自分で企画したデータベースを作成 である。

<内部設計>

自分が企画したデータベースについて、Access でデータベースのテーブル(複数)、リレーションを作成する。

ファイル名は「学籍番号(試作品)」としてレポートフォルダに提出する。

次回予告:

第7週 Accessによるデータベースの制作 中間制作としてデータベースの実装を行う 3層スキーマ 内部設計 外部設計

旧資料 ←こちらの内容になる予定

旧資料 ←応用課題