令和4年度 秋期 データベーススペシャリスト試験 午前II 問4
関係 に対し,関数従属の集合 がある。関数従属の集合 のうち, から冗長な関数従属をなくしたものはどれか。
解答・解説
正解: イ. XとY
関数従属の極小被覆(冗長な関数従属をなくした集合)を求める手順は以下の3ステップです。
1. 右辺を単一属性に分解する
に含まれる は、 と に分解できます。よって は実質的に以下の要素から構成されます。
2. 左辺の冗長な属性を排除する
について考えます。すでに が存在するため、左辺に が加わった は冗長であり、削除できます(あるいは、 より は から導出できるため左辺の を削って となり、重複分を削除できるとも考えられます)。
この時点で残る関数従属は以下の5つです。
3. 冗長な関数従属自体を排除する
残った集合の中から、推移律など他の関数従属を用いて導出可能なものを探します。
- パターン1: と から、推移律により が導出できます。したがって、 は冗長として削除できます。これを削除して残った集合が です。
- パターン2: と から、推移律により が導出できます。したがって、 は冗長として削除できます。これを削除して残った集合が です。
以上より、 と のどちらも から冗長な関数従属を過不足なく排除した集合として正しいことがわかります。
各選択肢の解説
- ア (Xだけ)
も極小被覆として正しい条件を満たしているため誤りです。 - イ (XとY)
正解です。どちらも冗長性を完全に排除した関数従属の集合です。 - ウ (YとZ)
には冗長な が含まれており、また元の にあった に相当する情報が失われているため誤りです。 - エ (Zだけ)
は冗長性を含み、情報も不足しているため誤りです。