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

平成22年度秋期 情報処理安全確保支援士 午前Ⅰ 問11

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

問題

次の表定義において、 "在庫" 表の製品番号に定義された参照制約によって拒否される可能性のある操作はどれか。ここで、 実線は主キーを、 破線は外部キーを表す。

選択肢

  1. ア
    "在庫" 表の行削除
  2. イ
    "在庫" 表の表削除
  3. ウ
    "在庫" 表への行追加
  4. エ
    "製品" 表への行追加
解き方のヒントを見る

データベースの「存在しない商品(マスタにないID)」を、勝手に入荷リストに登録させないルール(参照整合性制約)

データベースの重要な親子ルール「参照整合性制約(外部キー制約)」の問題だよ。例えば、「製品マスタ」表(親)と「在庫」表(子)があるとする。「在庫」表に製品データを新しく登録する時、その「製品番号」が親である「製品マスタ」表に載っていない幽霊商品だったら、データが矛盾しちゃうよね。だから、データベースシステムは「親にないものは、子に登録できないよ!」とエラーを出して防いでくれるんだ。

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

子のテーブル(在庫)に新規データを追加したり更新したりする際、「親のテーブル(製品)に実在するキー値しか指定できない」という整合性ルール(外部キー制約)の動作を選び取ろう。

Referential Constraint

a foreign-key constraint on the inventory table rejects insertion when the referenced product number does not exist in the product table

child table: inventory\nparent table: product\nreject insert with missing parent key

確認ポイント

  • 外部キーの参照先表を確認する。
  • 子表への追加が制約対象になる。
  • 存在しない親キーでは登録できない。
正解と解説を見る

正解

ウ

出典

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

選択肢ア

不正解だよ。"在庫"表の行を削除するのは、子ども側の記録を消すだけなので、親である"製品"表の行が迷子になるわけではないんだ。たとえるなら、予約メモを消しても商品カタログ自体は困らない、という感じだよ。

選択肢イ

不正解だよ。"在庫"表そのものを削除する操作は、行同士の親子関係をチェックする話とは少し違うんだ。参照制約は基本的に、"在庫に書いた製品番号が製品表に本当にあるかな?"を見るルールだよ。

選択肢ウ(正解)

正解だよ。"在庫"表に行を追加するとき、その製品番号が親である"製品"表に存在しないと、合鍵を作る前に本物の鍵が存在しないような状態になるんだ。だからDBは"その製品、製品表にないよ"と拒否する可能性があるよ。

選択肢エ

不正解だよ。"製品"表は親、"在庫"表は子どもの表と考えよう。親の名簿に新しい製品を追加するのは、学校の名簿に新入生を足すようなものだから、在庫側に迷子が生まれるわけではないんだ。だから参照制約で問題になりにくいよ。

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

関連する過去問一覧

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