マナビング基本情報技術者

関数従属性で分けた表はどう結合できるか

基本情報技術者試験 平成29年度春期 午前 問25 / データベース › データベース設計

過去問にチャレンジ

平成29年度春期 午前 問25

属性aの値が決まれば属性bの値が一意に定まることを、a → bで表す。例えば、社員番号が決まれば社員名が一意に定まるということの表現は、社員番号→社員名である。この表記法に基づいて、図の関係が成立している属性a〜jを、関係データベース上の三つのテーブルで定義する組合せとして、適切なものはどれか。

平成29年度春期 午前 問25の図
  1. ア

    テーブル1 (a) テーブル2 (b, c, d, e) テーブル3 (f, g, h, i, j)

  2. イ

    テーブル1 (a,b,c,d,e) テーブル2 (b,f,g,h) テーブル3 (e,i,j)

  3. ウ

    テーブル1 (a, b, f, g, h) テーブル2 (c, d) テーブル3 (e, i, j)

  4. エ

    テーブル1 (a,c,d) テーブル2 (b,f,g,h) テーブル3 (e,i,j)

会話形式の解説

講師講師
矢印の始点がどの属性を決めるかを読み、表を分けた後も元の対応を復元できるか確かめましょう。
受験者受験者
aから四本の矢印が出ています。aが決まればb、c、d、eも決まるという意味ですね。
講師講師
そのとおりです。さらに、bがf、g、hを決め、eがi、jを決めます。このように値が決まる関係を関数従属性といいます。
受験者受験者
まずaとb~e、次にbとf~h、最後にeとi、jをまとめればよさそうです。分けた表はつなげられますか。
講師講師
最初の表にbとeがあります。bで二つ目の表と、eで三つ目の表と結合できるので、図の対応を復元できます。これがイの組合せです。
受験者受験者
アはaを一つの表に分けています。aからほかの表へつながる属性がないのですね。
講師講師
はい。aだけの表には共通属性がないため、どのaにどのb~eが対応するか復元できません。
受験者受験者
ウのc、dだけの表も、どのaに対応する値なのか分からなくなりますね。
講師講師
そのとおりです。さらにウは、bを介してaから決まるf~hをa、bと同じ表に置いており、推移的な従属も残ります。
受験者受験者
エではaとc、dをまとめていますが、その表にbもeもありません。
講師講師
そのため、bを含む表やeを含む表をaに結び付けられず、aからb、eへの対応を保存できません。
受験者受験者
矢印ごとに属性をまとめ、表をまたぐbとeを残せば、分割後も結合できると確認できました。
講師講師
正解はイです。表を分ける問題では、それぞれの属性をまとめるだけでなく、共通属性で元の対応を復元できるかまで確かめましょう。

まとめ

正解はイです。図ではaがb~eを、bがf~hを、eがiとjを決めます。イの三つの表は、最初の表にあるbとeを使って結合でき、元の対応を復元できます。ほかの組合せは、必要な対応を復元できない表を含みます。

解答・解説

正解はイです

この問題のテーマ

図の関数従属性を保ちながら、属性を三つのテーブルに分ける問題です。

解き方の考え方

図の矢印は、a→b,c,d,e、b→f,g,h、e→i,jを表します。まず決定項a、b、eごとに属性をまとめます。その上で、分けたテーブルをbとeで結合し、元の属性間の対応を復元できるか確かめます。

選択肢ごとの解説

  1. ×ア  テーブル1 (a) テーブル2 (b, c, d, e) テーブル3 (f, g, h, i, j)
    aだけのテーブルには、ほかのテーブルと共通する属性がありません。この構成では、どのaにどのb~eが対応するかを結合によって復元できません。
  2. ○イ  テーブル1 (a,b,c,d,e) テーブル2 (b,f,g,h) テーブル3 (e,i,j)
    テーブル1にはaが決めるb~eを、テーブル2にはbが決めるf~hを、テーブル3にはeが決めるi、jを収めています。テーブル1のbとeを使って残りの表を結合でき、図の対応を保ったまま元のデータを復元できます。
  3. ×ウ  テーブル1 (a, b, f, g, h) テーブル2 (c, d) テーブル3 (e, i, j)
    c、dだけのテーブルにはaがないため、各値がどのaに対応するか分かりません。また、f~hはbを介してaから決まる属性なので、これらをa、bと同じ表に置いても推移的な従属が残ります。
  4. ×エ  テーブル1 (a,c,d) テーブル2 (b,f,g,h) テーブル3 (e,i,j)
    a、c、dのテーブルにはbもeもありません。そのため、bを含む表やeを含む表をaに結び付けられず、a→bとa→eの対応を保存できません。

POINT

  • 矢印の始点は、終点の属性を一意に決める属性です。
  • aが決まるとb~eが決まり、bとeを通じてf~jも決まります。
  • 表を分けるときは、分けた後も共通属性で結合できるか確認します。

※出典:平成29年度春期 基本情報技術者試験 午前 問25(一部改変)