平成28年度秋期 応用情報技術者試験 午前 問29

分野:データベース(関係モデル・正規化・SQL・トランザクション/排他制御・障害回復・NoSQL・データベース設計)|実際に出題されたIPA過去問題

"サッカーチーム"表と"審判"表から,条件を満たす対戦を導出するSQL文のaに入れる字句はどれか。 〔条件〕 ・出場チーム1のチーム名は出場チーム2のチーム名よりもアルファベット順で先にくる。 ・審判は,所属チームの対戦を担当することはできない。 〔SQL文〕 SELECT A.チーム名 AS 出場チーム1, B.チーム名 AS 出場チーム2, C.氏名 AS 審判氏名 FROM サッカーチーム AS A, サッカーチーム AS B, 審判 AS C WHERE A.チーム名 < B.チーム名 AND a

問題の図表(IPA公式問題冊子より引用)
図表:IPA公式問題冊子より
  1.  (A.チーム名 <> C.所属チーム名 OR B.チーム名 <> C.所属チーム名)
  2.  C.所属チーム名 NOT IN (A.チーム名, B.チーム名)
  3.  EXISTS (SELECT * FROM 審判 AS D WHERE A.チーム名 <> D.所属チーム名 AND B.チーム名 <> D.所属チーム名)
  4.  NOT EXISTS (SELECT * FROM 審判 AS D WHERE A.チーム名 = D.所属チーム名 OR B.チーム名 = D.所属チーム名)
解答・解説を見る

正解:イ

AI解説

正解はイ。条件「審判は所属チームの対戦を担当できない」は、審判Cの所属チーム名が出場チーム1(A)にも出場チーム2(B)にも一致しないことを意味する。イのC.所属チーム名 NOT IN (A.チーム名, B.チーム名)は「Cの所属チームがAでもBでもない」を正しく表す。NOT INは「列挙した値のいずれとも等しくない」を判定する述語である。 ア: 誤り。ORで結ぶと「AとCが異なる、またはBとCが異なる」となり、Cの所属チームがA・Bの一方と一致していても他方と異なれば真になってしまう。正しくはANDで結ぶ必要がある。 イ: 正解。Cの所属チーム名がA.チーム名ともB.チーム名とも等しくない場合のみ真となり、所属チームの対戦を担当しないという条件を満たす。 ウ: 誤り。副問合せは主問合せのCと無関係な審判Dを探すため、A・Bどちらにも所属しない審判が1人でも存在すれば、Cが誰であっても真になってしまい、Cに対する制約にならない。 エ: 誤り。NOT EXISTSの副問合せはA又はBに所属する審判Dの存在を調べるため、そのような審判が1人でも存在すると、担当審判Cが誰であっても全行が除外されてしまう。 💡 相関のない副問合せは外側の行(ここではC)を絞り込めない、という点がこの問題の核心的なひっかけである。NOT IN (値1, 値2)=「≠値1 AND ≠値2」という書換えも覚えておく。

出典:平成28年度 秋期 応用情報技術者試験 午前 問29 / 独立行政法人情報処理推進機構(IPA)
※Web掲載用に表記を一部変更しています。図表はIPA公式問題冊子から引用しています。著作権はIPAに帰属します。
📱 演習アプリで解く(無料・登録不要・2,640問収録)

「データベース」分野の攻略ポイント

関係モデル・正規化・SQL・トランザクション管理・障害回復・データベース設計が中心です。計算問題は少なく、定義と手順を正確に覚えていれば確実に得点できる、いわば「取りこぼしてはいけない」分野です。特に正規形とACID特性は毎年のように形を変えて出ます。

データベースの攻略ポイントをすべて見る(要点5項目・ひっかけ3項目)→

同じ分野(データベース(関係モデル・正規化・SQL・トランザクション/排他制御・障害回復・NoSQL・データベース設計))の過去問