ITパスポート過去問 令和2年度(2020年)問57
次に示す項目を使って関係データベースで管理する“社員”表を設計する。他の項目から導出できる,冗長な項目はどれか。
![]()
選択肢
- ア:生年月日
- イ:現在の満年齢
- ウ:住所
- エ:趣味
- ア
- イ
- ウ
- エ
正解と解き方・学習ポイント(AI解説)
他の項目から一意に計算できる項目を表に保持すると、時間経過や更新漏れで値の不整合が起きやすくなります。この表では、生年月日があれば現在日付を基準に現在の満年齢を求められるため、冗長な項目は現在の満年齢です。住所や趣味は他の項目から求められません。
Point
関係データベースの表を設計する際に、他の項目から導出できる項目を見つけ、冗長な項目として表に持たないという考え方を理解しているかを確認することがねらいです。
解くために必要な知識
この問題を解くには、導出項目(計算で求められる項目)を表に保存すると冗長になる、という考え方を理解している必要があります。
用語の整理
| 用語名 | 意味 |
|---|---|
| 関係データベース(RDB) | データを表(行と列)で管理する方式です。 |
| 冗長な項目 | 他の項目から求められるなど、表に保存しなくてもよい重複・無駄になっている項目です。 |
| 導出項目 | 他の項目を使って計算・加工することで求められる項目です。 |
問題の解法手順
図表の読み取り
社員表の項目
画像の“社員”表には、次の項目があります。
-
社員番号
-
社員名
-
生年月日
-
現在の満年齢
-
住所
-
趣味
解く手順
1. 導出できる項目か確認する
各項目について、他の項目から一意に求められるかを確認します。
2. 生年月日から年齢が計算できることを確認する
現在の満年齢は、生年月日と現在日付が分かれば計算できます。
- 年齢 = 現在日付 - 生年月日(年齢の定義に従い、誕生日を迎えたかで調整)
3. 導出できる項目は保持しないのが原則である
年齢は日付が変われば値も変わるため、表に保持すると更新漏れが起きやすくなります。
4. 冗長な項目を選ぶ
以上より、冗長な項目は「イ」です。
選択肢ごとの解説
- ア:不正解
生年月日は本人の事実情報であり、社員番号、社員名、住所、趣味などから一意に求められません。むしろ年齢などを計算する元になる項目なので、冗長とは考えません。
- イ:正解
現在の満年齢は、生年月日と現在日付が分かれば求められます。表に保持すると、誕生日を迎えた後に更新し忘れるなどで更新不整合が起きやすいため、冗長な項目です。
- ウ:不正解
住所は生年月日などから一意に導出できない本人の属性です。計算で求められないため、冗長な項目ではありません。
- エ:不正解
趣味は他の項目から一意に導出できない本人の属性です。計算で求められないため、冗長な項目ではありません。
まとめ
他の項目から一意に計算できる項目を表に保持すると、時間経過や更新漏れで値の不整合が起きやすくなります。この表では、生年月日があれば現在日付を基準に現在の満年齢を求められるため、冗長な項目は現在の満年齢です。住所や趣味は他の項目から求められません。
テクノロジ系 > 技術要素 > データベース
生年月日は本人の事実情報であり、社員番号、社員名、住所、趣味などから一意に求められません。むしろ年齢などを計算する元になる項目なので、冗長とは考えません。
現在の満年齢は、生年月日と現在日付が分かれば求められます。表に保持すると、誕生日を迎えた後に更新し忘れるなどで更新不整合が起きやすいため、冗長な項目です。
住所は生年月日などから一意に導出できない本人の属性です。計算で求められないため、冗長な項目ではありません。
趣味は他の項目から一意に導出できない本人の属性です。計算で求められないため、冗長な項目ではありません。