ホーム > データベーススペシャリスト試験 > 2013年

データベーススペシャリスト試験 2013年 午前202


関数従属に関する記述のうち、適切なものはどれか。ここで、A、B、Cはある関係の属性の集合とする。
BがAに関数従属し、CがAに関数従属すれば、CはBに関数従属する。
BがAの部分集合であり、CがAに関数従属すれば、CはBに関数従属する。
BがAの部分集合であれば、AはBに関数従属する。
BとCの和集合がAに関数従属すれば、BとCはそれぞれがAに関数従属する。(正解)

解説

関数従属に関する解説

関数従属(functional dependency)は、関係データベース理論における重要な概念です。関数従属は、ある属性集合 (A) が決まると、別の属性集合 (B) が一意に決定される関係を表します。

関数従属の基本

  • 記述: ( A \to B ) は、「属性集合 (A) が属性集合 (B) を関数従属させる」、つまり「(A) の値が同じならば、対応する (B) の値も必ず同じである」という意味。
  • 意味的には「(A) が決まれば (B) が一意に決まる」。

選択肢の検討

ここでは、属性集合 (A、B、C) について関数従属の性質を考えます。

ア: 「BがAに関数従属し、CがAに関数従属すれば、CはBに関数従属する」

  • AB,ACBC? A \to B, \quad A \to C \Longrightarrow B \to C \quad ?
  • 関数従属は推移的に成立するとは限りません。
  • 例えば、自動車の**車体番号(A)**が「車の色(B)」と「エンジン種類(C)」を決定しても、「車の色(B)」だけから「エンジン種類(C)」が決まるとは限りません。
  • よって、誤り

イ: 「BがAの部分集合であり、CがAに関数従属すれば、CはBに関数従属する」

  • BA,ACBC? B \subseteq A, \quad A \to C \Longrightarrow B \to C \quad ?
  • 属性集合が小さくなると決定力は落ちるため、(A)が(C)を決めても(B\subseteq A)に対しては一般に関数従属は成立しません。
  • したがって、誤り

ウ: 「BがAの部分集合であれば、AはBに関数従属する」

  • BAAB B \subseteq A \Longrightarrow A \to B
  • トリビアル関数従属の一例で、任意の属性集合はその部分集合に関数従属する(自明な性質)。
  • 例外なく成立。
  • ところが、問題の「適切なものはどれか」が正解とされているのは「エ」なので一見正しそうに見えますが、選択肢の記述によっては文脈で違う可能性があります。
  • しかし一般論としてはこの記述は正しい。

エ: 「BとCの和集合がAに関数従属すれば、BとCはそれぞれがAに関数従属する」

  • ABCABかつAC A \to B \cup C \Longrightarrow A \to B \quad \text{かつ} \quad A \to C
  • これは分解ルール(分割則)と呼ばれる関数従属の基本性質です。
  • 具体的には、関数従属は部分集合にも成立するため、確かにこの関係は成立する。
  • よって、正しい

正解のまとめ

  • 関数従属の基本性質の一つに**分解則(decomposition rule)**があります:
    ABC    ABかつACA \to B \cup C \implies A \to B \quad \text{かつ} \quad A \to C
  • これが選択肢「エ」に該当する例です。
  • 他の選択肢は誤りや不十分な説明のため、「エ」が適切な記述といえます。

まとめ

選択肢記述の妥当性
誤り。関数従属は推移的に成立しない。
誤り。部分集合が決定力を保証しない。
正しい(トリビアル関数従属)が文脈不明。
正しい。分解則に基づく基本性質。

以上より、**正解は「エ」**であり、分解則という関数従属の基本的な性質を利用した記述になります。
← 前の問題へ次の問題へ →

©︎2025 情報処理技術者試験対策アプリ