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

- 生年月日
- 現在の満年齢
- 住所
- 趣味
[出典:ITパスポート試験 令和2年度 問57]
スポンサーリンク
正解
正解は「イ」です。
解説
正解は「イ:現在の満年齢」です。この問題は、関係データベースにおける「冗長な項目(重複して存在する不要なデータ)」を見極める力が問われています。「現在の満年齢」は、「生年月日」と「現在の日付」から常に計算で導出することができます。
たとえば、生年月日が1990年4月1日で、今日が2025年4月1日であれば、満年齢は35歳であると計算できます。このように、他のデータ(ここでは生年月日と現在日付)から求められるデータを、あえて項目として持っていると、データの整合性に問題が生じます。
例えば「生年月日は1990年4月1日」なのに「満年齢が36歳」と登録されていたら、どちらが正しいか不明になります。このような冗長性をなくすことが、関係データベース設計の基本である「正規化」の目的です。正規化を進めることで、重複を避け、更新ミスや整合性の問題を防ぐことができます。
ア(生年月日):
生年月日は一意に特定できる情報で、他の情報から導出されるものではありません。基本データとして必要な項目です。
ウ(住所):
住所も社員の属性として基本的な情報であり、他の項目からは導出できません。冗長ではありません。
エ(趣味):
趣味も個人に固有の情報で、他の項目からは求められません。冗長な項目ではなく、必要に応じて保持される情報です。
難易度
この問題は、データベース設計における「冗長な項目とは何か」を理解していれば、比較的簡単に解ける内容です。初心者にとっては「導出可能なデータ」という考え方に少し慣れが必要ですが、実際の業務でもよくあるケースなので、基本知識として確実に身につけておくと良いでしょう。
スポンサーリンク
用語補足
冗長性:
同じ意味の情報が複数の場所に記録されている状態のことです。たとえば、「生年月日」と「年齢」の両方を登録していると、どちらかが更新されないままになると矛盾が生じます。
正規化:
データベースの設計において、データの重複や矛盾をなくすために、表を分割したり構造を整理したりする手法です。正規化によってデータの整合性が保たれやすくなります。
対策
「他の情報から求められるデータ=冗長な項目である」という基本ルールを覚えておくことが重要です。特に、年齢や金額など日々変化するデータは、元の情報(生年月日や単価×数量など)から導出できるかを常に意識すると、整合性の高いデータ設計ができます。