社員表の冗長な項目を見分ける考え方
ITパスポート試験 令和2年度10月 問57 / データベース › データベース設計
過去問にチャレンジ
次に示す項目を使って関係データベースで管理する「社員」表を設計する。他の項目から導出できる、冗長な項目はどれか。

- ア
生年月日
- イ
現在の満年齢
- ウ
住所
- エ
趣味
会話形式の解説
講師この問題では、ほかの情報から値を求められる項目がないかを考えます。
受験者どの項目も社員についての情報ですが、求め直せるかどうかが判断の基準ですか。
講師そうです。現在の満年齢は、生年月日と現在の日付から計算できます。
受験者満年齢を表にも保存すると、同じ情報を重ねて持つことになりますね。
講師はい。誕生日を迎えた後に満年齢を更新し忘れると、生年月日から計算した値と食い違います。したがって、冗長な項目は現在の満年齢です。
受験者では、生年月日も満年齢に関係するので冗長なのでしょうか。
講師生年月日は、表のほかの項目から求められません。満年齢を計算するために必要な情報です。
受験者住所と趣味も、生年月日などからは分かりませんね。
講師そのとおりです。住所も趣味も、ほかの項目から導き出せないので、この問題でいう冗長な項目には当たりません。
受験者項目が表にあるかどうかではなく、ほかの情報から値を求められるかで判断します。
講師満年齢を計算するときは、現在の年と出生年の差を出し、今年の誕生日をまだ迎えていなければ1を引きます。日付によって値が変わる点にも注意してください。
まとめ
冗長な項目は、ほかの情報から値を導き出せるかで見分けます。現在の満年齢は生年月日と現在の日付から計算できるため、該当します。満年齢を保存すると、誕生日後の更新漏れによって生年月日から計算した値と食い違うおそれがあります。生年月日、住所、趣味は表のほかの項目から求められません。
解答・解説
正解はイです
この問題のテーマ
関係データベースの表で、他の情報から導出できる冗長な項目を見分ける問題です。
解き方の考え方
各項目について、表の他の項目から値を求められるかを考えます。現在の満年齢は生年月日と現在の日付から求められます。誕生日を迎えると値が変わるため、満年齢を保存しておくと更新漏れによる不整合も起こり得ます。
選択肢ごとの解説
- ×ア 生年月日生年月日は、表の他の項目から求められません。満年齢を計算するために必要な情報なので、導出できる冗長な項目には当たりません。
- ○イ 現在の満年齢現在の満年齢は、生年月日と現在の日付から求められます。満年齢を表に保存すると、誕生日後に値を更新し忘れた場合、生年月日と食い違います。したがって、これが冗長な項目です。
- ×ウ 住所住所は、表の他の項目から求められません。生年月日などが分かっても住所は導出できないため、該当しません。
- ×エ 趣味趣味は、表の他の項目から求められません。他の項目から導出できる値ではないため、該当しません。
補足
満年齢を求めるときは、現在の年と出生年の差を出し、今年の誕生日をまだ迎えていなければ1を引きます。設問では「表に項目があるか」だけでなく、「他の情報からその値を求められるか」に注目します。
POINT
- 冗長かどうかは、他の情報から値を導出できるかで判断します。
- 満年齢は生年月日と現在の日付から求められます。
- 満年齢は誕生日を迎えると変わります。
- 導出できる値を重ねて保存すると、更新漏れで不整合が生じ得ます。
