平成29年度 春期 基本情報技術者試験 午前 問25
テクノロジ/データベース属性 a の値が決まれば属性 b の値が一意に定まることを,a→b で表す。例えば,社員番号が決まれば社員名が一意に定まるということの表現は,社員番号→社員名である。この表記法に基づいて,図の関係が成立している属性 a~j を,関係データベース上の三つのテーブルで定義する組合せとして,適切なものはどれか。

出典:平成29年度 春期 基本情報技術者試験 午前 問25
- アテーブル1(a),テーブル2(b, c, d, e),テーブル3(f, g, h, i, j)
- イテーブル1(a, b, c, d, e),テーブル2(b, f, g, h),テーブル3(e, i, j)
- ウテーブル1(a, b, f, g, h),テーブル2(c, d),テーブル3(e, i, j)
- エテーブル1(a, c, d),テーブル2(b, f, g, h),テーブル3(e, i, j)
正解:イ
解説
関数従属性 a→b,c,d,e から,aを主キーとしてb,c,d,eをまとめたテーブルが作れます。さらに b→f,g,h という従属性があるので,bを主キーとしてf,g,hをまとめた別テーブルに分割し,同様に e→i,j から,eを主キーとしてi,jをまとめたテーブルに分割します。この結果,テーブル1(a,b,c,d,e),テーブル2(b,f,g,h),テーブル3(e,i,j) の3テーブルに正規化できます。
選択肢ごとの解説
- ア誤り。テーブル2にb,c,d,eをまとめてしまうと,b→f,g,hやe→i,jの従属関係が同一テーブル内の非キー属性間の従属になり,正規化の考え方に反します。
- イ正しい。a→b,c,d,eをテーブル1,b→f,g,hをテーブル2,e→i,jをテーブル3として分割すれば,全ての関数従属性が各テーブルの主キーに対する従属として表現できます。
- ウ誤り。テーブル1にa,b,f,g,hをまとめると,bとf,g,hの従属関係とaとbの従属関係が混在し,異なるレベルの従属性が一つの表に混在してしまいます。
- エ誤り。テーブル1のa,c,dの組合せでは,aがcやdを決定するという従属関係はテーブル内で表現できますが,bを主キーとする従属性の構造と整合しません。