経営情報システム ③初級編_データベースとSQL11問〜15問

問11:SQLのWHERE句とHAVING句の違いに関する記述として最も適切なものはどれか。

  • A:WHERE句はGROUP BY後の集計結果に条件を適用しHAVING句はGROUP BY前の個々の行に条件を適用する
  • B:WHERE句は文字列列にのみ使えHAVING句は数値列にのみ使える
  • C:WHERE句はGROUP BY前の個々の行を絞り込みHAVING句はGROUP BY後の集計結果に条件を適用する
  • D:WHERE句とHAVING句は完全に同一の機能を持ちどちらを使っても結果は変わらない
  • E:WHERE句はSELECT文でのみ使えHAVING句はINSERT文・UPDATE文でも使える
【第11問:正解と解説】

正解:C
【解説】
・A:不適切:WHERE句とHAVING句の説明が逆になっています。WHERE句が行単位の絞り込み(GROUP BY前)、HAVING句が集計結果への条件適用(GROUP BY後)です。
・B:不適切:WHERE句・HAVING句ともに文字列・数値・日付など各種データ型に対して条件を指定できます。使い分けの基準はデータ型ではなく適用タイミングです。
・C:適切:WHERE句はGROUP BY実行前に個々の行を絞り込み、HAVING句はGROUP BY実行後の各グループの集計値に条件を適用します。この違いは診断士試験頻出です。
・D:不適切:WHERE句とHAVING句は適用されるタイミングが異なります。HAVING句でSUM(売上金額) >= 1000000という条件はWHERE句では構文エラーになります。
・E:不適切:HAVING句はGROUP BYと組み合わせたSELECT文で使われます。INSERT・UPDATE文でHAVING句を使うのは通常のSQL文法外です。


問12:顧客テーブルと注文テーブルの2つから共通の顧客IDで関連するデータを組み合わせて取得する際に使うSQL操作として最も適切なものはどれか。

  • A:UNION(ユニオン結合)
  • B:GROUP BY(グループ化)
  • C:JOIN(テーブル結合)
  • D:ORDER BY(並び替え)
  • E:DISTINCT(重複排除)
【第12問:正解と解説】

正解:C
【解説】
・A:不適切:UNIONは2つのSELECT文の結果を「縦に」結合(行の追加)するものであり共通キーで2テーブルの列を「横に」組み合わせるJOINとは異なります。
・B:不適切:GROUP BYは同一テーブル内でデータをグループ化して集計するための句であり2テーブルを結合する機能はありません。
・C:適切:JOIN(テーブル結合)は共通の列(主キー/外部キーの関係など)を使って2つ以上のテーブルのデータを横方向に組み合わせる操作です。INNER JOIN・LEFT JOIN・RIGHT JOINなどの種類があります。
・D:不適切:ORDER BYはデータを特定の列で昇順・降順に並び替える句であり、テーブル結合とは無関係です。
・E:不適切:DISTINCTは結果から重複行を除去するキーワードであり2テーブルの結合には使いません。


問13:データベースにおいて第1正規形を満たすために必要な条件として最も適切なものはどれか。

  • A:テーブルに主キーを設定すること
  • B:テーブル内の各列の値が繰り返しのない1つの値(原子値)のみで構成されていること
  • C:すべての列が主キーに完全に従属していること(部分従属がないこと)
  • D:推移的な従属関係が排除されていること
  • E:テーブルが3つ以上に分割されていること
【第13問:正解と解説】

正解:B
【解説】
・A:不適切:主キーの設定は重要ですが第1正規形の条件は「繰り返しグループがなく各セルに原子値のみが入ること」であり主キーの有無そのものが第1正規形の定義ではありません。
・B:適切:第1正規形(1NF)の条件は、各列の値が「原子値(それ以上分割できない最小単位の値)」のみで構成され、複数の値や繰り返しグループが1つのセルに入っていないことです。
・C:不適切:これは第2正規形(2NF)の条件(主キーへの完全関数従属)の説明です。
・D:不適切:これは第3正規形(3NF)の条件(推移的関数従属の排除)の説明です。
・E:不適切:テーブルの分割数は正規化の形式を直接定義するものではありません。


問14:ある会社の受注テーブルに(受注ID、顧客名、顧客住所、商品名、数量、単価)が1つのテーブルに混在している。正規化の観点から最も適切な対処法はどれか。

  • A:テーブルはそのまま維持しインデックスを追加して検索を高速化する
  • B:テーブルの列名をわかりやすく変更する
  • C:テーブルを顧客テーブル・商品テーブル・受注テーブルに分割し主キー・外部キーで関連付ける
  • D:テーブルのデータをCSVファイルとして書き出して管理する
  • E:テーブルのすべての列を主キーに設定する
【第14問:正解と解説】

正解:C
【解説】
・A:不適切:インデックスの追加は検索速度向上には有効ですが、テーブルに異なるエンティティの情報が混在することによる更新異常・冗長性の問題は解決しません。
・B:不適切:列名の変更はテーブル設計の本質的な改善とはならず、データの冗長性・更新異常を防ぐ正規化の目的を達成できません。
・C:適切:正規化によって顧客情報・商品情報・受注データに分割し主キーと外部キーで関連付けることで、データの冗長性排除と更新整合性の維持が実現できます。
・D:不適切:CSVへの書き出しはデータのエクスポート操作であり、テーブル設計の正規化とは全く異なります。
・E:不適切:すべての列を主キーにすることは現実的ではなく正規化とは無関係です。


問15:データベースのトランザクションのACID特性のうち、一連の処理はすべて完了するかすべて取り消されるかのどちらかであり途中の中断状態にはならないという特性を何というか。

  • A:一貫性(Consistency)
  • B:独立性(Isolation)
  • C:耐久性(Durability)
  • D:原子性(Atomicity)
  • E:可用性(Availability)
【第15問:正解と解説】

正解:D
【解説】
・A:不適切:一貫性(Consistency)はトランザクション実行前後でデータの整合性ルールが守られることを指します。
・B:不適切:独立性(Isolation)は複数のトランザクションが同時実行されても互いの処理が干渉しないことを指します。
・C:不適切:耐久性(Durability)はコミット(確定)されたトランザクションの結果がシステム障害後も失われないことを指します。
・D:適切:原子性(Atomicity)はトランザクション内の全ての処理が「全て完了(コミット)するか全て取り消される(ロールバック)か」のどちらかであることを保証するACID特性の1つです。
・E:不適切:可用性(Availability)はシステムが必要な時に利用可能な状態にあることを指す概念であり、ACIDのA(Atomicity:原子性)とは異なります。


コメント

タイトルとURLをコピーしました