本文へスキップ

令和2年度 ITパスポート試験 問57

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

問57
頻出度★★★

次に示す項目を使って関係データベースで管理する“社員”表を設計する。他の項目から導出できる,冗長な項目はどれか。 社員

社員番号社員名生年月日現在の満年齢住所趣味
出典 令和2年度 ITパスポート試験 問57
解説

問 57

  • 不正解ア

    「生年月日」は他の項目から計算では求められない基礎データであり、むしろ満年齢を導出する元になる項目。冗長ではなく必須なので誤り。

  • イ

    正解 正解はイ「現在の満年齢」。関係データベースの設計では、他の項目から計算・導出できる値を実データとして重複保持すると冗長になり、更新時に不整合を起こしやすい。満年齢は「生年月日」と現在日付の差から常に一意に算出できるため、テーブルに持たず必要時に計算すればよい。したがって、他項目から導出できる冗長な項目は「現在の満年齢」である。加えて満年齢は時間経過で毎年変化する時変値であり、実データとして保持すると更新漏れで誤った値が残る危険がある点でも、保持すべきでない典型例である。

  • 不正解ウ

    「住所」は社員ごとに固有の情報で、社員番号や氏名など他の項目から導出できない独立したデータ。冗長ではないので誤り。

  • 不正解エ

    「趣味」も個人ごとに異なり、他の項目から計算・推定できない独立したデータ。冗長ではないので誤り。

ここがポイント
  • 導出項目(他の項目から計算で求められる値)はテーブルに実データとして持たず、必要時に算出するのが正規化・冗長排除の基本。二重保持は更新時の不整合の原因になる。
  • 満年齢のような時間経過で変わる値は、基準となる「生年月日」を保持し、参照時に現在日付との差で計算するのがデータベース設計の定石。
用語

解答の記録