DBデータベーススペシャリスト試験 午前Ⅱ

平成29年度春期 データベーススペシャリスト 午前Ⅱ 問9

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

SQLが提供する3値論理において,Aに5,Bに4,CにNULLを代入したとき,次の論理式の評価結果はどれか。 (A > C)or(B > A)or(C = A)

選択肢

  1. ア
    φ(空)
  2. イ
    false(偽)
  3. ウ
    true(真)
  4. エ
    unknown(不定)
解き方のヒントを見る

SQL抽出条件を読み解く一つの視点

SQLの抽出条件と結果の対応を考えるときは、条件がどの対象や値の組み合わせにかかるのかを整理し、処理の順序や比較対象を混同しないように確認します。まず条件の役割に意識を向け、結果の見た目から早合点しないことが大切です。

この問題で問われていること

一つの条件式だけに注目し、列・行・値のどの関係を判定しようとしているかを、周辺の条件や表示順とは切り分けて捉えてください。特に、条件が示す対象の範囲を意識して読み進めましょう。

視点

抽出条件を読む際は、条件に登場する要素の役割と、判定の対象になるデータの単位を整理します。複数の条件や別名がある場合も、まず着目する関係を一つに限定すると、結果との対応を落ち着いて検討できます。

確認ポイント

  • 条件が参照する列や値の役割を区別できているか
  • 判定の対象となる行や組み合わせを取り違えていないか
  • 条件以外の表示順や出力項目を判断材料に混ぜていないか
正解と解説を見る

正解

エ

解説

Aに5、Bに4、CにNULLを代入すると、NULLを含む比較はtrueまたはfalseと断定できません。一方、B>Aは成立しないためfalseです。三値論理のORでこれらを組み合わせると、式全体はunknownになります。したがって正答はエです。

理由

A>CとC=AはいずれもCがNULLを含む比較なので、trueやfalseではなくunknownになります。B>Aは、4>5ではないためfalseです。SQLでは、このような結果を三値論理の規則に従ってORで評価します。

比較

ORでは、少なくとも一方がtrueなら全体はtrueになりますが、trueがなくfalseとunknownが組み合わされる場合はunknownになります。本問では、falseだけでなくunknownが残るため、空集合や単純なfalseとは評価されません。

選択肢ア

これは不正解だよ。φ(空)は、問い合わせ結果が空集合になる場合などに用いる表現であり、論理式の評価結果ではありません。本問は三つの比較をORで結合した結果を問うため、NULLを含む比較のunknownという扱いを考える必要があります。

選択肢イ

これは不正解だよ。falseになる比較が一つ含まれていても、OR全体が直ちにfalseになるわけではありません。Cを含む二つの比較はNULLのためunknownとなり、falseとunknownをORで評価した結果はfalseではありません。

選択肢ウ

これは不正解だよ。trueとするには、ORで結ばれた比較のいずれかがtrueである必要があります。しかしB>Aは4>5なので成立せず、NULLを含む比較もtrueとは断定できません。したがって式全体をtrueとは評価できません。

選択肢エ(正解)

これは正解だよ。A>CとC=AはCがNULLなのでunknownとなり、B>Aは4>5ではないためfalseです。SQLの三値論理では、unknownとfalseをORで組み合わせるとunknownが残ります。そのため式全体の評価結果はunknownです。

学習のポイント

NULLを含む比較と、unknownを含むOR演算の評価規則を理解することが重要です。

出典:独立行政法人 情報処理推進機構(IPA)平成29年度春期 データベーススペシャリスト試験 午前Ⅱ 問9(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針