SC情報処理安全確保支援士試験 午前Ⅱ

令和3年度秋期 情報処理安全確保支援士 午前Ⅱ 問21

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

問題

次の表において、 “在庫” 表の製品番号に参照制約が定義されているとき、 その参

選択肢

  1. ア
    照制約によって拒否される可能性がある操作はどれか。ここで、 実線の下線は主キーを、 破線の下線は外部キーを表す。
  2. イ
    製品 (製品番号、 製品名、 型、 単価)
  3. ウ
    “在庫” 表の行削除イ “在庫” 表の表削除
  4. エ
    "在庫" 表への行追加エ “製品” 表への行追加
解き方のヒントを見る

午前II 問21:外部キー制約は親子関係の見張り役だよ

在庫表の製品番号が製品表の製品番号を参照している場合、在庫表は“この製品、ちゃんと製品表に存在するよね?”と確認している状態だよ。だから、まだ在庫表から参照されている製品番号の行を製品表から消そうとすると、データのつじつまが合わなくなるので、DBが削除を止めることがあるんだ。

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

この問題では、外部キー制約が“子表に入っている値は、親表の主キーとして実在していないとダメ”というルールを守らせる仕組みだと理解しているかが問われているよ。たとえるなら、在庫表が子ども、製品表が親で、子どもが指している親を勝手に消すと迷子になるから、DBがそれを防いでくれるイメージだね。

参照制約の影響

子表が参照中の親行を消すと参照先が消えて不整合になるため、RESTRICT などで拒否される。

在庫.製品番号 -> 製品.製品番号\n参照中の親行削除\n-> 拒否され得る

確認ポイント

  • 子表である在庫表への行追加は、存在する製品番号なら許容される。
  • 親表への行追加は通常制約違反にならない。
  • 製品表の行削除が拒否される可能性を選ぶ。
正解と解説を見る

正解

ウ

出典

問題文と解答は IPA 公開の過去問題冊子・解答例を基にしています。

選択肢ア

この選択肢(“在庫”表の行削除)は不正解だよ。在庫表は製品表を見に行く“子ども側”の表だから、在庫の1行を消しても、名簿である製品表とのつながりが壊れるわけではないんだ。メモを捨てるだけで、元の名簿はそのまま、というイメージだよ。

選択肢イ

この選択肢(“在庫”表の表削除)は不正解だよ。参照制約が主にチェックするのは、“在庫表に入れる製品番号が製品表にあるか”という関係なんだ。表そのものを削除する話は、権限や他の制約の問題になることはあっても、この参照制約によって拒否される操作として見る選択肢ではないよ。

選択肢ウ(正解)

この選択肢(“在庫”表への行追加)が正解だよ。在庫表の製品番号は、製品表に実在する製品番号でないといけないんだ。たとえば会員名簿にない人の名前で受付しようとすると止められる感じで、製品表にない製品番号を在庫表へ追加しようとすると参照制約で拒否される可能性があるよ。

選択肢エ

この選択肢(“製品”表への行追加)は不正解だよ。製品表は“親の名簿”みたいなものだから、新しい製品を名簿に追加するのは問題になりにくいんだ。参照制約が困るのは、名簿にない製品を在庫表に書こうとするときだよ。

出典:独立行政法人 情報処理推進機構(IPA)令和3年度秋期 情報処理安全確保支援士試験 午前Ⅱ 問21(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

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