問 6
履修管理システムの構築に関する次の記述を読んで,設問 1〜5 に答えよ。
現在運用している学生の履修状況を管理するシステム(以下,履修管理システ
ムという)の機能を見直して,新システムを構築することになった。新システム
では,科目に関する情報のほかに,学生の資格取得強化ゼミの参加状況に関する
情報を管理することにした。
新システムを設計するに当たって,旧システムの調査を実施した。履修管理シ
ステムが出力する“科目別受講状況表”のレイアウトは,図 1 のような形式であ
った。学生は,必ず一つの学部学科に所属し,複数の科目を受講する。また,一
つの科目は 1 人の教職員が担当するが, 1 人の教職員が複数の科目を担当すること
もある。
次に,新システムで作成する資格取得強化ゼミの“強化ゼミ参加者名簿”の要
件をまとめると,表のようになった。
なお,資格取得強化ゼミは,複数開講されている。
|
〔強化ゼミ参加者名簿の出力要件〕 1.強化ゼミ参加者名簿に掲載する項目 (a)強化ゼミ参加者名簿の見出し部に印刷する項目は,次のとおりである。 ・強化ゼミコード ・強化ゼミ名称 ・顧問の教職員名 ・活動場所 ・出力年月日 ・ページ番号 (b)強化ゼミ参加者名簿の明細部には,次の項目を横 1 行に印刷する。 ・学生名 ・学籍番号 ・連絡先電話番号 ・入会年月日 (C)明細部の出力条件 ・退会者は,印刷しない。 ・退会者と在籍者の区別は,“退会年月日”に格納されたデータを用いて判断するこ とができる。退会者の“退会年月日”には,退会した年月日が入る。在籍者は, “退会年月日”に NULL が設定されている。 明細部は,“入会年月日”順(昇順)で,かつ学生名の“ふりがな”の五十音順に 掲載する。 2.強化ゼミ参加者名簿の出力単位
3.強化ゼミ参加者名簿の出力時期
〔資格取得強化ゼミに関する前提条件〕 1.顧問
2.学生
|
設問 1
図 1 と表から,“学生”エンティティ,“科目”エンティティ,“強化ゼミ”エ
ンティティを抽出し,エンティティ間の関係を E-R 図で整理することにした。
凡例に従って,次の図 2 中にリレーションシップを追加し,E-R 図を完成せよ。
設問 2
図 1 と表から,データ項目を抽出し,正規化された関係表を作成することに
した。
(1)図 1 のデータ項目を整理し,【 a 】〜【 d 】に適切な字句を入
れ,正規化された関係表を完成させよ。また,主キーとなる項目に下線を引
いて示せ。
科目表(科目コード,【 a 】,教職員番号)
学部学科表(学部学科コード,【 b 】)
受講状況表(【 c 】,【 d 】,点数,出席日数)
学生表(学籍番号,学部学科コード,学生名)
(2)表のデータ項目を整理し,【 e 】〜【 h 】に適切な字句を入れ,
正規化された関係表を完成させよ。また,主キーとなる項目に下線を引いて
示せ。
学生表(学籍番号,学部学科コード,学生名,ふりがな,【 e 】)
強化ゼミ表(強化ゼミコード,強化ゼミ名称,【 f 】,活動場所)
教職員表(教職員番号,【 g 】)
参加強化ゼミ表(【 h 】,強化ゼミコード,入会年月日,退会年月日)
設問 3
設問 2 で整理した関係表から,新システムの E-R 図を作成する。図
2 の凡例
に従って,次の図 3 中にリレーションシップを迫加し,新システムの
E-R 図を
完成させよ。
設問 4
強化ゼミ参加者名簿を作成するためのカーソル“強化ゼミ参加者名簿”を定
義する。次の SQL 文中の【 i 】〜【 n 】に入れる適切な字句を答え
よ。
【 i 】
FOR SELECT 強化ゼミ表.強化ゼミコード, 強化ゼミ表.強化ゼミ名称,
教職員表.教職員番号, 教職員表.教職員名, 強化ゼミ表.活動場所,
学生表.学生名,学生表.学籍番号,学生表.連絡先電話番号,
参加強化ゼミ表.入会年月日, 学生表.ふりがな
FROM 強化ゼミ表, 参加強化ゼミ表, 学生表, 教職員表
WHERE【 j 】
AND【 k 】
AND【 l 】
AND【 m 】
ORDER BY【 n 】
設問 5
索引に関する次の記述中の【 o 】〜【 q 】に入れる適切な字句を
答えよ。
複数の列に対してまとめて付与する索引のことを,連結索引,又は複合索引
という。連結索引は,索引付けの対象になる列の名称を列挙して定義する。
B 木構成による連結索引では,索引を構成する各列の値を定義中で列挙した順
に連結したものに対して,索引が付与される。そして,SQL 文の【 o 】句
内に索引定義中で最初に挙げた列名が記述されると,連結索引が実際に使用さ
れる。
例えば,設問 2 の(1)の“学生表”に関して,学籍番号を指定して特定の学生
を検索する場合よりも,ある学部学科に属する学生を検索する場合の方が多い
とする。この場合に連結索引を使って検索の効率化を図るには,
(【 p 】,【 q 】)
よりも,
(【 q 】,【 p 】)
の順で列を指定して連結索引を定義すると効果的である。
このように,連結索引を使用する際には,アクセスパスを事前によく検討
しておく必要がある。連結索引に限らず,事前の検討がおろそかなままに索
引の定義を行ってしまうと,検索時の処理効率がかえって悪化してしまうこ
とがある。
------------------------------------------------------------------------