GeeksforGeeks

第1正規形(1NF)は冗長性を排除するのではなく、繰り返しグループを排除することです。

レコード内に同じ種類のデータが複数列ある代わりに(0NFまたは非正規形)、繰り返し情報を別の関係に取り除き、それらを行として表現するのです。 これが1NFを構成するものである。

第2正規形(2NF):
第2正規形(2NF)は完全機能従属性の概念に基づいている。 第2正規形は複合キーを持つ関係、つまり2つ以上の属性からなる主キーを持つ関係に適用される。 単一属性の主キーを持つ関係は、自動的に少なくとも2NFになる。 2NFでない関係は、更新の異常さに悩まされるかもしれない。

第2正規形になるためには、関係が第1正規形になり、関係が部分依存関係を含んでいてはならない。 すなわち、非首位属性(どの候補キーにも属さない属性)がテーブルのどの候補キーの適切な部分集合にも依存しない場合、関係は2NFにある。

言い換えれば、

第1正規形である関係で、すべての非主キー属性が主キーに完全に機能的に依存しているなら、その関係は第2正規形(2NF)であると言えるでしょう。

注意 – 候補キーの適切なサブセットが非主属性を決定する場合、それは部分依存と呼ばれる。

1NF関係の2NFへの正規化には、部分依存の除去を含んでいる。 部分依存が存在する場合、部分依存属性をその行列式のコピーと共に新しい関係に配置することで、関係から削除する。

以下に示す例を考えてみよう。

例1:
以下のような表を考えてみる。

ここで、
COURSE_FEEは単独ではCOURSE_NOやSTUD_NOの値を決定できません;
COURSE_FEEとSTUD_NOを一緒にしてもCOURSE_NOの値を決定できません;
COURSE_FEEとCOURSE_NOを一緒にしてSTUD_NOの値を決定できません;
したがって、
COURSE_FEEは唯一の候補キー{STUD_NO, COURSE_NO}に属さないので、非主属性となる;
しかし、COURSE_NO -> COURSE_FEE、すなわち、
COURSE_NO -> COURSE_FEEは、
STUD_NOに属さないので、
STUD_NOに属さない。e., COURSE_FEEはCOURSE_NOに依存しており、これは候補キーの適切な部分集合である。 非主属性COURSE_FEEは候補キーの適切な部分集合に依存しており、これは部分依存であるため、この関係は2NFにない。

上記の関係を2NFに変換するには、
テーブルを以下の2つのテーブルに分割する必要がある:
Table 1: STUD_NO, COURSE_NO
Table 2: COURSE_NO, COURSE_FEE

 Table 1 Table 2STUD_NO COURSE_NO COURSE_NO COURSE_FEE 1 C1 C1 10002 C2 C2 15001 C4 C3 10004 C3 C4 20004 C1 C5 2000 2 C5 

注意 – 2NFではメモリに格納される重複データが少なくなろうとする。 例えば、C1コースを受講する学生が100人いる場合、100レコードすべてに対して受講料を1000として保存する必要はなく、一旦、C1の受講料が1000であるとして2番目のテーブルに保存することができます。

例2:
関係R (A, B, C, D )における次の機能依存を考える

AB -> C BC -> D 

上記の関係において、ABは唯一の候補キーであり、部分依存はない、すなわちABの適切な部分集合はいかなる非素性も決定しない

Article Tags :

DBMS
実践タグ:

コメントを残す

メールアドレスが公開されることはありません。