ホームページ  >  記事  >  データベース  >  データベースの第一正規形、第二正規形、第三正規形とは何ですか?

データベースの第一正規形、第二正規形、第三正規形とは何ですか?

一个新手
一个新手オリジナル
2017-09-09 14:56:163613ブラウズ

パラダイム: 英語名は Normal Form です。パラダイムは、1970 年代にリレーショナル データベース モデルを提案した後、英国の E.F. コッドによって要約され、リレーショナル データベース理論の基礎でもあります。データベースの設計、構築プロセス中に従うべきルールとガイドライン。現在追跡できるパラダイムは、順に 1NF、2NF、3NF、BCNF、4NF、5NF、DKNF、6NF の 8 つです。通常、最初の 3 つの正規形、つまり、第 1 正規形 (1NF)、第 2 正規形 (2NF)、および第 3 正規形 (3NF) のみが使用されます。以下に、これら 3 つのパラダイムを簡単に紹介します。
◆ 第一正規形 (1NF): 列の原子性、つまり列を他の列に分割できないことを強調します。
次のようなテーブルを考えてみましょう: [連絡先] (名前、性別、電話番号)
実際のシナリオで、連絡先に自宅の電話番号と会社の電話番号がある場合、このテーブル構造の設計は 1NF に達しません。 1NF に準拠するには、列 (​​電話番号)、つまり [連絡先担当者] (名前、性別、自宅の電話番号、会社の電話番号) を分割するだけで済みます。 1NF は区別しやすいですが、2NF と 3NF は混同されやすいです。
◆ 第 2 正規形 (2NF): まず、これは 1NF であり、これには 2 つの部分が含まれます。まず、テーブルには主キーが必要です。次に、主キーに含まれない列は完全に主キーに依存する必要があります。主キーの一部のみに依存することはできません。
注文詳細テーブル: [OrderDetail] (OrderID、ProductID、UnitPrice、Discount、Quantity、ProductName) を考えてみましょう。
1 つの注文で複数の商品を注文できることがわかっているため、主キーとしては単一の OrderID だけでは十分ではありません。主キーは (OrderID, ProductID) である必要があります。明らかに、Discount と Quantity は主キー (OderID、ProductID) に完全に依存していますが、UnitPrice と ProductName は ProductID のみに依存しています。したがって、OrderDetail テーブルは 2NF に準拠していません。 2NF に準拠していない設計では、データが冗長になる傾向があります。
[OrderDetail] テーブルを [OrderDetail] (OrderID、ProductID、Discount、Quantity) と [Product] (ProductID、UnitPrice、ProductName) に分割して、元の注文テーブル内の UnitPrice と ProductName の複数の繰り返しを排除できます。
◆ 第 3 正規形 (3NF): まず、2NF です。さらに、主キー以外の列は主キーに直接依存する必要があり、推移的な依存関係は存在できません。つまり、非主キー列 A は非主キー列 B に依存し、非主キー列 B は主キーに依存するということは存在できません。
主キーが (OrderID) である注文テーブル [Order] (OrderID、OrderDate、CustomerID、CustomerName、CustomerAddr、CustomerCity) を考えます。
このうち、OrderDate、CustomerID、CustomerName、CustomerAddr、CustomerCity などの非主キー列は完全に主キー (OrderID) に依存しているため、2NF に準拠しています。ただし、問題は、CustomerName、CustomerAddr、および CustomerCity が主キーに直接依存するのではなく、CustomerID (非主キー列) に直接依存するため、送信を通じて主キーに依存するため、3NF に準拠していないことです。
[Order] を [Order] (OrderID、OrderDate、CustomerID) と [Customer] (CustomerID、CustomerName、CustomerAddr、CustomerCity) に分割することで 3NF を達成します。
第 2 正規形 (2NF) と第 3 正規形 (3NF) の概念は混同されやすいため、これらを区別するための重要なポイントは 2NF: 非主キー列が主キーに完全に依存するか、主キーの一部に依存するかです。主キー; 3NF: 非主キー列 主キーに直接依存しているのか、それとも非主キー列に直接依存しているのか。

パラダイム: 英語名は Normal Form です。パラダイムは、1970 年代にリレーショナル データベース モデルを提案した後、英国の E.F. コッドによって要約され、リレーショナル データベース理論の基礎でもあります。データベースの設計、構築プロセス中に従うべきルールとガイドライン。現在追跡できるパラダイムは、順に 1NF、2NF、3NF、BCNF、4NF、5NF、DKNF、6NF の 8 つです。通常、最初の 3 つの正規形、つまり、第 1 正規形 (1NF)、第 2 正規形 (2NF)、および第 3 正規形 (3NF) のみが使用されます。以下に、これら 3 つのパラダイムを簡単に紹介します。
◆ 第一正規形 (1NF): 列の原子性、つまり列を他の列に分割できないことを強調します。
次のようなテーブルを考えてみましょう: [連絡先] (名前、性別、電話番号)
実際のシナリオで、連絡先に自宅の電話番号と会社の電話番号がある場合、このテーブル構造の設計は 1NF に達しません。 1NF に準拠するには、列 (​​電話番号)、つまり [連絡先担当者] (名前、性別、自宅の電話番号、会社の電話番号) を分割するだけで済みます。 1NF は区別しやすいですが、2NF と 3NF は混同されやすいです。
◆ 第 2 正規形 (2NF): まず、これは 1NF であり、これには 2 つの部分が含まれます。まず、テーブルには主キーが必要です。次に、主キーに含まれない列は完全に主キーに依存する必要があります。主キーの一部のみに依存することはできません。
注文詳細テーブル: [OrderDetail] (OrderID、ProductID、UnitPrice、Discount、Quantity、ProductName) を考えてみましょう。
1 つの注文で複数の商品を注文できることがわかっているため、主キーとしては単一の OrderID だけでは十分ではありません。主キーは (OrderID, ProductID) である必要があります。明らかに、Discount と Quantity は主キー (OderID、ProductID) に完全に依存していますが、UnitPrice と ProductName は ProductID のみに依存しています。したがって、OrderDetail テーブルは 2NF に準拠していません。 2NF に準拠していない設計では、データが冗長になる傾向があります。
[OrderDetail] テーブルを [OrderDetail] (OrderID、ProductID、Discount、Quantity) と [Product] (ProductID、UnitPrice、ProductName) に分割して、元の注文テーブル内の UnitPrice と ProductName の複数の繰り返しを排除できます。
◆ 第 3 正規形 (3NF): まず、2NF です。さらに、主キー以外の列は主キーに直接依存する必要があり、推移的な依存関係は存在できません。つまり、非主キー列 A は非主キー列 B に依存し、非主キー列 B は主キーに依存するということは存在できません。
主キーが (OrderID) である注文テーブル [Order] (OrderID、OrderDate、CustomerID、CustomerName、CustomerAddr、CustomerCity) を考えます。
このうち、OrderDate、CustomerID、CustomerName、CustomerAddr、CustomerCity などの非主キー列は完全に主キー (OrderID) に依存しているため、2NF に準拠しています。ただし、問題は、CustomerName、CustomerAddr、および CustomerCity が主キーに直接依存するのではなく、CustomerID (非主キー列) に直接依存するため、送信を通じて主キーに依存するため、3NF に準拠していないことです。
[Order] を [Order] (OrderID、OrderDate、CustomerID) と [Customer] (CustomerID、CustomerName、CustomerAddr、CustomerCity) に分割することで 3NF を達成します。
第 2 正規形 (2NF) と第 3 正規形 (3NF) の概念は混同されやすいため、これらを区別するための重要なポイントは 2NF: 非主キー列が主キーに完全に依存するか、主キーの一部に依存するかです。主キー; 3NF: 非主キー列 主キーに直接依存しているのか、それとも非主キー列に直接依存しているのか。

以上がデータベースの第一正規形、第二正規形、第三正規形とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。