この資料は、テキストをもとに、講義のために作成したものです.学習用に活用してください. この資料は、テキストをもとに、講義のために作成したものです.学習用に活用してください. それ以外の目的に使用しないこと 配信しないこと
第11回:関係データベースの利用1 重点項目 関係データベースの構成 関係演算と集合演算 正規化 ACCESS 基本操作1(演習) 情報科学入門 第11回:関係データベースの利用1 重点項目 関係データベースの構成 関係演算と集合演算 正規化 ACCESS 基本操作1(演習)
関係データベースの構成 関係データベースのしくみ データベースは,データを整理して蓄積し,目的に合わせたさまざまな条件でデータを抽出するためのものです。 リレーショナルデータベースは,個々のデータベースを複数の表で管理するもので,シスアド試験では関係データベースと呼びます。 関係データベースの表は,相互に関係(リレーション)を持っています。 関係データベースのしくみ <伝票管理表> <商品表> 商品名 単価 商品A 3,150 商品B 1,890 商品C 2,100 商品D 6,920 伝票番号 商品名 個数 01529 商品A 5 商品B 4 01530 商品C 3 商品D 8 列 行 関連付け 1 関係データベースのデータは,複数の表で管理され, 伝票番号 商品名 単価 個数 01529 商品A 3,150 5 商品B 1,890 4 01530 商品C 2,100 3 商品D 6,920 8 2 異なる表の列(ここでは 「商品名」)を関連付けることで, 3 新しい表を作成できます。
関係データベースの特徴 DBMS(データベース管理システム) (1) 表で管理され,表の行と列を用いて,データを入力したり,操作したりします。 (2) 複数の表に共通する列(項目)に対して関連付け(リレーション)を行うことで,ひとつのデータをさまざまな形式で参照することができます。複数の表から条件を付けてデータを抽出し,1つの表のように扱うこともできます。 (3) 関係データベースでは上記(2)のようなデータ操作を行うことができるため,入力したデータの順序を意識する必要はありません。 DBMS(データベース管理システム) 関係データベースは,DBMS (DataBase Management System) と呼ばれる,データベースを効率的に構築,管理するためのソフトウェアを使って運用されます。DBMSは,「データベース管理システム」とも呼ばれ,次のスライドの図のようなしくみになっています。
DBMSのしくみ DBMS データ操作 データ ネットワークを 介した 機能の利用 データに アクセスする アプリケーション
DBMSの機能 解説 データ操作 表から,指定した条件を満たすデータを抽出する機能(Sec.78参照)。 データ定義 データ制御 データの整合性の確認や,定型処理を自動化(マクロなど)する機能。 障害復旧 データの整合性がない場合や壊れている場合に,データを正しく復旧する機能。 権限 データベースの利用者や表に対してアクセス権を設定する機能。
関係データベースの利点 関係データベースを導入すると,次のような効果が得られます。 1. データの独立 データはプログラムと分離されているので,データの変更によるプログラムの修正を最小にしたり,異なるアプリケーション間でデータを共有したりすることができます。 2. データの整合性の維持 ある表のデータが更新されると,その表とリレーションを持つ表のデータも更新させることができます。 また排他制御(相互排除)機能により,複数のプログラムから同時にデータベースにアクセスしてデータを更新しようとしてもデータの矛盾が起こらないようにできます。 3. 冗長性の排除 同じデータが重複するのを防ぎます。 4. 機密保護 データを一括管理するので,機密保護が容易です。
表の構成要素 関係データベースで利用される表は,次のような構成になっています。 主キー 行 <学籍表> 学籍番号 氏名 住所 生年月日 98101 井上 恵美 文京区千駄木99-9-1-609 1979.5.2 98154 小野 潤子 横浜市港北区日吉10-5-9 1979.9.4 98211 森 加代子 川崎市麻生区虹ヶ丘800 1979.9.26 98269 小泉 友加 世田谷区砧99-89-1-205 1979.5.3 「学籍番号」を関連付けることで,ひとつの表として扱えます。 <成績表> 学籍番号 仏語 英語 文学史 哲学 社会学 近代史 98101 84 80 73 64 67 78 98154 76 91 74 63 98211 87 94 70 98269 90 83 79 86 外部キー 列
構成要素の名称と役割 解説 行は,「タプル(組)」,「レコード」とも呼ばれ,1行が1件分のデータを示す。 行 列 列は,「フィールド」,「項目」,「アトリビュート(属性)」とも呼ばれ,1件のデータを構成する最小単位。列には,インデックスと呼ばれる索引を設定できる。インデックスを設定すると,データの検索や並べ替えなどの処理を高速化できる。 主キー 各行は他行と区別するための「主キー」と呼ばれる列(項目)を持つ。なお,空白値を持つ列を主キーにすることはできない。また,複数の列を組み合わせて主キーにすることもでき,これを「複合キー」という。 外部キー 1つのリレーションにおいて,ある表の項目が他の表の主キーを参照している場合,その項目を「外部キー」と呼ぶ。たとえば,上図の<成績表>の「学籍番号」は<学籍表>の主キーである「学籍番号」を参照しているので,外部キーとなる。
関係演算と集合演算 関係データベースで,表を操作,参照して新しく表を作成することを演算といいます。 関係データベースの演算は,関係演算と集合演算に大別されます。 演算名 種類 解説 関係演算 選択 1つの表から指定した条件を満たす行を抽出。 射影 1つの表から指定した条件を満たす列を抽出。 結合 複数の表から項目が一致する行どうしを結合。 集合演算 和演算 複数の表からすべての行を抽出。 積演算 複数の表から項目値が共通している行を抽出。 差演算 複数の表を比較し,列の値が異なる行を片方の表から抽出。
その他の演算 1. 並べ替え 関係データベースでは,指定された項目を基準にデータを並べ替えることができます。ただし,並べ替えの結果はビュー表として表示されます。 2. 行の集計 特定の項目の値でグループ化し,同一グループ内で指定された項目を集計することができます。 実表とビュー表 関係データベースでは,データベースに保存されている複数の表から,データ操作を行うことによってデータを抽出し,ビュー表と呼ばれる仮想的な表をとおしてデータを参照します。ビュー表のもとになる,関係データベースに保存されている表を実表といいます。 なお,ビュー表に表示されるデータは,実表をとおして見えているだけなので,ビュー表のデータを変更しても実表には反映されません。
正規化 関係データベースでは,複数の表に共通する列に関連付けを行うため,重複するデータや繰り返しの項目を,表での関連性を失わないように整理して,表を分割します。この操作を正規化といいます。 売上伝票 1つの項目に複数の値が含まれている 項目を繰り返し項目といい, これが含まれている表は, 関係データベースでは利用できません。 伝票番号 01529 顧客名 エクス商会 様 文京区春日88-9 03-9876-1234 商品番号 商品名 単価 数量 金額 L0987 商品A 3,150 5 15,750 R2366 商品B 2,100 2 4,200
非正規形 前のスライドのような伝票をもとに表を作成すると, このように繰り返し項目を含む構成となる場合があります。 伝票番号 受注日 顧客名 住所 電話 商品番号 商品名 単価 数量 金額 01529 12/5 エクス 商会 文京区 春日 88-9 03 (9876) 1234 L0987 商品A 3,150 5 15,750 R2366 商品B 2,100 2 4,200 01530 12/6 西芝 電機 中央区 銀座 10-99 (1236) 9876 3 9,450 N5017 商品C 6,920 13,840
正規化の利点 正規化には,次のようなメリットがあります。 (1) 繰り返し項目を整理するので,データベース全体が小さくなります。 (2) 表を分離するので,表ごとの目的が明確になり利用しやすくなります。 (3) 分離した各表は,関連性を保っており,データの更新の手間が省けます。 正規化は,下表のように第一から第三正規化まで段階を経て行います。 正規化によって作成された表を「正規形」といい,正規化されていない表 を「非正規形」といいます。 解説 正規形 第一正規化 繰り返し項目を分離し,独立した行にする。 第一正規形 第二正規化 主キーによって決まる項目を特定し,表を分離する。 第二正規形 第三正規化 主キー以外の項目で決まる項目を特定し,表を分離する。また,表間に関連性がなければ,関連付けを行える項目を追加する。 第三正規形
第一正規化 1つの項目に値が複数ある表は,他の表の列と関連付けが行えないため,関係データベースとして扱うことができません。そのため,複数の値を独立させて,1つの行にする必要があります。これを,「第一正規化といいます。 前のスライドの非正規形を第一正規化すると,次の表になります。第一正規化を行うと,「伝票番号」と「商品番号」が決まると,行のその他の項目も決まることがわかります。 <受注表1> 伝票番号 受注日 顧客名 住所 電話 商品番号 商品名 単価 数量 金額 01529 12/5 エクス商会 文京区 ・・・ 03・・・ L0987 商品A 3,150 5 15,750 R2366 商品B 2,100 2 4,200 01530 12/6 西芝 電機 中央区 3 9,450 N5017 商品C 6,920 13,840 第一正規形ではデータの中に冗長な部分が多く残っていることに注意してください。 「伝票番号」と「商品番号」が決まれば, 行のその他の項目も決まります。
第二正規化 第一正規形を第二正規形にするには,主キーを特定し,主キーおよび主キーの一部で特定できる項目とそうでない項目を判別してから表を分離します。 前のスライドの<受注表1>では,「伝票番号」と「商品番号」を2つ合わせて主キーとすることで,「数量」と「金額」を特定できるので,<受注明細表1>として分離できます。このように複数の項目を合わせて主キーとすることを,複合キーといいます。 また,「商品名」と「単価」は,主キーの一部である「商品番号」で特定できるので,<商品表>として分離できます。 前のスライドの第一正規形を第二正規化すると,次のスライドの表になります。
第二正規形では,主キー以外の項目で決まる項目が分離できていないので,関係データベースとして扱うにはまだ不十分です。 <受注表2> <商品表> 伝票番号 受注日 顧客名 住所 電話 01529 12/5 エクス商会 文京区・・・ 03・・・ 01530 12/6 西芝電機 中央区・・・ 商品番号 商品名 単価 L0987 商品A 3,150 R2366 商品B 2,100 N5017 商品C 6,920 <受注明細表1> 伝票番号 商品番号 数量 金額 01529 L0987 5 15,750 R2366 2 4,200 01530 3 9,450 N5017 13,840 「伝票番号」で 決まる項目です。 「商品番号」で 決まる項目です。 「伝票番号」と「商品番号」で 決まる項目です。 第二正規形では,主キー以外の項目で決まる項目が分離できていないので,関係データベースとして扱うにはまだ不十分です。 顧客名・住所・電話は,実際は伝票番号で決まる訳ではない。 金額は,各商品の単価と数量から計算して求めるべきである。
第三正規化 第二正規形を第三正規形にするには,次の点について考慮します。 1. 主キー以外の項目で特定できる項目の判別と表の分離 前のスライドの下図の<受注表2>には「顧客名」や「住所」などを特定できる項目がないため,「顧客名」や「住所」などの顧客に関連する項目をまとめて1つの表とし,<受注表2>から分離します。ただし,「顧客名」は後に顧客が増えた際重複する可能性があるため,主キーにはできません。そのため,新しく「顧客番号」という項目を設定し,これを主キーとした<顧客表>を作成します。 2. 表間で関連付けを行うための項目の追加 <受注表3>では上記1で顧客に関する情報を分離したため,「伝票番号」から顧客を特定できません。そのため,新しく「顧客番号」を外部キーとして追加し,<顧客表>の「顧客番号」と関連付けが行えるようにします。 3. 計算できる項目の削除 <受注明細表2>と<商品表>は,「商品番号」で関連付けられるので,<受注明細表2>の「数量」と<商品表>の「単価」で計算すれば,前のスライドの下図の<受注明細表1>の「金額」は求められます。よって,「金額」は削除できます。 前のスライドの第二正規形を第三正規化すると,次のスライドの表になります。
なお,第三正規形では,主キー以外の項目は主キーによってのみ特定されます。 <受注表3> <顧客表> 伝票番号 受注日 顧客番号 01529 12/5 0001 01530 12/6 0002 顧客番号 顧客名 住所 電話 0001 エクス商会 文京区春日・・・ 03・・・ 0002 西芝電機 中央区銀座・・・ N:1 1 : N <受注明細表2> <商品表> 伝票番号 商品番号 数量 01529 L0987 5 R2366 2 01530 3 N5017 商品番号 商品名 単価 L0987 商品A 3,150 R2366 商品B 2,100 N5017 商品C 6,920 N:1 なお,第三正規形では,主キー以外の項目は主キーによってのみ特定されます。 第三正規形では主キー以外の項目間は独立しており,個々の表が管理し易く,他のアプリケーションからも再利用可能となっていることに注意してください。
ACCESS基本操作1(演習) Microsoft Office Access 2003を用いて,データベースを構築する基礎演習を行います。 題材は,19枚目のスライドにある”売上伝票データベース”です。 テキストでは,第7章Section76の正規化(P.126)に同じ表が記載されています。 演習の大まかな流れを以下に示します。 新規データベースの作成 各表(テーブル)の作成 主キーのみ含む表から作成 外部キーを含む表は参照先の表を作成した後で作成 リレーションを定義することによって入力データの矛盾を防止 各表(テーブル)にデータを入力 外部キーを含む表への入力は参照先のデータを入力した後有効 データベースの保存と終了 次のスライド以降に手順を示します。
ACCESS基本操作1(演習) 新規データベースの作成 スタートメニューから,〔すべてのプログラム〕→〔Microsoft Office〕とたどり,Access 2003を起動する。 ファイルメニューから〔新規作成〕をクリックする。 表示された<新しいファイル>作業ウィンドウで,<空のデータベース>をクリックする。 ”新しいデータベース”ウィンドウで,保存先(各自の作業フォルダ)を選び,ファイル名(売上伝票)を入力して,<作成>をクリックする。 空のデータベースが作成されて,”売上伝票”のデータベースウィンドウが表示される。
各表(テーブル)の作成 ”売上伝票”のデータベースウィンドウで左にあるオブジェクトメニューから,<テーブル>を選択する。 ACCESS基本操作1(演習) 各表(テーブル)の作成 ”売上伝票”のデータベースウィンドウで左にあるオブジェクトメニューから,<テーブル>を選択する。 右の<デザインビューでテーブルを作成する>をダブルクリックする。 新規テーブルがデザインビューで表示されるので,フィールド名とデータ型を入力してゆく。(まず<顧客表>から作成する。) 顧客番号,顧客名,住所,電話すべて,とりあえずテキスト型でよい。 フィールドサイズもデフォルトのままで,とりあえずよい。 主キーを設定するフィールドにカーソルを移動して,ツールバー上の<主キー>ボタンをクリックする。 顧客番号を主キーにする。 ツールバー上の<ビュー>ボタンをクリックすると,テーブルを保存するかどうか聞いてくるので,<はい>をクリックし,テーブル名(顧客表)を入力して,<OK>をクリックする。 テーブルの表示状態が,デザインビューからデータシートビューに切り替わる。(<ビュー>ボタンをクリックするたびに切り替わる。) テーブル構造の定義はデザインビューで,データの入力はデータシートビューでおこなう。(まだデータは入力しない。)
各表(テーブル)の作成(つづき1) <閉じる>ボタンをクリックして,”顧客表”のテーブルウィンドウを閉じる。 ACCESS基本操作1(演習) 各表(テーブル)の作成(つづき1) <閉じる>ボタンをクリックして,”顧客表”のテーブルウィンドウを閉じる。 同様の手順で,<商品表>,<受注表3>,<受注明細表2>のテーブルも作成する。 <商品表>では,商品番号と商品名はテキスト型,単価は通貨型とし,主キーは商品番号,テーブル名は商品表とする。 <受注表3>では,伝票番号と顧客番号はテキスト型,受注日は日付/時刻型とし,主キーは伝票番号,テーブル名は受注表3とする。 <受注明細表2>では,伝票番号と商品番号はテキスト型,数量は数値型とし,主キーは設定しない,テーブル名は受注明細表2とする。(保存するとき警告が出るが,そのまま<はい>をクリックする。IDという名前のオートナンバー型のフィールドが自動的に付加されるが,削除してもかまわない。)
各表(テーブル)の作成(つづき2) 開いているテーブルをすべて閉じる。(閉じていることを確認する。) ACCESS基本操作1(演習) 各表(テーブル)の作成(つづき2) 開いているテーブルをすべて閉じる。(閉じていることを確認する。) ツールバー上の<リレーションシップ>ボタンをクリックする。 テーブルの表示ウィンドウで,4つのテーブルをすべて選択し,<追加>をクリックする。 リレーションシップウィンドウに4つのテーブルが表示されたのを確認した後,テーブルの表示ウィンドウを閉じる。 リレーションシップウィンドウで,主キーのあるテーブルのフィールド名から外部キーのあるテーブルのフィールド名へ,フィールド名をドラッグ&ドロップする。 リレーションシップの設定ウィンドウが現れるので,左下にある項目3つを全てチェックした上で,<作成>をクリックする。 他のリレーションシップも設定する。(全部で3つ設定する。) 選択したフィールド名の間にリレーションシップを確立したことを示す線が現れる。(1:NのNは∞の記号で表示されている。) リレーションシップウィンドウを閉じる。(保存するかどうか聞いてくるので,<はい>をクリックする。)
各表(テーブル)にデータを入力 データベースの保存と終了 <顧客表>テーブルをダブルクリックして開く。 ACCESS基本操作1(演習) 各表(テーブル)にデータを入力 <顧客表>テーブルをダブルクリックして開く。 データシートビューでデータを入力する。 エクス商会と西芝電機のデータを入力する。 <顧客表>テーブルを閉じる。 同様の手順で,<商品表>テーブル,<受注表3>テーブル,<受注明細表2>テーブルにそれぞれデータを入力する。 外部キーを持つテーブルは,参照先のデータが入力されていないと,入力を受け付けない仕組み(正確には保存できない仕組み)になっていることを確認するとよい。 データベースの保存と終了 開いているテーブルを<閉じる>ボタンをクリックして閉じる。 ”売上伝票”のデータベースウィンドウを<閉じる>ボタンをクリックして閉じる。 Microsoft Office Access 2003 を<閉じる>ボタンをクリックして終了する。
超図解 mini ACCESS 基本操作&テクニック X-media 定価:本体1,124円+税 参考文献