データベーススペシャリスト 2014年 午前2 問04
問題文
関係モデルにおいて、情報無損失分解ができ、かつ、関数従属性保存が成り立つ変換が必ず存在するものはどれか。ここで、情報無損失分解とは自然結合によって元の関係が必ず得られる分解をいう。
選択肢
ア:第2正規形から第3正規形への変換(正解)
イ:第3正規形からボイスコッド正規形への変換
ウ:非正規形から第1正規形への変換
エ:ボイスコッド正規形から第4正規形への変換
🔒 解説は解答すると表示されます
第2→第3正規形の分解性【午前2解説】
正解の理由
与えられた条件(情報無損失分解=自然結合で元の関係を復元できること、かつ関数従属性(FD)保存が成り立つこと)を常に満たす変換が必ず存在するのは、アの「第2正規形から第3正規形への変換」です。理由は次のとおりです。
- 3NF合成(synthesis)アルゴリズムを用すれば、任意の関係とその関数従属性の集合から、常に(1)関数従属性保存が成り立ち、(2)情報無損失分解となるような3NFの分解を構成できます。具体的には、最小被覆(minimal cover)を作り,各FD X→A に対してスキーマ R_XA = X ∪ {A} を作成し,もしいずれの生成スキーマにも元の関係のキーが含まれない場合はキーを含むスキーマを追加します。これによりFD保存と無損失性が保証されます。
- 第2正規形(2NF)であることは部分関数従属性が排除されていることを意味しますが,3NF化を行う際に上記合成アルゴリズムは有効に機能します。したがって、2NFから3NFへ「常に」両方の性質を満たす分解が存在します。
解法ステップ
- 出題の要求を確認:両方の性質(情報無損失 + FD保存)が常に成り立つ変換を問うている。
- 正規化に関する既知の事実を想起:
- 3NF合成アルゴリズムはFD保存と無損失分解を保証する(キーを含むスキーマを追加する手順を含む)。
- BCNFへの分解は一般にFD保存を保証しないことがある。
- 各選択肢について、上記の事実に照らして可能性を評価する。
- 合成アルゴリズムの存在により、アが常に成り立つことを確認して選択。
選択肢別の誤答解説
- ア:正答。3NF合成アルゴリズムにより、情報無損失かつFD保存の分解が常に構成可能であるため妥当。
- イ:第3正規形からボイスコッド正規形(BCNF)への変換は一般に可能だが、BCNFへの分解はしばしばある関数従属性を保存できない(FD保存が失われる)ため「必ず存在する」とは言えない。
- ウ:非正規形から第1正規形(1NF)への変換は「原理的にはデータを平坦化」する操作だが,FD保存や無損失性の保証はケース依存であり,常に両方を満たす変換が存在するとは断言できない。1NFは属性の原子性に関する制約であり,関数従属性や分解性の理論的保証とは直接一致しない。
- エ:BCNFから第4正規形(4NF)への変換は,4NFが多値従属性(MVD)を扱うものであり,BCNFが既にFDに関して厳格であっても,多値従属性の存在によりFD保存や無損失を同時に保証する一般的な方法はない。従って「必ず存在する」とは言えない。
よくある誤解
- 「2NFは何もしなくてよい段階と考える」:誤り。2NFは候補キーの部分関数従属性を排除することが目的であり,データの重複を減らす重要な段階です。
- 「BCNFにすれば常に関数従属性は保存される」:誤り。BCNFは決定子が常にスーパーキーであることを要求するため,分解時に元のFDを保存できない場合があり,FD保存を犠牲にすることがある。
- 「3NFとBCNFは同じ効果を持つ」:誤り。3NFは正規化の緩和版であり、特にキーに関する緩和条件によってFD保存と無損失の両立が可能になる一方、BCNFはより厳密だがFD保存を保証しないことがある。
補足コラム
- 正規形の役割整理
- 1NF:属性の原子性(繰り返しグループの排除)。
- 2NF:候補キーの部分関数従属性の排除(複合キーをもつ場合の部分依存の解消)。
- 3NF:推移的関数従属性(A→B, B→C のように主キーから別属性を経て導かれる依存)の解消を主目的とする(ただし厳密には「3NF は A→B のとき B が主属性か、A がスーパーキーであるかの条件を満たす」ことで非良好な推移依存を避ける)。
- BCNF:全ての非自明なFDについて決定子がスーパーキーであることを要求する、より厳格な形。
- 3NF合成アルゴリズムの要点
- 与えられたFD集合の最小被覆を求める。
- 各FD X→A に対してスキーマ X∪{A} を作る。
- いずれのスキーマにも元の関係の候補キーが含まれなければ、候補キーを含むスキーマを追加する。 これによりFD保存と無損失(無損失はキーを含むスキーマ追加の条件により保証)を同時に満たす。
FAQ
Q1. なぜ3NF合成で無損失が保証されるのですか?
A1. 合成アルゴリズムでキーを含むスキーマを少なくとも一つ確保することで、分解後の自然結合が元の関係を復元する性質(無損失)を満たします。自然結合による無損失性は、分解の一部スキーマが関係のキーを含むか、結合属性がキーを含む場合に成り立つという一般的な判定に基づきます。
A1. 合成アルゴリズムでキーを含むスキーマを少なくとも一つ確保することで、分解後の自然結合が元の関係を復元する性質(無損失)を満たします。自然結合による無損失性は、分解の一部スキーマが関係のキーを含むか、結合属性がキーを含む場合に成り立つという一般的な判定に基づきます。
Q2. BCNFに分解したいがFDが消える問題はどうする?
A2. BCNF分解はFD保存を失う可能性があるため、実務ではトレードオフを検討します。必要なら3NFでFD保存と無損失を優先し、性能や冗長性の観点から追加のインデックスやビューで対応することが多いです。
A2. BCNF分解はFD保存を失う可能性があるため、実務ではトレードオフを検討します。必要なら3NFでFD保存と無損失を優先し、性能や冗長性の観点から追加のインデックスやビューで対応することが多いです。
Q3. 非正規形→1NFは常に簡単にできるのですか?
A3. 構造的には1NF化(多値を別表に移すなど)は可能ですが、元のFDをすべて保持しつつ無損失で行えるかは設計次第であり「必ず存在する」とは言えません。
A3. 構造的には1NF化(多値を別表に移すなど)は可能ですが、元のFDをすべて保持しつつ無損失で行えるかは設計次第であり「必ず存在する」とは言えません。
関連キーワード: 正規化、3NF合成アルゴリズム、部分関数従属性、推移的従属性、BCNF、情報無損失分解、関数従属性保存

\ せっかくなら /
データベーススペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

