logo

第 2 正規形 (2NF)

第一正規形 (1NF) は冗長性を排除するのではなく、繰り返しグループを排除します。レコード内に同じ種類のデータの複数の列を含める代わりに (0NF または非正規化形式)、繰り返される情報を別のリレーションに削除し、それらを行として表します。これが 1NF の構成要素です。

第 2 正規形

第 2 正規形 (2NF) は、完全に機能する依存関係の概念に基づいています。 2 番目の正規形は、複合キーとの関係、つまり 2 つ以上の属性で構成される主キーとの関係に適用されます。単一属性の主キーを持つリレーションは、自動的に少なくとも 2NF になります。 2NF にないリレーションは、更新異常の影響を受ける可能性があります。第 2 正規形になるには、関係が第 1 正規形でなければならず、その関係に部分的な依存関係が含まれていてはなりません。リレーションに部分依存性がない場合、つまり、非プライム属性 (候補キーの一部ではない属性) がテーブルの候補キーの適切なサブセットに依存していない場合、リレーションは 2NF に属します。言い換えると、

第 1 正規形のリレーションで、すべての非主キー属性が完全に機能的に主キーに依存している場合、そのリレーションは第 2 正規形 (2NF) になります。



SQLでランダムに並べる

注記 - 候補キーの適切なサブセットが非プライム属性を決定する場合、それが呼び出されます。 部分的な依存関係 。の 正規化 1NF 関係から 2NF への関係には、 部分的な依存関係の削除 。部分的な依存関係が存在する場合は、部分的に依存する属性を、その行列式のコピーとともに新しいリレーションに配置することによってリレーションから削除します。以下に示す例を考えてみましょう。

例-1: 以下の表を考えてみましょう。

STUD_NO COURSE_NO COURSE_FEE 1 C1 1000 2 C2 1500 1 C4 2000 4 C3 1000 4 C1 1000 2 C5 2000>

{同じコース料金のコースが多数あることに注意してください。ここで、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_FEE は、候補キーの適切なサブセットである COURSE_NO に依存します。非プライム属性 COURSE_FEE は候補キーの適切なサブセットに依存しており、これは部分的な依存関係であるため、この関係は 2NF にはありません。上記の関係を 2NF に変換するには、テーブルを次のように 2 つのテーブルに分割する必要があります。 テーブル 1: STUD_NO、COURSE_NO テーブル 2: COURSE_NO、COURSE_FEE

   Table 1     Table 2  STUD_NO COURSE_NO COURSE_NO COURSE_FEE  1 C1 C1 1000 2 C2 C2 1500 1 C4 C3 1000 4 C3 C4 2000 4 C1 C5 2000  2 C5>

注記 - 2NF は、メモリに保存される冗長データを削減しようとします。たとえば、C1 コースを受講している学生が 100 人いる場合、100 件のレコードすべてに対して料金を 1000 として保存する必要はありません。代わりに、C1 のコース料金が 1000 であるため、2 番目のテーブルに料金を保存できます。

例-2: 関係 R (A、B、C、D ) における次の関数の依存関係を考慮します。

答え:

まず、部分的な依存関係があるかどうかを確認します。部分依存関係は、非プライム属性 (候補キーの一部ではない) が候補キーの一部のみに依存する場合に発生します。

リレーション R の候補キーは、各属性の閉包を見つけることによって決定できます。

AB はすべてのキーを決定します。

次に、部分的な依存関係を確認してみましょう。

各非プライム属性 (C および D) は、その一部である候補キー全体 (それぞれ AB および BC) に依存するため、この関係には部分的な依存関係はありません。

したがって、関係 R は、第 1 正規形 (1NF) と第 2 正規形 (2NF) の条件を満たし、推移的な依存関係を持たないため、すでに第 3 正規形 (3NF) になっています。

結論

結論として、2NF は、リレーショナル データベース内の部分的な依存関係を削除するのに役立つデータベース正規化の基本的な概念です。 2NF ルールに従うと、データベースを整理して異常を回避し、データの整合性を確保し、データの保存と取得が容易になります。