参考図書の所でも書いているのだが,
業務別データベース設計のためのデータモデリング入門
⇒モデリングの入門用。この本の正規化論は試験の参考にしない方が良い。
理由はひとつ
参考:capsctrl:BC正規化
説明が足りない&内容があやしいと思ったからだ。
※この本で使われている「識別子」という単語はP42で,識別子=候補キーという注意書きがあるので,以下は,試験にあわせて候補キーと呼ぶ。
具体的に言うと,
関係 E1(d1,d2,d3,d4) において
第2正規形の条件として,d1→d2とd2→d1を認めていない点である。
第2正規形の条件は,「すべての非キー属性が候補キーに完全関数従属すること」であり,候補キー間での関数従属は第2正規形の条件とは関係ない。
さて,d1→d2とd2→d1というのは,候補キーを構成する属性間の関数従属であり,第2正規形の条件とは関係ないように見える。
だからおかしい!!と,短絡的に思うかもしれないが,
違和感を感じないだろうか?
ここで冷静に・・・排除されている条件を再度確認しよう。
{d1,d2} → {d3,d4} の条件下において
d1 → d2 が,成立してはならない。と,なっている。
成立した場合を考えると,関数従属は d1 → {d1,d2} → {d3,d4} であって,{d1,d2}はスーパーキーであるが候補キーではない。そもそも,d2を候補キーに含めている事が間違いとなる。
つまりは,「候補キーとしているものが候補キーでなくなるから排除しなければならない。」と,いうことと思われるが,それならば『第1正規形の条件で既に排除』されていなければならない。
書いていて混乱する。。。w
{d1,d2}が候補キーで,d1 → d2が成立して良い第1正規形とは。。。?
何なのだ。。。。あり得るのか???私は,あり得ないのではと思うのだが。。。
有識者のご意見をいただきたい。