データベースの正規形とは何ですか?例を挙げてもらえますか?[closed] 質問する

データベースの正規形とは何ですか?例を挙げてもらえますか?[closed] 質問する

リレーショナル データベースの設計には、データベースの正規化、または単に正規化という概念があります。これは、列 (​​属性) とテーブル (リレーション) を整理してデータの冗長性を減らし、データの整合性を向上させるプロセスです。ウィキペディア

1NF、2NF、3NF、および 3.5NF (Boyce-Codd BCNF) の意味についての例に基づいた説明は何ですか?

ベストアンサー1

1NF は最も基本的な正規形です。テーブル内の各セルには 1 つの情報のみが含まれる必要があり、重複する行は存在できません。

2NF と 3NF は、すべて主キーに依存します。主キーは複数の列で構成できることを思い出してください。Chris は次のように回答しています。

データはキー[1NF]、キー全体[2NF]、キーのみ[3NF]に依存します(だから助けてくださいコッド)。

2NF

ある学期に受講したコースを含むテーブルがあり、次のようなデータがあるとします。

|-----Primary Key----|               uh oh |
                                           V
CourseID | SemesterID | #Places  | Course Name  |
------------------------------------------------|
IT101    |   2009-1   | 100      | Programming  |
IT101    |   2009-2   | 100      | Programming  |
IT102    |   2009-1   | 200      | Databases    |
IT102    |   2010-1   | 150      | Databases    |
IT103    |   2009-2   | 120      | Web Design   |

これは2NF ではありません。4 列目はキー全体ではなく、その一部だけに依存しているからです。コース名はコースの ID に依存しますが、どの学期に受講するかとは関係ありません。したがって、ご覧のとおり、重複した情報があります。複数の行で、IT101 はプログラミング、IT102 はデータベースであることがわかります。そこで、コース名を別のテーブルに移動して、CourseID がキー全体になるように修正します。

Primary Key |

CourseID    |  Course Name |
---------------------------|
IT101       | Programming  |
IT102       | Databases    |
IT103       | Web Design   |

冗長性なし!

3NF

さて、コースの講師の名前と講師に関する詳細も RDBMS に追加するとします。

|-----Primary Key----|                           uh oh |
                                                       V
Course  |  Semester  |  #Places   |  TeacherID  | TeacherName  |
---------------------------------------------------------------|
IT101   |   2009-1   |  100       |  332        |  Mr Jones    |
IT101   |   2009-2   |  100       |  332        |  Mr Jones    |
IT102   |   2009-1   |  200       |  495        |  Mr Bentley  |
IT102   |   2010-1   |  150       |  332        |  Mr Jones    |
IT103   |   2009-2   |  120       |  242        |  Mrs Smith   |

これで、TeacherName が TeacherID に依存していることは明らかになったはずですが、TeacherID は主キーの一部ではありません。つまり、これは3NF ではありません。これを修正するには、2NF で行ったのとほぼ同じことを行います。つまり、このテーブルから TeacherName フィールドを取り出し、TeacherID をキーとする独自のテーブルに配置します。

 Primary Key |

 TeacherID   | TeacherName  |
 ---------------------------|
 332         |  Mr Jones    |
 495         |  Mr Bentley  |
 242         |  Mrs Smith   |

冗長性なし!!

覚えておくべき重要なことは、何かが 1NF にない場合は、2NF や 3NF にも含まれないということです。したがって、追加の正規形にはそれぞれ、下位の正規形にあったすべての条件に加えて、いくつかの追加条件が必要であり、これらはすべて満たされる必要があります。

おすすめ記事