差分

ナビゲーションに移動 検索に移動

利用者:Nayuta Ito/プロジェクト・SQL

1,419 バイト追加, 2021年2月22日 (月) 13:18
たとえば、関係スキーマが\( \underline{X}, \underline{Y}, F, G, H \)であり、各タプルが\( \{ x_i, y_j, f(y_j), g(x_i, y_j), h(x_i, y_j) \} \)で与えられるような関係表が存在するとき、\( F \)が\( \{ Y \} \)に関数従属するため第2正規形ではない。
これを第2正規形にするためには、この関係表を\( \underline{X}, \underline{Y}, G, H \)と\( \underline{Y}, F \)に分割すればよい。現実における会社で発生しうる例であるが、に分割すればよい。 次の例を考えよう: 全ての数学者と全ての論文にそれぞれ自然数の通し番号を与える。番号\( X i \)が注文番号でが与えられた数学者を数学者\( Y i \)が商品番号に対応するとき、前者は注文された商品の一覧、後者は注文そのものの一覧に対応する<ref>データベースでは「商品の仕入・製造・販売のうち少なくとも1個を行う会社」における例を使用することが多い。</ref>。、番号\( j \)が与えられた論文を論文\( j \)と呼ぶことにする。 関係スキーマが\( \underline{\mathrm{Mathematician}}, \underline{\mathrm{Paper}}, \mathrm{Role}, \mathrm{Length} \)であるような関係表を考える。また、\( \{ (\mathrm{Mathematician}, i), (\mathrm{Paper}, j), (\mathrm{Role}, s), (\mathrm{Length}, t), \} \)がこの関係表のタプルであるとき、次のような条件を満たしているとする: * 数学者\( i \)は論文\( j \)の筆者である。* \( s \)は数学者\( i \)の論文\( j \)での役割を示す(英語などで書かれた)文字列である。* \( t \)は論文\( j \)のページ数である。 このとき、この関係表は第2正規形ではない。なぜなら、\( \mathrm{Length} \)は一元集合\( \mathrm{Paper} \)に関数従属するからである。日常の言葉で言えば、「論文のページ数」は「数学者と論文の組」ではなく論文そのものに対する属性だからである。 これを第2正規形にするには、\( \underline{\mathrm{Mathematician}}, \underline{\mathrm{Paper}}, \mathrm{Role}, \mathrm{Length} \)を\( \underline{\mathrm{Mathematician}}, \underline{\mathrm{Paper}}, \mathrm{Role} \)と\( \underline{\mathrm{Paper}}, \mathrm{Length} \)の2つの関係表に分割すればよい。逆に、この2つの表を1つに戻すためには、\( \mathrm{Paper} \)の値、すなわち論文の番号が同じタプル同士を「結合させて」元の表のタプルを得ればよい。この操作は自然結合と呼ばれるが、それについては後で述べる。
===第3正規形===
Wikiいけめん
217

回編集

案内メニュー