本文へスキップ

令和元年度 秋期 ITパスポート試験 問87

この問題の解説と、これまでの解答の記録です。

問87
頻出度★★★

売上伝票のデータを関係データベースの表で管理することを考える。 売上伝票の表を設計するときに, 表を構成するフィールドの関連性を分析し, データの重複及び不整合が発生しないように, 複数の表に分ける作業はどれか。

出典 令和元年度 秋期 ITパスポート試験 問87
解説

問 87

  • 不正解ア

    「結合(join)」は、共通するフィールドをキーに複数の表を一つに結び付けて取り出す関係演算であり、表を「分ける」設計作業とは逆の操作。重複・不整合を防ぐための表分割ではないので誤り。

  • 不正解イ

    「射影(projection)」は、表から必要な列(フィールド)だけを抜き出して取り出す関係演算(データ検索の操作)であり、表の構造を設計・分割する作業ではないので誤り。

  • ウ

    正解 正解はウ「正規化」。正規化とは、フィールド間の関連性(関数従属関係)を分析し、一つの表に混在した項目を意味のまとまりごとに複数の表へ分割する設計作業である。売上伝票のように「伝票番号・日付・顧客名・商品名・単価・数量」などを一枚の表に詰め込むと、同じ顧客名や商品単価が何度も繰り返し記録され(重複)、片方だけ修正すると値が食い違う(不整合)。正規化で顧客表・商品表・売上明細表などに分けると、各データを一箇所だけで管理でき、重複と不整合を防げる。設問が述べる「関連性を分析し、重複・不整合が起きないよう複数の表に分ける」作業に一致するため、ウが正しい。

  • 不正解エ

    「排他制御」は、複数の利用者が同じデータへ同時に更新しようとしたときの競合を、ロックなどで防ぐ同時実行制御の仕組み。データの整合性維持に関わるが、表の設計段階でフィールドを分割する作業ではないので誤り。

ここがポイント
  • 正規化の定義: フィールド間の関連性(関数従属)を分析し、データの重複・不整合を排除するために表を複数に分割する設計作業。
  • 関係演算(結合=表の結合、射影=列の抽出)や同時実行制御(排他制御)と、表構造の設計作業である正規化とを区別できること。
用語

解答の記録