- トップページ
- 応用情報技術者
- 平成27年度秋季問題
- 平成27年度秋季解答・解説
平成27年度秋季解答
問題26
クライアントサーバシステムにおけるストアドプロシージャに関する記述のうち、適切でないものはどれか。
ア | 機密性の高いデータに対する処理を特定のプロシージャ呼出しに限定することによって、セキュリティを向上させることができる。 |
イ | システム全体に共通な処理をプロシージャとして格納することによって、処理の標準化を行うことができる。 |
ウ | データベースへのアクセスを細かい単位でプロシージャ化することによって、処理性能(スループット)を向上させることができる。 |
エ | 複数のSQL文から成る手続を1回の呼出しで実行できるので、クライアントとサーバ間の通信回数を減らすことができる。 |
解答:ウ
<解説>
ストアドプロシージャ機能は、データベースに対する一連の処理手順を一つのプログラムにまとめ、データベース管理システムに保存したもの。通常のようにSQL文を一つずつ送るのに比べて、ネットワークのトラフィックを削減できる。また、サーバ上で構文解析や機械語への変換を前もって終わらせておくため、処理時間の軽減にもつながる。
ア | × | 機密性の高いデータに対する処理を特定のプロシージャ呼出しに限定することによって、機密性の高いデータを利用者から直接参照できないようにすることができる。その結果、セキュリティを向上させることができる。 |
イ | × | システム全体に共通な処理をプロシージャとして格納しておくことによって、処理の標準化を行うことができる。標準化はストアドプロシージャの最も基本的な使い方である。 |
ウ | ○ | ストアドプロシージャではデータベースへの複数の処理をまとめて処理性能の向上を図る。アクセスを細かい単位にプロシージャ化するのは誤った使い方である。 |
エ | × | 複数のSQL文を1回の呼出しで実行できるので、クライアントとサーバ間の通信回数を減らすことができる。 |
問題27
社員と年の対応関係をUMLのクラス図で記述する。 二つのクラス間の関連が次の条件を満たす場合、a、bに入る多重度の適切な組合せはどれか。 ここで、年クラスのインスタンスは毎年存在する。
[条件]
(1)全ての社員は入社年を特定できる。
(2)年によっては社員が入社しないこともある。
解答:イ
<解説>
条件より多重度は次のようになる。
- (1)全ての社員は入社年を特定できる。
- 社員が決まると入社年が一つに決まる。したがって、一人の社員に対応する入社年は一つだけになるため空欄bに入る多重度は「1」になる。
ただし、選択肢bに「1」がないので同様の意味となる「1...1」が解答となる。
- (2)年によっては社員が入社しないこともある。
- 年によっては社員が入社しないこともあるため、入社年が決まってもその入社年に対応する社員が一人もいないこともあります。また年内に入社する社員の人数に上限はありません。したがって一つの入社年に対応する社員は0人以上であり、かつ何人でもよいため空欄aは「0...*」が解答なる。
問題28
関係R(A, B, C, D, E, F)において、次の関数従属が成立するとき、候補キーとなるのはどれか。 [関数従属] A→B, A→F, B→C, C→D, {B, C}→E, {C, F}→A
ア | B |
イ | {B, C} |
ウ | {B, F} |
エ | {B, D, E} |
解答:ウ
<解説>
関係従属とは、表内のある項目の値が決定すると、別の項目の値もただ一つに決まる関係の事である。
関係従属図は、次のようになる。
図より、Aが候補キーとなることが分かるが、選択肢にない。Aを従属させる{C,F}も候補キーだが選ぶことができない。
しかし、CはBに従属すので、{B,F}は候補キーにすることができる。
問題29
“倉庫別商品在庫集計”表から在庫数の合計を求めたい。
倉庫番号‘C003’の倉庫で在庫数が100以上の商品に対して、全ての倉庫における在庫数の合計を求めるSQL文の a に入る適切な字句はどれか。
ここで、該当する商品は複数存在するとともに在庫数が100未満の商品も存在するものとする。
また、実線の下線は主キーを表す。
倉庫別商品在庫集計(倉庫番号、商品コード、在庫数)
[SQL文]
SELECT 商品コード, SUM(在庫数) AS 在庫合計 FROM 倉庫別商品在庫集計
WHERE a
GROUP BY 商品コード
ア | 商品コード = (SELECT 商品コード FROM 倉庫別商品在庫集計 WHERE 倉庫番号 = ‘C003’ AND 在庫数 >= 100) |
イ | 商品コード = ALL (SELECT 商品コード FROM 倉庫別商品在庫集計 WHERE 倉庫番号 = ‘C003’ AND 在庫数 >= 100) |
ウ | 商品コード IN (SELECT 商品コード FROM 倉庫別商品在庫集計 WHERE 倉庫番号 = ‘C003’ AND 在庫数 >= 100) |
エ | EXISTS (SELECT * FROM 倉庫別商品在庫集計 WHERE 倉庫番号 = ‘C003’ AND 在庫数 >= 100) |
解答:ウ
<解説>
- 倉庫番号'C003'の倉庫で在庫数が100以上の商品」の在庫数の合計を求めるには、まず「倉庫番号'C003'の倉庫で在庫数が100以上の商品」の商品コードを特定するために,次のSQL文を用います。
SELECT商品コードFROM 倉庫別商品在庫集計 WHERE 倉庫番号='C003' AND 在庫数 >=100 - このSQL文で得た複数の商品コードのいずれかに一致する商品コードをもつ行だけを"倉庫別商品在庫集計表"から取り出し,商品コードことに在庫数
をSUM関数で集計して表示するので,前述のSQL文を副問合せとし,次のようなSQL文を用います。
※ 副問合せから複数の行が返ってくるので,IN句を 用います。
SELECT 商品コード,SUM(在庫数) AS 在庫合計 FROM 倉庫別商品在庫集計
WHERE 商品コード IN (SELECT 商品コード FROM 倉庫別商品在庫集計
WHERE 倉庫番号 = ‘C003’ AND 在庫数 >= 100)
GROUP BY 商品コード
よって,ウが正解である。
問題30
チェックポイントを取得するDBMSにおいて、図のような時間経過でシステム障害が発生した。 前進復帰(ロールフォワード)によって障害回復できるすべてのトランザクションはどれか。
ア | T1 |
イ | T2とT3 |
ウ | T4とT5 |
エ | T5 |
解答:ウ
<解説>
ロールフォワードは、データベースで障害が起きたときの対処法のひとつで、どこかの時点のバックアップを適用して障害が起きる前の状態に一旦戻し、それ以降の処理を再現することで障害が起きていないデータベースを復活させること。
主な特徴は次のとおりである。
- 障害発生直前までに完了していた更新を復元する
- 更新後ログを利用する
ロールフォワードの対象となるのは、障害の発生時より前にコミットされたトランザクションのみである。
それを踏まえると、各トランザクションは次のようになります。
T1 | チェックポイント前にコミットざれているので,障害が発生してもその影響を受けません。 この問題の対象外のトランザクションです。 |
|
T2 | チェックポイント前に開始して,障害発生時点ではコミットされていないので処理は終 了していません。 この障害回復は後進復帰(ロールバック)で行いう。 |
|
T3 | チェックポイント前に開始して,障害発生時点ではコミットされていないので処理は終 了していません。 この障害回復は後進復帰(ロールバック)で行いう。 |
|
T4 | チエックポイント前に聞始して、障害が発生する前にコミットされて処理が終了してい ます。 この場合は,前進復帰によって障害回復をします。 |
|
T5 | チエックポイント後に開始していますが、障害が発生する前にコミットされて処理が終了しています。 この場合は,前進復帰によって障害回復をします。 |
したがって、ウが正解である。
お問い合わせ