重要度:B 論点:データベース
問51:関係データベースの主キーに関する記述として、適切なものはどれか。
- A:行を一意に識別できるのであれば、主キーの値にNULLを格納してもよい
- B:複数の列を組み合わせて、1つの主キーとして定義することはできない
- C:行を一意に識別するための列であり、値の重複もNULLも許されない
- D:主キーに指定できるのは、整数などの数値型の列に限られる
【第51問:正解と解説】
正解:C
・A
主キーの列にNULLがあると行を確実に識別できなくなるため、NULLは許されない。
・B
複数の列の組みで一意性を保証する複合キーを、主キーとして定義できる。
・C
正解。主キーは表の中の行を一意に識別するための列(又は列の組み)であり、値の一意性とNULLでないことの両方を満たす必要がある。
・D
文字列型など数値型以外の列でも、行を一意に識別できれば主キーに指定できる。
重要度:A 論点:データベース
問52:関係データベースの設計において、表の正規化を行う主な目的はどれか。
- A:不必要なデータの重複を減らし、更新・挿入・削除時に不整合が生じにくい構造にする
- B:表の数をできるだけ減らして、データベース全体の構造や管理方法を単純にする
- C:問合せ時に必要となる表の結合をなくして、全ての検索処理を高速化する
- D:格納する全てのデータを暗号化し、権限のない利用者からの参照を防止する
【第52問:正解と解説】
正解:A
・A
正解。正規化は表に含まれる不必要な冗長性を減らし、更新・挿入・削除の際に生じる更新時異常を回避しやすい構造にすることを主な目的とする。全ての同じ値をデータベースからなくすことを意味するものではない。
・B
正規化を進めると表は分割されていくため、一般に表の数はむしろ増える。
・C
正規化した表は利用時に結合が必要になることが多く、検索速度の向上を目的とするものではない。
・D
暗号化はセキュリティ対策であり、正規化の目的ではない。
重要度:A 論点:データベース
問53:「社員」表から、部署コードが’B01’の社員の氏名を、年齢の高い順に取り出すSQL文はどれか。
- A:SELECT 氏名 FROM 社員 WHERE 部署コード = ‘B01’ ORDER BY 年齢
- B:SELECT 氏名 FROM 社員 WHERE 部署コード = ‘B01’ ORDER BY 年齢 DESC
- C:SELECT 氏名 FROM 社員 GROUP BY 部署コード ORDER BY 年齢 DESC
- D:SELECT 氏名 FROM 社員 ORDER BY 年齢 DESC WHERE 部署コード = ‘B01’
【第53問:正解と解説】
正解:B
・A
ORDER BYで並び順を指定しない場合は昇順(ASC)となるため、年齢の低い順に取り出されてしまう。
・B
正解。WHERE句で部署コードの条件を絞り込み、ORDER BY 年齢 DESCによって年齢の高い順(降順)に並べ替える。
・C
GROUP BYは集計のためにグループ化する句であり、特定の部署の行を絞り込むにはWHERE句を用いる。
・D
句の順序が誤っている。WHERE句はORDER BY句より前に記述しなければならない。
重要度:B 論点:データベース
問54:「売上」表(商品コード,数量)から、商品コードごとの数量の合計が100以上である商品コードだけを取り出したい。次のSQL文の空欄に入れる字句はどれか。 SELECT 商品コード FROM 売上 GROUP BY 商品コード [ ] SUM(数量) >= 100
- A:WHERE
- B:ON
- C:EXISTS
- D:HAVING
【第54問:正解と解説】
正解:D
・A
WHERE句はグループ化の前に個々の行を絞り込む句であり、集約関数の結果を条件に指定することはできない。
・B
ONは、表を結合する際の結合条件を指定するための句である。
・C
EXISTSは、副問合せの結果に行が存在するかどうかを判定する述語である。
・D
正解。グループ化した後の集約結果(この場合はSUM(数量))に対する条件は、HAVING句で指定する。
重要度:B 論点:データベース
問55:「社員」表と「部署」表を部署コードで内部結合したとき、結果として得られる行に関する記述として適切なものはどれか。
- A:相手の表に一致する行が無くても、両方の表の全ての行が結果に含まれる
- B:社員表の全ての行が結果に残り、一致する部署が無い社員は部署側の列がNULLになる
- C:部署コードの値が両方の表で一致する行の組みだけが結果に含まれる
- D:結合条件に関係なく、2つの表の行の全ての組合せが結果に含まれる
【第55問:正解と解説】
正解:C
・A
一致しない行まで含めて両方の表の全行を残すのは、完全外部結合の説明である。
・B
一方の表の全行を残し、相手が無い部分をNULLとするのは外部結合(左外部結合など)の説明である。
・C
正解。内部結合では、結合条件に指定した列の値が両方の表で一致する行の組みだけが結果として得られる。
・D
全ての行の組合せを作るのは直積(CROSS JOIN)の説明である。

コメント