第2回:サンプルのデータベースの利用

■ 用語解説
データベース : データを集積したもの

データベースマネージメントシステム(DBMS) : データベースにデータの追加・更新・削除・集計・検索などの機能を加えたもの

リレーショナルデータベース(RDBMS) : データベースの種類の一種。 データを 表 に格納し、 表と表のリレーション(関係)で データベースの概念(モデル)を表現する。

テーブル : 表 のこと

リレーションシップ : 表と表の 関係 のこと。 例) 履修者名簿の学籍番号 と 学籍簿の学籍番号は 多対一に対応する関係を持つなど。

レコード : テーブルに格納された データ の一組のこと。 タプル とも呼ぶ

クエリ : データベースに対する 問い合わせ のこと。 SQLという言語で問い合わせを行う。 クエリを作成して 検索・集計・分類・整理などを行うことができる


テーブルとリレーションシップの例)


■表の正規化(分割)について

Accessで用いる表は、フィールドという表の列の項目名と、レコードというデータ自体から出来ています。
フィールド名は、Excelの様にセルに入力するのではなく、テーブルのデザインという操作で行います。
また、一般にレコードは、新規レコードを作製して表の最下部に追記するか、データ入力用のフォームを用いて記録します。

AccessなどのRDBMSで使用する表は、正規化というルールにそって設計されています。
正規化の為の主なルール:

 ・第1正規形: 表の一つのマスには、データを1つだけ記録する。

正規形で無い例) 以下の表では、趣味の欄で、無駄な空白や、記録できる個数の制限などの不都合が生じる

名前 趣味の欄
趣味1 趣味2 趣味3
A
B

正規化した例) たとえ、同じ項目を繰り返し記述することになっても、第1正規形のルールを守る必要がある

名前 趣味の欄
A
A
A
B
B

 ・第2正規形: 主キー(表の中のレコードで、あるレコードを特定するのに必要な幾つかの項目の組み合わせ)の
一部の項目だけを指定するだけで、判明するようなデータがあってはならない。
 逆に言うと、表のデータを求めるには、検索用のある項目全てを指定する必要がある。
また、幾つかの項目を組み合わせたキーを連結キーと呼ぶ。

第2正規形で無い例)

以下の表では、(注文番号,商品)の組み合わせを主キー(連結キー)として利用するものとする。
そのとき、この表には、主キーに含まれる項目の一部だけを見れば、自動的に値の決まる主キーでない項目が存在する。例えば、

 商品の単価は、商品名から決まる
 注文主は、注文番号を見れば決まる

このような、項目が存在するときは、第2正規形ではない。

注文番号 注文主 届け先 商品 単価 個数 合計金額
A AA 10 20
A AA 20 20
B BB 15 30

正規化した例) 表を分割する

注文番号 注文主 届け先
A AA
B BB
商品 単価
10
20
15
注文番号 商品 個数

合計金額は、単価*個数 で求まる。 この様に計算可能な項目は取り除く。

 ・第3正規形: 主キー以外の項目から間接的に判明する項目は別の表にする

上のテーブル(注文番号・注文主・届け先)について、注文主の住所録が利用できるなら、届け先をこのテーブルに記載せずに、以下のように分割できる。

注文番号 注文主
A
B
注文主 届け先
A AA
B BB
商品 単価
10
20
15
注文番号 商品 個数

※注: 上記の正規化のルールに従ってレコードを記録する場合、 主キーの欄には同じデータを重複して登録できないことに注意する。 逆に言えば、 データの重複が発生しないような、確実にあるデータとあるデータの区別が可能になるような項目が主キーとなりる。 また、正規化された表には必ず主キーが存在する。


■ 正規化のメリット

無駄にレコードを重複登録することなく、効率的にデータを記録できる。
レコードの追加・更新・削除に際して、矛盾無く、かつ確実に行える。


■ Accessの起動について

演習室では、RDBMSの一種である Microsoft社製のAccess というソフトが利用できます。

通常、MS-Access はスタートメニュから以下のようにして起動します。

・起動後に現れた画面は、  新規のデータベースを作成(デザイン)  する画面です。
・Accessを使って、 データベースを利用するだけでなく 、 データベースを作成することができます。
・この講義では、 次回以降、データベースの設計技法について演習を行っていきます。
・今回は、このままAccessを閉じて終了してください。


■ サンプルデータベース NorthWind Traders

ここではデータベースのサンプルとしてAccess に付属しているものを使用し、 会社の業務でのデータベースの利用方法について大まかに把握 することにします。

このページからサンプルのデータベースをダウンロードします。
ダウンロードできたら、パソコンに読み込んだデータベースから直接Accessを起動(ファイルをダブルクリック)して下さい。

手順

  1. レポートフォルダの 「データベース演習」を開く
  2. 「演習用ファイル」のフォルダを開く
  3. ”NorthwindOrg2003”を マイドキュメント など適当な場所へコピーする
  4. コピーした場所を開いて ”NorthwindOrg2003"をダプルクリックする
  5. MS-Access が起動したら、以下の操作演習に進む

■ 操作演習
・タイトルウインドウを閉じる
・メインスイッチボード → データベース ウィンドウの表示 で、
データベースを直接操作できる画面に移動する
・データベースの機能主な機能を確認する

テーブル 業務に必用なデータを 表 に格納してある
いくつか適当に開いて中身を見ておくこと


フォーム テーブルのデータをウインドウで1件つづ表示したり、入力・訂正を行うための画面が作成してある
いくつか適当に開いて中身を見ておくこと


クエリ テーブルのデータを集計したり、複数のテーブルを結合して1つの表にまとめたり、条件を指定してデータを検索するための 問い合わせ機能 が作成してある
クエリを適当に実行して、 実行結果は テーブル の形で表示されることを確認する。
※(入力)テーブル→クエリで処理→(出力)テーブル →更に別のクエリで処理→ ・・・・ということが実現可能。

・データの整理の例) テーブル「商品」を整理 クエリ「五十音順商品リスト」、「カタログ」
・データ抽出の例) 「高額商品トップ10」を確認
・テーブルを組み合わせた例) 「受注クエリ」


レポート テーブルのデータや、クエリの処理結果などを 印刷用にレイアウト したもの
いくつか適当に開いて中身を見ておくこと


・次に進む前に、 開いたテーブル、クエリ、フォーム、レポート などは閉じておいて下さい
・データベースの構造を把握します。
「ツール」→「リレーションシップ」 で、
各テーブルの関係図(リレーションシップ)を表示
 ○ テーブル名 とテーブルのフィールド(記録項目)が一覧表示される
 ○ テーブルどうしは、線(リレーション)で結ばれたフィールドについて関係をもつ
 ○ リレーションに付けられた 1 や ∞ の記号の意味:
    1: こちらのテーブルには同じデータは1個だけ存在する(記録できる)
    ∞: こちらのテーブルには同じデータは複数個存在してよい(記録できる)

・リレーションを確認したら、閉じてよい
・テーブル → 得意先 を開き
大学のデータを追加する。 テーブルに記録するデータ1件を レコード と呼ぶ。 レコード表示部分に注意すること

※ テーブルの一番下に以下のように追加せよ。
※ 得意先コードの(オートナンバー) の部分は自動的に入力されるので、記録しなくてよい
※ フリガナ は、対応する部分(得意先名)などに漢字で入力すると自動的に入力される
(変換ミスなどで問題が発生したら、直接記入する)

※ レコードは、 次に新しくレコードを追加する もしくは テーブルを閉じる とデータベースに記録される
・テーブルを閉じる
・フォーム → 得意先 を開く
・レコードを進めて() 先ほどテーブルに記録したレコードが表示されることを確認
・フォーム → 社員 で、自分のデータを新規に登録する
レコードを新規に登録するには、 レコード表示の を押して、空のデータフォームにデータを入力すること

社員コードは、「401」、氏名は、「自分の氏名」
その他のデータは、適当に入力してみよ。
 (日付の入力書式指定(年/月/日)に注意)
テーブルのウィンドウを閉じるデータが記録されます。
メモ:(レコードの追加と削除)
 レコードを選択して右クリック、または、「編集」メニューからも、レコードの追加・削除が可能
・社員と同様にして、 フォーム → 商品 で、新規に 商品データを追加してください。
レコード表示の を押して、空のデータフォームにデータを入力する
商品コードは、「125」を指定
その他のデータは適当に入力
・受注 を記録します(フォーム)。
追加したデータ  社員・得意先・商品 を使って、以下のような 受注 を記録してください。
※まず、受注コード(4001) を最初に入力してください。
※出荷先、運送区分、各種日付などの項目を全て入力してください。
・受注フォームの 納品書の印刷ボタン で納品書を印刷します
※印刷がエラーになる場合は、
 受注フォームを閉じる→ 受注フォームを開く→ 自分の記録した受注レコードまで進む→ 印刷
の手順で試してみてください。

※印刷した納品書に、学籍番号を記入して 提出してください。
・時間が余ったら、 サンプルデータベースの他の機能を自由に確認してください。

※ クエリを作成するためにどのような SQL がプログラムされているか確認
 クエリ → デザイン → 表示 → SQLビュー
・質問が無ければ、納品書を提出した人から演習は終了です。

操作が終わったら、データベースを閉じて下さい。