問1:2つの表を結合条件なしで直積(CROSS JOIN)したときの結果の行数として、最も適切なものはどれか。
【資料】表A:5行、表B:4行。結合条件は指定しない(直積)。参考として両表に共通の列が1つあるが、直積では結合条件に用いない。
- A:20行
- B:9行
- C:5行
- D:4行
【第1問:正解と解説】
正解:A
・A
【論点】直積(CROSS JOIN)は一方の表の各行に他方の表の全行を組み合わせるため、結果行数は両表の行数の積になる。行数の和や一方の行数と取り違えないことが要点となる。【考え方】直積では結合条件を用いず、全組み合わせを作る。結果の行数は行数どうしの積で決まり、和や大きい方の行数ではない点に注意する。【選択肢解説】5×4=20行が直積の結果行数であり正しい。
・B
【選択肢解説】両表の行数を足した9行であり、直積の積ではないため誤り。
・C
【選択肢解説】一方の表の行数5行のみであり、組み合わせを反映していないため誤り。
・D
【選択肢解説】一方の表の行数4行のみであり、組み合わせを反映していないため誤り。
関連過去問:結合演算(H26類似)
問2:部門表と社員表を部門コードで内部結合(INNER JOIN)したときの結果行数として、最も適切なものはどれか。
【資料】部門表は3行(部門1、部門2、部門3)。社員表では部門1に2名、部門2に3名が所属し、部門3には所属者がいない。参考として左外部結合なら結果行数は異なるが、本問は内部結合である。
- A:6行
- B:5行
- C:3行
- D:8行
【第2問:正解と解説】
正解:B
・A
【論点】内部結合は結合条件に合致する組のみを返す。一方にしか存在しないキー(対応相手のない行)は結果に含まれない。外部結合との違いを区別することが要点となる。【考え方】内部結合ではマッチする行だけが残るため、対応相手のいない部門の行は結果に現れない。左外部結合ならマッチしない行も残る点と混同しないよう注意する。【選択肢解説】部門3の1行を残した6行であり、これは左外部結合の結果で内部結合ではないため誤り。
・B
【選択肢解説】部門1の2行と部門2の3行の合計5行が内部結合の結果であり正しい。
・C
【選択肢解説】部門表の行数3行のみであり、社員側の対応を反映していないため誤り。
・D
【選択肢解説】行数の見積りを誤った過大な値であり、マッチ行数と一致しない。
関連過去問:内部結合と外部結合(H27類似)
問3:次のデータに対しGROUP BYで部門コードごとに集約したとき、生成されるグループ数として、最も適切なものはどれか。
【資料】売上表の部門コード列の値は、上から順に A, A, B, C, C, C の6行である。GROUP BY 部門コード で集約する。参考として行数は6だが、問われているのはグループ数である。
- A:6グループ
- B:1グループ
- C:3グループ
- D:2グループ
【第3問:正解と解説】
正解:C
・A
【論点】GROUP BYは指定した列の値が同じ行を1つのグループにまとめる。生成されるグループ数は、その列に現れる異なる値(重複を除いた種類)の数に等しい。【考え方】グループ数は元の行数ではなく、集約キー列の異なる値の数で決まる。行数とグループ数を取り違えたり、値の種類を数え誤ったりしないことが要点となる。【選択肢解説】元の行数6をそのままグループ数とした誤りで、集約後の種類数になっていない。
・B
【選択肢解説】すべてを1グループとした誤りで、部門コードの値の違いを反映していない。
・C
【選択肢解説】部門コードの異なる値はA・B・Cの3種類でありグループ数は3となり正しい。
・D
【選択肢解説】値の種類を数え誤った2グループであり、Cを別値と見落とすなどしている。
関連過去問:集約演算(H25類似)
問4:2つの問合せ結果を UNION ALL で連結したときの結果行数として、最も適切なものはどれか。
【資料】問合せXの結果は4行、問合せYの結果は3行。両者には2行分の重複データがある。UNION ALL は重複を除去しない。参考として UNION(重複除去)なら結果は5行になるが、本問は UNION ALL である。
- A:4行
- B:5行
- C:3行
- D:7行
【第4問:正解と解説】
正解:D
・A
【論点】UNIONは重複を除去して和集合を作るが、UNION ALLは重複を除去せず単純に全行を連結する。両者の違いを区別し、重複の扱いを取り違えないことが要点となる。【考え方】UNION ALLは重複除去を行わないため、結果行数は両問合せの行数の単純合計になる。重複を除く UNION の結果行数と混同しないよう注意する。【選択肢解説】一方の問合せの行数4行のみであり、連結を反映していないため誤り。
・B
【選択肢解説】重複を除去した UNION の結果5行であり、UNION ALL ではないため誤り。
・C
【選択肢解説】他方の問合せの行数3行のみであり、連結を反映していないため誤り。
・D
【選択肢解説】UNION ALLは重複除去せず4+3=7行となり正しい。
関連過去問:集合演算(H28類似)
問5:関係データベースの正規化に関する記述として、最も適切なものはどれか。
- A:第1正規形は繰り返し項目を排除して各列が単一値をとる状態、第2正規形は部分関数従属を排除した状態である。
- B:第2正規形は候補キー以外の列が主キーの一部にのみ従属する部分関数従属を許容した状態である。
- C:第3正規形は繰り返し項目を含む非正規形の状態を指し、正規化の出発点となる。
- D:正規化を進めるほど1つの表に多くの項目が集約され、更新時異状が増加していく。
【第5問:正解と解説】
正解:A
・A
【論点】正規化は更新時異状を防ぐためデータの重複・従属を段階的に排除する。第1正規形(繰り返し排除・単一値)、第2正規形(部分関数従属排除)、第3正規形(推移的関数従属排除)の順を区別する。【考え方】各正規形が何を排除するのかを段階順に押さえる。部分関数従属と推移的関数従属の区別、正規化が更新時異状を減らす方向である点を取り違えないことが要点となる。【選択肢解説】第1正規形は単一値化、第2正規形は部分関数従属の排除であり正しい。
・B
【選択肢解説】第2正規形は部分関数従属を排除した状態であり、許容するという記述が誤り。
・C
【選択肢解説】第3正規形は非正規形ではなく、推移的関数従属を排除した高次の状態であるため誤り。
・D
【選択肢解説】正規化は更新時異状を減らす方向であり、増加するという記述が誤り。
関連過去問:正規化(H24類似)

コメント