問6 作業状況を管理するシステムに関する次の記述を読んで,設問1〜4に答えよ。
SIベンダのA社では,アプリケーション開発作業の進捗状況を管理するため,担当者が毎日提出する作業日報のデータを基に,作業実績集計表を作成している。このたび,プロジェクト管理者の作業負荷軽減と後続プロジェクトに対する実績データの提供を目的として,作業状況管理システムを開発することになった。
A社では,既存の手書き帳票を参考にして作業日報入力画面(図1)と,作業実績集計表(図2)を設計し,担当者が入力する内容と,作業実績集計表の出力要件を次のように決定した。
〔担当者の入力内容〕
〔作業実績集計表の出力要件〕
次に,このシステムで用いるデータベースを設計するために,作業状況管理に関するE−R図(図3)を作成した。

設問1 図3に示すE−R図では,直接作業に関するデータと間接作業に関するデータを別々に集計することができないので,図4に示すように“作業区分表”を追加した。作業区分表は,属性として次のような項目と値をもつ。
作業区分コード=1のとき、作業区分名称=直接作業
作業区分コード=0のとき、作業区分名称=間接作業
(1)凡例に従って,図3に作業区分を追加してE−R図を完成させよ。
(2)図4中の[ a ]〜[ c ]に入れる適切な字句を答えよ。識別キー項日(主キー項目)には下線を付けよ。
| 作業表 工数見積表 作業日報表 担当者表 作業区分表 |
(作業コード,[ a ],作業名称) (担当者コード,作業コード,見積時間) (担当者コード,作業コード,作業年月日,作業時間,作業完了サイン,備考) (担当者コード,担当者名) ([ b ],[ c ]) |
設問2 作業コード別,担当者コード別に作業時間を集計し,作業実績集計表を出力す
るためのユーザピューを作成する。次のSQL文中の[ d ]〜[ h ]に入れる適切な字句を答えよ。
[ d ] 作業実績表
(作業コード,作業名称,見積時間,担当者コード,担当者名,所要時間)
[ e ] D.作業コード,D.作業名称,C.見積時間,A.担当者コード,
A.担当者名,[ f ]
FROM 担当者表A,作業日報表B,工数見積表C,作業表D
[ g ]
GROUP BY [ h ]
設問3 設問2で定義したユーザビューを使用して,作業コード別,担当者コード別の作業実績集計表を,作業コード順(昇順),担当者コード順(昇順)に並べ替えて出力する。次のSQL文中の[ i ]〜[ l ]に入れる適切な字句を答えよ。
なお,SQL文法上の省略時解釈(デフォルト)は,使用しないものとする。
[ i ] *
[ j ]
[ k ] 作業コード [ l ],担当者コード [ l ]
設問4 設問2で定義したユーザビューを使用して,所要時間が見積時間を超過している作業の一覧を作成するためのSQL文を作成した。このとき,WHERE句を次のようにコーディングしたところ,エラーになった。エラーになる理由を説明した次の記述中の[ m ]〜[ o ]に入れる適切な字句を答えよ。ただし,[ f ]には,設問2の[ f ]と同じ字句が入る。
WHERE 所要時間>見積時間
エラーになる理由:
[ m ]に対する参照処理は,[ m ]定義を用いて,[ n ]に対する参照処理に変換されて処理される。
したがって,
WHERE 所要時間>見積時間
は,
WHERE [ f ]>見積時間
と,置き換えられることになる。
これは,WHERE句としては正しくない。なぜなら,WHERE句中の条件に[ o ]を指定することができないからである。