項目aの値が決まれば項目bの値が一意に定まることを,a→bで表す。
例えば,社員番号が決まれば社員名が一意に定まるという表現は,社員番号→社員名である。
この表記法に基づいて,図の関係が成立している項目a〜jを,関係データベース上の三つのテーブルで定義する組合せとして,適切なものはどれか。
正答2
解説
正解は2です。
関数従属性の図から、正規化した3つのテーブルの組合せを選ぶ問題です。
図では、aからb、c、d、eへ矢印が出ており、aが決まればb〜eが一意に決まります。
bからはf、g、hへ、eからはi、jへ矢印が出ています。
つまり、aがb〜eを、bがf〜hを、eがiとjをそれぞれ一意に決める関数従属があります。
矢印の出発点(決定項)ごとにテーブルを作り、決定項を主キーにすると第3正規形になります。
【選択肢別解説】
1:× テーブル2(b, c, d, e)では、cとdはbではなくaに従属しており、この表の中に決定項がありません。
テーブル1(a)だけでは、aとb〜eの対応も失われます。
テーブル3はbに従属するf〜hとeに従属するi、jが混在しています。
2:○ テーブル1はaを主キーとしてb〜eを持ちます。
テーブル2はbを主キーとしてf、g、hを、テーブル3はeを主キーとしてi、jを持ちます。
b、eがテーブル1にも残るので、表どうしを結合して元の関係を復元できます。
3:× テーブル1(a, b, f, g, h)では、f、g、hが主キーaではなくbに従属する推移的関数従属が残ります。
テーブル2(c, d)にはaがないので、どのaに対応する値か分かりません。
4:× テーブル1(a, c, d)にbとeが含まれていません。
どのaにどのb、eが対応するかを表せず、aがbとeを決めるという関係が失われます。
【ポイント】
第3正規形では、主キー以外の項目が主キーだけに直接従属するように表を分けます。
分割した表に元の表の結合に使う項目を残すと、情報を失わずに分解できます。