DBの正規形のうち,第3正規形の教科書の定義は以下のようになっている.
リレーションスキーマ RS において関数属性X→A が成り立つとき、以下のどちらかの条件を満たす
1.X は RS の超キーである
2.A が素属性である
XはRSの超キー(スーパーキー)であるというのはちょっと考えてみればそのとおりだと納得する.
ただ,そうすると2の方の条件はなんだろう,と考えるが,これがまったくもってわからない.
素属性の定義は
候補キーの構成属性
となっているけど,ここだけ構成属性という言葉で表現されていて,いまいちよくわからない.
参考になる資料がないか探してみるも,みんなこの部分は教科書を映して書いているだけで,
著者が独自の説明をしているものが全く見当たらない.
そんな中,名古屋大学の先生が書いた資料が唯一この条件について述べられていて,
すごくわかりやすかった..
http://www.db.itc.nagoya-u.ac.jp/~ishikawa/lectures/db10/08.pdf
例の部分を引用させていただいた.
例:{商品番号,販売地域,販売担当者}(商品番号,販売地域が候補キー)
– 関数従属性:商品番号, 販売地域 → 販売担当者, 販売担当者 → 販売地域
以上の時に,候補キーの構成要素である販売地域に対して,関数従属していることがわかる.
うーん,なるほど.確かにこの時に成り立つ.
さらに,この条件を厳しくしたものがボイスコット正規形となる.
結構悩んだけど,復習になってよかった.