令和元年度 秋期 システムアーキテクト試験 午前Ⅱ 問21

関数従属 {A, B} → C が完全関数従属性を満たすための条件はどれか。

解答・解説

正解: ウ. A → C 及び B → C のいずれも成立しないこと

正解は ウ です。

完全関数従属性とは

関係データベースにおける関数従属 X→YX \to Y において、決定項 XX のいかなる真部分集合 X′X' (X′⊊XX' \subsetneq X)に対しても X′→YX' \to Y が成立しないとき、YY は XX に完全関数従属しているといいます。逆に、XX の真部分集合 X′X' に対して X′→YX' \to Y が成立してしまう場合は部分関数従属と呼びます。

設問の関数従属 {A,B}→C\{A, B\} \to C において、決定項 {A,B}\{A, B\} の空でない真部分集合は {A}\{A\} と {B}\{B\} です。したがって、{A,B}→C\{A, B\} \to C が完全関数従属性を満たすためには、以下の2つの関数従属がいずれも成立しないことが条件となります。

  • A→CA \to C
  • B→CB \to C

これらはすなわち「AA だけでは CC の値が決まらず、BB だけでも CC の値が決まらない(AA と BB の両方が揃って初めて CC の値が決まる)」ことを意味します。よって、ウが正解です。

各選択肢の解説

  • ア: {A,B}→B\{A, B\} \to B 及び {A,B}→A\{A, B\} \to A は、決定項の部分集合に対する関数従属(自明な関数従属)であり、アームストロングの公理(反射律)により常に成立します。完全関数従属性の条件ではありません。
  • イ: A→B→CA \to B \to C などが成立する場合、推移律によって A→CA \to C(または B→CB \to C)が成立してしまうため、{A,B}\{A, B\} の真部分集合に従属することになり、完全関数従属性を満たしません(また、これは推移的関数従属に関する記述です)。
  • ウ: 正解です。真部分集合である AA 単体からも BB 単体からも CC への関数従属が成立しない(部分関数従属でない)ことが、完全関数従属性の定義そのものです。
  • エ: 逆方向の関数従属 C→{A,B}C \to \{A, B\} が成立するかどうかは、{A,B}→C\{A, B\} \to C が完全関数従属性を満たすかどうかとは無関係です。

Spineチーム