令和元年度 秋期 システムアーキテクト試験 午前Ⅱ 問21
関数従属 {A, B} → C が完全関数従属性を満たすための条件はどれか。
解答・解説
正解: ウ. A → C 及び B → C のいずれも成立しないこと
正解は ウ です。
完全関数従属性とは
関係データベースにおける関数従属 において、決定項 のいかなる真部分集合 ()に対しても が成立しないとき、 は に完全関数従属しているといいます。逆に、 の真部分集合 に対して が成立してしまう場合は部分関数従属と呼びます。
設問の関数従属 において、決定項 の空でない真部分集合は と です。したがって、 が完全関数従属性を満たすためには、以下の2つの関数従属がいずれも成立しないことが条件となります。
これらはすなわち「 だけでは の値が決まらず、 だけでも の値が決まらない( と の両方が揃って初めて の値が決まる)」ことを意味します。よって、ウが正解です。
各選択肢の解説
- ア: 及び は、決定項の部分集合に対する関数従属(自明な関数従属)であり、アームストロングの公理(反射律)により常に成立します。完全関数従属性の条件ではありません。
- イ: などが成立する場合、推移律によって (または )が成立してしまうため、 の真部分集合に従属することになり、完全関数従属性を満たしません(また、これは推移的関数従属に関する記述です)。
- ウ: 正解です。真部分集合である 単体からも 単体からも への関数従属が成立しない(部分関数従属でない)ことが、完全関数従属性の定義そのものです。
- エ: 逆方向の関数従属 が成立するかどうかは、 が完全関数従属性を満たすかどうかとは無関係です。