13. データベース設計演習#

本演習では,関係データベースを適切に設計するために

  1. 実体関連モデリングの作成

  2. 関数従属性に基づく関係スキーマの分解

に取り組む. 演習課題は大問2題である(大問1つにつき小問が2題).

13.1. Q1#

架空企業であるMONACA鉄道では,このたび交通系ICカードと関係データベースシステムを導入し,利用者の乗降車履歴を記録することになった. 以下は,システム設計における想定である.

利用者はMONACA IDが付与されたMONACAカードを持っている. データベースにはMONACAカードIDにひもづけて,年齢,性別の他,学生や小児,高齢者,一般といったカード種別をあわらす情報が記録されている. カード種別は乗車料金の決定に利用される.

利用者の乗降車駅はすべてMONACA鉄道が管轄する駅である. 駅情報はデータベースに登録されている.駅情報として駅ID,駅長名,路線名をもつ. なお,駅によっては複数の路線が通っている場合がある.

乗車料金は料金クラスとMONACAカードのカード種別によって決まる. 料金クラスは乗車駅と降車駅の組み合わせによって決まり,乗降車駅間の距離に応じてF1,F2,F3,F4の4クラスに分けられている.

乗車駅の改札でMONACAカードをかざすと,カード内に一時的に乗車駅情報と入場日時が記録される. 降車駅の改札で再びMONACAカードをかざすと,データベースにMONACAカードID,乗車駅,入場日時,降車駅,出場日時の情報が記録される.

上記を踏まえて,以下の設問に答えよ.

13.1.1. Q1-1(配点6)#

MONACA鉄道のデータベースで管理しようとするデータおよびデータ間の関係性を把握するための実体関連図を作成せよ.

13.1.2. Q1-2(配点6)#

Q1-1で作成した実体関連図を関係スキーマに変換せよ.

13.2. Q2#

県内に複数ある図書館における蔵書貸出管理を包括的に行う関係データベースを設計したい. このデータベースでは,以下の11の属性をもつとする.

  • 図書館(の名前)

  • 住所

  • ISBN

  • 書籍タイトル

  • 出版社

  • 著者

  • 冊数

  • ユーザ

  • 連絡先

  • 貸出日

  • 返却日

また,以下の関数従属性が成立するとする. なお,ある書籍の著者は複数人いる場合があり,ユーザは同じ本を借りることはないと仮定する.

  • \(FD_1: 図書館 \to 住所\)

  • \(FD_2: ユーザ \to 連絡先\)

  • \(FD_3: ISBN \to 書籍タイトル, 出版社\)

  • \(FD_4: ISBN, 図書館 \to 冊数\)

  • \(FD_5: ISBN, 図書館, ユーザ \to 貸出日, 返却日\)

上記を踏まえて,以下の設問に答えよ.

13.2.1. Q2-1(配点3)#

上記関数従属性をFDダイアグラムで表現せよ.

13.2.2. Q2-2(配点5)#

関数従属性をふまえて,上記11の属性をもつ関係スキーマをいくつかの関係スキーマに情報無損失分解し,第3正規形またはボイス・コッド正規形を得よ. 解答の際には,以下に留意すること.

  • 分解の過程が分かるようにすること

  • ある関係スキーマを情報無損失分解をした際には,どの関数従属性を用いたかを明記すること

  • 分解して得られた関係スキーマは\(R(\underline{A_1}, A_2, ...)\)のような形式で,関係名,キー,属性を記すこと(関係名は適当に定めよ)

  • 途中過程のものも含め,得られた関係スキーマがどの正規形(1NF,2NF,3NF,or BCNF)であるかを明記すること