メインメニューを開く

差分

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

2,146 バイト追加, 2021年2月23日 (火) 13:42
===ボイス・コッド正規形===
関係表が'''ボイス・コッド<ref>「ボイスさんとコッドさん」であって「ボイスコッドさん」ではない。「ルンゲクッタ」と同じようなものである。</ref>正規形'''であるとは、任意の関係スキーマの部分集合\( A, B \)に対し、\( B \)が\( A \)に関数従属するならば、次の2つの少なくとも1つ(論理的OR)を満たしていることである:
 
* \( B \subset A \)
* \( A \)はスーパーキー
 
次の関係表を考える:
 
<table border="1">
<caption>\( T \)</caption>
<tr bgcolor = "bisque"><td>\( \underline{\mathrm{A}} \)</td><td>\( \underline{\mathrm{B}} \)</td><td>\( \mathrm{C} \)</td><td>\( \mathrm{D} \)</td></tr>
<tr><td>\( 1 \)</td><td>\( x \)</td><td>\( a \)</td><td>\( 2 \)</td></tr>
<tr><td>\( 1 \)</td><td>\( z \)</td><td>\( c \)</td><td>\( 3 \)</td></tr>
<tr><td>\( 2 \)</td><td>\( x \)</td><td>\( d \)</td><td>\( 1 \)</td></tr>
<tr><td>\( 2 \)</td><td>\( y \)</td><td>\( b \)</td><td>\( 1 \)</td></tr>
<tr><td>\( 2 \)</td><td>\( z \)</td><td>\( c \)</td><td>\( 4 \)</td></tr>
<tr><td>\( 3 \)</td><td>\( x \)</td><td>\( d \)</td><td>\( 4 \)</td></tr>
<tr><td>\( 3 \)</td><td>\( z \)</td><td>\( c \)</td><td>\( 5 \)</td></tr>
</table>
 
この関係表は第3正規形であるが、ボイス・コッド正規形ではない。なぜならば、\( \mathrm{B} \)は\( \mathrm{C} \)に関数従属する(\( \mathrm{C} \)列の値から\( \mathrm{B} \)列の値が一意に決まる)が、\( \{ \mathrm{C} \} \subset \{ \mathrm{B} \} \)ではなく、かつ\( \{ \mathrm{C} \} \)はスーパーキーではないからである。
 
これをボイス・コッド正規形にするためには、\( \{ \mathrm{A}, \mathrm{B} \} \)ではなく\( \{ \mathrm{A}, \mathrm{C} \} \)を主キーにすればよい。すると、第2正規形ですらなくなるため、第2正規形、第3正規形、ボイス・コッド正規形にする手続きを再帰的に行う。この手続きは有限回で終了し<ref>この記事では列数が有限の場合のみを考える。</ref>、最終的にボイス・コッド正規形が得られる。
===第4正規形===
Wikiいけめん
217

回編集