属性aの値が決まれば属性bの値が一意に定まることを,a→bで表す。
例えば,社員番号が決まれば社員名が一意に定まるということの表現は,社員番号→社員名である。
この表記法に基づいて,図の関係が成立している属性a〜jを,関係データベース上の三つのテーブルで定義する組合せとして,適切なものはどれか。
正答2
解説
正解は2です。
関数従属の図から、正規化されたテーブルの組合せを選ぶ問題です。
図では、aからb、c、d、eへ矢印が出ており、aが決まればb〜eが一意に定まります。
さらにbからf、g、hへ、eからi、jへ矢印が出ています。
そのため、f〜jはaに推移的に従属しています。
【選択肢別解説】
1:× テーブル1がaだけで、テーブル2とテーブル3には共通する列がありません。
aとb〜eの対応関係も、bとf〜hの対応関係も失われてしまいます。
2:○ aを主キーにb〜eを持つ表、bを主キーにf〜hを持つ表、eを主キーにi、jを持つ表に分けています。
推移的従属が解消され、bとeを外部キーとして表どうしを結び付けられるので、第3正規形になります。
3:× c、dだけの表では、どのaにどのc、dが対応するかが分かりません。
また、テーブル1でf〜hがbを通じてaに推移的に従属したままです。
4:× テーブル1にbとeがないため、aとb、aとeの対応関係が失われます。
テーブル2とテーブル3をテーブル1と結び付けられません。
【ポイント】
推移的従属は、間に入る属性(ここではbとe)を主キーとする別の表に切り出して解消します。
切り出し元の表には、その属性を外部キーとして残すことが大切です。