P 社は,セキュリティを確保するために自社ビルを 10 の区画に分け,各区画への入退室を IC カードで行うシステムを導入し,その管理方法についての検証を始めた。この IC カードを使った入退室管理(以下,入退室管理という)の概要は次のとおりであり,入退室管理で用いるデータベースの構造(一部)を図 1 に示す。 〔入退室管理の概要〕 (1) 社員は一つの部署に所属し,IC カードを 1 人 1 枚貸与される。IC カードはカード固有の IC カード番号をもつ。IC カードの情報は IC カード登録表に登録される。 (2) 社員の入退室が許可されている区画は個別に決められており,許可された区分の情報が入退室許可表に登録される。入退室が可能な場合で,その区画が所属部署の入っている区画の場合は “1”,それ以外で入退室が必要と認められた区画の場合は “2” が,入退室許可表の許可区分に登録される。 (3) 各区画には IC カードリーダが設置されており,入退室が許可された IC カード番号を読み取ったときだけドアを解錠し,入退室の記録を入退室記録表に記録する。このとき,入室の場合は “1”,退室の場合は “−1” を入退室記録表の入退室区分に記録する。 なお,P 社は,社員に対して午前 0 時までに退社することを義務づけている。 入退室管理で用いるデータベースを使って, 入退室に関する調査を行うことにした。図1の三つの表のデータを使って行うことができる調査はどれか。
平成27年度 春期 ITパスポート試験 問88
この問題の解説と、これまでの解答の記録です。
問 88
※ この問題は、解説作成時の検算で公表解答を確認しきれませんでした。判定は IPA 公表の解答どおりです。
不正解ア
入室と退室の記録回数が一致しないこと自体は記録を数えれば分かるが、その「原因」(共連れ、記録漏れ、扉の開放など)はデータベースに項目として記録されていない。原因別に社員数を集計するには、記録に残らない事情を別途調査して入力する必要があり、三つの表のデータだけでは行えない。
不正解イ
一度の解錠で複数人が同時に入退室した場合、認証されなかった社員の入退室はそもそも記録として残らない。誰と一緒に入ったかを特定するには、記録されていない人物を記録から突き止めることになり論理的に不可能である。時刻が近い他社員の記録は推測の材料にはなっても、事実として調べたことにはならない。
- ウ
正解 入退室管理データベースの三つの表には、社員(および所属部署)、区画、そして「いつ・誰が・どの区画に入室/退室したか」という入退室記録が保持されている。ウの「各部署に所属する社員が、各区画に入室した回数を、月ごとに集計する」は、この記録を社員の表と結合して所属部署を取り出し、区画と年月で区分して入室の件数を数えるだけで求められる。つまり、表の結合(join)と条件による選択・グループ集計という、データベースが本来持つデータだけで完結する調査であり、新たな情報を追加する必要がない。したがって正解はウである。
不正解エ
「入室が許可されていない区画」を判定するには、社員(または部署)ごとにどの区画への入室が許可されているかという権限のデータが必要になるが、三つの表は入退室の事実を記録するもので、そのような許可情報を持っていない。許可の有無が分からない以上、未許可入室の回数を集計することはできない。
- データベースで「できる調査」を判断する要点は、その調査に必要な項目が表に実際に格納されているかどうか。格納されている項目は結合・選択・集計で自由に組み合わせられるが、記録されていない情報(原因、権限、記録に残らない同伴者)は導き出せない。
- 複数の表にまたがる集計は、共通する項目(社員番号・区画コードなど)で表を結合してから、部署・区画・年月といった区分ごとに件数を数えるという手順で行う。これがリレーショナルデータベースにおける結合と集計の基本的な考え方である。