問57
頻出度★★★
次に示す項目を使って関係データベースで管理する“社員”表を設計する。他の項目から導出できる,冗長な項目はどれか。 社員
| 社員番号 | 社員名 | 生年月日 | 現在の満年齢 | 住所 | 趣味 |
|---|
この問題の解説と、これまでの解答の記録です。
次に示す項目を使って関係データベースで管理する“社員”表を設計する。他の項目から導出できる,冗長な項目はどれか。 社員
| 社員番号 | 社員名 | 生年月日 | 現在の満年齢 | 住所 | 趣味 |
|---|
「生年月日」は他の項目から計算では求められない基礎データであり、むしろ満年齢を導出する元になる項目。冗長ではなく必須なので誤り。
正解 正解はイ「現在の満年齢」。関係データベースの設計では、他の項目から計算・導出できる値を実データとして重複保持すると冗長になり、更新時に不整合を起こしやすい。満年齢は「生年月日」と現在日付の差から常に一意に算出できるため、テーブルに持たず必要時に計算すればよい。したがって、他項目から導出できる冗長な項目は「現在の満年齢」である。加えて満年齢は時間経過で毎年変化する時変値であり、実データとして保持すると更新漏れで誤った値が残る危険がある点でも、保持すべきでない典型例である。
「住所」は社員ごとに固有の情報で、社員番号や氏名など他の項目から導出できない独立したデータ。冗長ではないので誤り。
「趣味」も個人ごとに異なり、他の項目から計算・推定できない独立したデータ。冗長ではないので誤り。