令和4年度 秋期 データベーススペシャリスト試験 午前II 問3

関係 R(A,B,C,D,E)R (A, B, C, D, E) において,関数従属性 A→BA \rightarrow B,A→CA \rightarrow C,{C,D}→E\{C, D\} \rightarrow E が成立する。最初に属性集合 {A,B}\{A, B\} に対して,これらの関数従属性によって関数的に決定される属性をこの属性集合に加える。この操作を繰り返して得られる属性集合(属性集合の閉包)はどれか。

解答・解説

正解: ア. {A,B,C}\{A, B, C\}

関数従属性と 属性集合の閉包 (アームストロングの公理系に基づく導出)に関する問題です。
与えられた関数従属性を用いて、初期の属性集合 {A,B}\{A, B\} から決定できる属性を順次追加していきます。

  1. 初期状態: 属性集合は {A,B}\{A, B\} です。
  2. 第1段階の適用: 関数従属性 A→CA \rightarrow C の左辺である AA が現在の属性集合に含まれているため、右辺の CC を追加できます。これにより、属性集合は {A,B,C}\{A, B, C\} となります。
  3. 第2段階の確認: 関数従属性 {C,D}→E\{C, D\} \rightarrow E を適用するには、左辺の属性 CC と DD の両方が現在の属性集合に含まれている必要があります。しかし、現在の属性集合には DD が含まれていないため、この関数従属性は適用できません。

これ以上適用できる関数従属性はないため、最終的な属性集合の閉包は {A,B,C}\{A, B, C\} となります。

各選択肢の解説

  • ア: 正解です。上記の通り、最終的な属性集合は {A,B,C}\{A, B, C\} となります。
  • イ: 誤りです。属性 DD を決定する関数従属性が存在しないため、DD が追加されることはありません。
  • ウ: 誤りです。属性 DD が存在しないため、{C,D}→E\{C, D\} \rightarrow E を適用して EE を追加することはできません。
  • エ: 誤りです。属性 CC が抜けており、かつ導出できない EE が含まれています。

Spineチーム