検索
連載

SQLで「テーブル作成」を行う「データベーススペシャリスト試験」戦略的学習のススメ(16)(2/3 ページ)

あの“津崎さん”も保有する難関資格「データベーススペシャリスト」。本企画では、データベーススペシャリスト試験 午前/午後試験対策のための「基礎知識」を抜粋してお届けします。今回は、「SQLでのテーブル作成の基礎」を解説します。

Share
Tweet
LINE
Hatena

午後問題演習

研修管理システムのデータベース設計に関する次の記述を読んで、設問1〜3に答えよ。

 D社では、従業員及び部署に関する情報を従業員管理システムで管理している。このたび、従業員向け研修の受講申込み及び受講履歴を管理する研修管理システムを構築することにした。

〔研修管理システムの概要〕

1.研修コースとクラス

(1) 研修コースは、研修コース番号によって一意に識別される。研修コースの内容に大きな修正があった場合には、新たな研修コース番号を付与し、別の研修コースとして扱う。研修コース番号を再使用することはない。

(2) どの研修コースも1年間に1回以上実施される。研修コースの実施単位をクラスと呼び、研修コース番号と開始年月日によって、一意に識別される。

(3) 年度初めに、1年間のクラスのスケジュールを確定し、受講希望者を募集する。

2.申込み

(1) クラスへの申込みは、部署単位の受講人数枠確保(以下、部署別申込みという)と個人単位の受講申込み(以下、受講申込みという)の2段階で行う。

 <1> 部署別申込みでは、各部署の研修担当者が部署内で受講させたい人数(以下、申込人数という)を申し込む。部署別申込みは、募集人数に達するまで随時行うことができる。

 <2> 受講申込みは、受講を希望する従業員が各自で行う。受講申込みは、従業員が所属する部署の申込人数に達するまで随時行うことができる。

(2) 1人の従業員が、同一研修コースを複数回受講することはできない。申込み時にも、同一研修コースの複数のクラスに対して、重複して受講申込みを行うことはできない。

3.クラスの変更と中止

(1) 教室に収容可能な人数に基づいて募集人数を決定しているが、申込状況や教室の割当て状況によって、募集人数が変更されることがある。

(2) 開始年月日の変更が必要なクラスは中止し、改めて新しいクラスを募集する。受講申込者数が少ないクラスは中止する場合がある。

(3) クラスを中止する場合は、そのクラスに対する部署別申込み及び受講申込みを取り消す。

(4) クラスの募集人数を減らす場合には、申込人数が募集人数を超えないようにする。

4.部署別申込人数の変更

(1) 申込人数を超える受講希望者がいる場合には、申込人数を増やす。

(2) 申込人数を減らす場合には、受講申込者数が申込人数を超えないようにする。

5.受講申込みの変更

 申込みのクラスを変更したい場合には、現在の受講申込みを取り消し、変更した内容で改めて受講申込みを行う。

6.クラスの終了と受講状況の分析

(1) クラスの終了日に、クラスの実施履歴及び従業員の受講履歴を保存する。

(2) 受講履歴は、従業員の退職などに関係なく長期にわたって保存し、次の<1>及び<2>の分析に使用する。

 <1> 各部署で必要な研修コースの傾向を分析するために、ある期間の受講履歴を受講時の部署ごとに集計し、研修コース別部署別受講人数を求める。

 <2> 受講者の配属部署の傾向を分析するために、従業員が現在配属されている部署ごとに集計し、研修コース別部署別配属者数を求める。

〔研修管理システムのテーブル構造〕

 研修管理システムは、図1に示すテーブル構造と次のような仕様を考えている。

(1) 研修コースについての情報は“研修コース”テーブルに登録し、研修コースが実施されなくなっても削除しない。

(2) クラスの終了後又はクラスの中止時には、“クラス”テーブルのデータを削除する。“クラス”テーブルのデータを削除するときには、該当するクラスに対する“部署別申込み”テーブルのデータも同時に削除する。

(3) 部署別申込みの取消し時には、“部署別申込み”テーブルのデータを削除する。“部署別申込み”テーブルのデータを削除するときには、該当部署の従業員の“受講申込み”テーブルのデータも同時に削除する。

(4) 受講申込みの取消し時には、“受講申込み”テーブルのデータを削除する。

(5) 実施されたクラスの履歴は、“クラス実施履歴”テーブルに保存する。クラスを受講した従業員の受講履歴は、“受講履歴”テーブルに保存する。(著者註:以下略)

図1 研修管理システムのテーブル構造
図1 研修管理システムのテーブル構造

設問1 研修管理システムのテーブルについて、(1)、(2)に答えよ。

(1) データの整合性を維持するために、可能な限り参照制約を実装したい。参照制約を設定すべきカラムを表1 のように整理した。表1 中の[a]〜[c]に適切な字句を入れて、表を完成させよ。

表1 研修管理システムの参照制約
テーブル名 参照列 被参照テーブル 被参照テーブルの行の
削除時の参照動作
クラス 研修コース番号 研修コース -
部署別申込み 研修コース番号、
開始年月日
クラス [a]
受講申込み [b] [c] CASCADE
クラス実施履歴 研修コース番号 研修コース NO ACTION
受講履歴 研修コース番号 研修コース NO ACTION

( 2 ) “部署別申込み”テーブルを定義する次のSQL文中の[d]〜[g]に入れる適切な字句を答えよ。

設問1

(H18春DB午後I問3設問1)


 解けなかった問題については、下記ヒントを元に再検討しましょう。

【ヒント】

aについては、入るキーワードが文法上3種類【→前述「参照制約のオプション」】しかありません。本文中から「部署別申込み」に関する要件を見つけて判断しましょう。b、cについても、受講申込みテーブル自動削除に関する要件を問題文中から見つけて判断します。「受講申込み」の被参照テーブルの主キーが複合キーであれば、参照列も複合キーであることに注意してください。d、fについては文法上決まったキーワードしか入りません。eについても、文法上、主キーか外部キーの指定しか入らず、主キーでないことはテーブル構造から明白です。gについては削除時の動作を考えて入るキーワードを選んで下さい。


(解答は次ページへ)

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る