過去問解きまくり研究所 ホーム

平成29年度 秋期 午前 問28

データベース

射影に関する問題

関係 R(ID,A,B,C)の A,C への射影の結果と SQL 文で求めた結果が同じになるように,a に入れるべき字句はどれか。ここで,関係 R を表 T で実現し,表 T に各行を格納したものを次に示す。

原典では,左に表 T が罫線で示され,右に〔SQL 文〕が置かれている。逐語で写した。

表 T

IDABC
001a1b1c1
002a1b1c2
003a1b2c1
004a2b1c2
005a2b2c2

〔SQL 文〕

SELECT  a  A, C FROM T
答えと解説を見る

✓ これが正解イDISTINCT

解説

射影は重複を残さないので、重複を除く語が必要です。

設問は、関係の二つの列への射影の結果と同じになるように、問合せに補う字句を選ばせています。まず表 T の五行を、その二つの列だけに絞って書き出してみると、現れる組は三種類しかなく、残りの二行は先に出た組と同じ値の繰り返しだと分かります。ここが分かれ目で、関係代数の射影は結果を集合として扱うため、同じ組を二度持ちません。一方で SQL の問合せは、何も指定しなければ重複した行をそのまま五行返します。この差を埋めて三行に揃えるには、重複した行を一つにまとめる指定である DISTINCT を補うことになります。列を一つ増やすと重複が消えて効かなくなる点も、選んだ列の組で見ているからです。

ほかの選択肢はなぜ違うのか

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

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)