■ 用語解説
データベース : データを集積したもの
データベースマネージメントシステム(DBMS) : データベースにデータの追加・更新・削除・集計・検索などの機能を加えたもの
リレーショナルデータベース(RDBMS) : データベースの種類の一種。 データを 表 に格納し、 表と表のリレーション(関係)で データベースの概念(モデル)を表現する。
テーブル : 表 のこと
リレーションシップ : 表と表の 関係 のこと。 例) 履修者名簿の学籍番号 と 学籍簿の学籍番号は 多対一に対応する関係を持つなど。
レコード : テーブルに格納された データ の一組のこと。 タプル とも呼ぶ
クエリ : データベースに対する 問い合わせ のこと。 SQLという言語で問い合わせを行う。 クエリを作成して 検索・集計・分類・整理などを行うことができる
テーブルとリレーションシップの例)
■表の正規化(分割)について
Accessで用いる表は、フィールドという表の列の項目名と、レコードというデータ自体から出来ています。
フィールド名は、Excelの様にセルに入力するのではなく、テーブルのデザインという操作で行います。
また、一般にレコードは、新規レコードを作製して表の最下部に追記するか、データ入力用のフォームを用いて記録します。
AccessなどのRDBMSで使用する表は、正規化というルールにそって設計されています。
正規化の為の主なルール:
・第1正規形: 表の一つのマスには、データを1つだけ記録する。
正規形で無い例) 以下の表では、趣味の欄で、無駄な空白や、記録できる個数の制限などの不都合が生じる
名前 | 趣味の欄 | ||
趣味1 | 趣味2 | 趣味3 | |
A | あ | い | う |
B | あ | い |
正規化した例) たとえ、同じ項目を繰り返し記述することになっても、第1正規形のルールを守る必要がある
名前 | 趣味の欄 | ||
A | あ | ||
A | い | ||
A | う | ||
B | あ | ||
B | い |
・第2正規形: 主キー(表の中のレコードで、あるレコードを特定するのに必要な幾つかの項目の組み合わせ)の
一部の項目だけを指定するだけで、判明するようなデータがあってはならない。
逆に言うと、表のデータを求めるには、検索用のある項目全てを指定する必要がある。
また、幾つかの項目を組み合わせたキーを連結キーと呼ぶ。
第2正規形で無い例)
以下の表では、(注文番号,商品)の組み合わせを主キー(連結キー)として利用するものとする。
そのとき、この表には、主キーに含まれる項目の一部だけを見れば、自動的に値の決まる主キーでない項目が存在する。例えば、
商品の単価は、商品名から決まる
注文主は、注文番号を見れば決まる
このような、項目が存在するときは、第2正規形ではない。
注文番号 | 注文主 | 届け先 | 商品 | 単価 | 個数 | 合計金額 |
1 | A | AA | あ | 10 | 2 | 20 |
1 | A | AA | い | 20 | 1 | 20 |
2 | B | BB | え | 15 | 2 | 30 |
正規化した例) 表を分割する
注文番号 | 注文主 | 届け先 |
1 | A | AA |
2 | B | BB |
商品 | 単価 |
あ | 10 |
い | 20 |
え | 15 |
注文番号 | 商品 | 個数 |
1 | あ | 2 |
1 | い | 1 |
2 | え | 2 |
合計金額は、単価*個数 で求まる。 この様に計算可能な項目は取り除く。
・第3正規形: 主キー以外の項目から間接的に判明する項目は別の表にする
上のテーブル(注文番号・注文主・届け先)について、注文主の住所録が利用できるなら、届け先をこのテーブルに記載せずに、以下のように分割できる。
注文番号 | 注文主 |
1 | A |
2 | B |
注文主 | 届け先 |
A | AA |
B | BB |
商品 | 単価 |
あ | 10 |
い | 20 |
え | 15 |
注文番号 | 商品 | 個数 |
1 | あ | 2 |
1 | い | 1 |
2 | え | 2 |
※注: 上記の正規化のルールに従ってレコードを記録する場合、 主キーの欄には同じデータを重複して登録できないことに注意する。 逆に言えば、 データの重複が発生しないような、確実にあるデータとあるデータの区別が可能になるような項目が主キーとなりる。 また、正規化された表には必ず主キーが存在する。
■ 正規化のメリット
無駄にレコードを重複登録することなく、効率的にデータを記録できる。
レコードの追加・更新・削除に際して、矛盾無く、かつ確実に行える。
■ Accessの起動について
演習室では、RDBMSの一種である Microsoft社製のAccess というソフトが利用できます。
通常、MS-Access はスタートメニュから以下のようにして起動します。
・起動後に現れた画面は、 新規のデータベースを作成(デザイン) する画面です。
・Accessを使って、 データベースを利用するだけでなく 、 データベースを作成することができます。
・この講義では、 次回以降、データベースの設計技法について演習を行っていきます。
・今回は、このままAccessを閉じて終了してください。
■ サンプルデータベース NorthWind Traders
ここではデータベースのサンプルとしてAccess に付属しているものを使用し、 会社の業務でのデータベースの利用方法について大まかに把握 することにします。
このページからサンプルのデータベースをダウンロードします。
ダウンロードできたら、パソコンに読み込んだデータベースから直接Accessを起動(ファイルをダブルクリック)して下さい。
手順
・タイトルウインドウを閉じる | |
・メインスイッチボード → データベース ウィンドウの表示 で、 データベースを直接操作できる画面に移動する |
|
・データベースの機能主な機能を確認する テーブル 業務に必用なデータを 表 に格納してある いくつか適当に開いて中身を見ておくこと フォーム テーブルのデータをウインドウで1件つづ表示したり、入力・訂正を行うための画面が作成してある いくつか適当に開いて中身を見ておくこと クエリ テーブルのデータを集計したり、複数のテーブルを結合して1つの表にまとめたり、条件を指定してデータを検索するための 問い合わせ機能 が作成してある クエリを適当に実行して、 実行結果は テーブル の形で表示されることを確認する。 ※(入力)テーブル→クエリで処理→(出力)テーブル →更に別のクエリで処理→ ・・・・ということが実現可能。 ・データの整理の例) テーブル「商品」を整理 クエリ「五十音順商品リスト」、「カタログ」 ・データ抽出の例) 「高額商品トップ10」を確認 ・テーブルを組み合わせた例) 「受注クエリ」 レポート テーブルのデータや、クエリの処理結果などを 印刷用にレイアウト したもの いくつか適当に開いて中身を見ておくこと ・次に進む前に、 開いたテーブル、クエリ、フォーム、レポート などは閉じておいて下さい |
|
・データベースの構造を把握します。 「ツール」→「リレーションシップ」 で、 各テーブルの関係図(リレーションシップ)を表示 ○ テーブル名 とテーブルのフィールド(記録項目)が一覧表示される ○ テーブルどうしは、線(リレーション)で結ばれたフィールドについて関係をもつ ○ リレーションに付けられた 1 や ∞ の記号の意味: 1: こちらのテーブルには同じデータは1個だけ存在する(記録できる) ∞: こちらのテーブルには同じデータは複数個存在してよい(記録できる) ・リレーションを確認したら、閉じてよい |
|
・テーブル → 得意先 を開き 大学のデータを追加する。 テーブルに記録するデータ1件を レコード と呼ぶ。 レコード表示部分に注意すること ![]() ※ テーブルの一番下に以下のように追加せよ。 ※ 得意先コードの(オートナンバー) の部分は自動的に入力されるので、記録しなくてよい ※ フリガナ は、対応する部分(得意先名)などに漢字で入力すると自動的に入力される (変換ミスなどで問題が発生したら、直接記入する) ※ レコードは、 次に新しくレコードを追加する もしくは テーブルを閉じる とデータベースに記録される ・テーブルを閉じる |
|
・フォーム → 得意先 を開く ・レコードを進めて( ![]() |
|
・フォーム → 社員 で、自分のデータを新規に登録する ・レコードを新規に登録するには、 レコード表示の ![]() 社員コードは、「401」、氏名は、「自分の氏名」 その他のデータは、適当に入力してみよ。 (日付の入力書式指定(年/月/日)に注意) テーブルのウィンドウを閉じるとデータが記録されます。 メモ:(レコードの追加と削除) レコードを選択して右クリック、または、「編集」メニューからも、レコードの追加・削除が可能 |
|
・社員と同様にして、 フォーム → 商品 で、新規に 商品データを追加してください。 レコード表示の ![]() 商品コードは、「125」を指定 その他のデータは適当に入力 |
|
・受注 を記録します(フォーム)。 追加したデータ 社員・得意先・商品 を使って、以下のような 受注 を記録してください。 ※まず、受注コード(4001) を最初に入力してください。 ※出荷先、運送区分、各種日付などの項目を全て入力してください。 |
|
・受注フォームの 納品書の印刷ボタン で納品書を印刷します ※印刷がエラーになる場合は、 受注フォームを閉じる→ 受注フォームを開く→ 自分の記録した受注レコードまで進む→ 印刷 の手順で試してみてください。 ※印刷した納品書に、学籍番号を記入して 提出してください。 |
|
・時間が余ったら、 サンプルデータベースの他の機能を自由に確認してください。 ※ クエリを作成するためにどのような SQL がプログラムされているか確認 クエリ → デザイン → 表示 → SQLビュー ・質問が無ければ、納品書を提出した人から演習は終了です。 |
操作が終わったら、データベースを閉じて下さい。