正規化プロセスは主に、データベースの論理構造における挿入異常、削除異常、および高度な冗長性の欠陥を克服することを目的としています。データベースの正規化により、データベース設計者は組織内の現在のデータ構造をより深く理解できるようになり、最終的には一連のデータ エンティティが得られます。データベースの標準化により、データベース テーブルの設計を通じてデータベースの冗長性を効果的に削減できます。
#データベース正規化プロセス
リレーショナル データベースの標準化は、単に標準化です。
標準化の必要性:
プロジェクトのニーズに応じて、対応するデータベース テーブルを作成してデータを完成させます。ストレージのプロジェクト。これはプロジェクトを遂行するための固定プロセスとなっていますが、実際にビジネス ニーズに対応し始めると、テーブルの設定に無理があることがわかり、データの格納の繰り返し、挿入例外、削除例外、更新例外などの問題が発生します。このとき、テーブルを再計画する必要がありますが、時間、労力、財源の無駄であり、非常に不経済ですので、標準化が非常に必要ですので、今日はテーブルを標準化する方法を教えます。 標準化されたデータベース手法を教える前に、まず知識を紹介しましょう:重要な知識ポイント関数の依存関係
##関数の依存関係の定義:
R(U) が属性セットのサブセット、X と Y が U のサブセットであると仮定します。 R(U) 上の考えられる関係 r について、X 上の属性値が等しくても Y 上の属性値が等しくない 2 つのタプルが r 内に存在し得ない場合、X 関数は次のことを決定するといいます。 Y または Y が X に機能的に依存している場合、X->Y と表されます。 定義は少しわかりにくいかもしれません。ここで簡単に説明します: 関数の依存関係は、2 つのコレクション間のマッピング関係を表します。このマッピング関係は関数と同じです。たとえば、y = x^2、ここで x の場合、1 つの x は 1 つの y 値に対応しますが、1 つの x が複数の y 値に対応する状況は存在しないため、y 関数は x に依存すると言えます。 y については、1 つの y 値が複数の x 値に対応する状況が存在するため、x は機能的に y に依存しません。これが関数依存です。
次に、いくつかの特別な関数の依存関係を紹介します。
完全な関数の依存関係定義:
If X-> ;Y,そして、X の適切なサブセット X' が存在しない場合、X'->Y の場合、X->Y の関数依存は完全な関数依存に属すると言います。
簡単な説明: 関数 z = x y、z の場合: z 関数は x と y に依存しますが、z は x のみにも y にものみ依存しません。つまり、z 関数は x 間のこの依存関係に依存します。そして y は完全な関数依存です。
部分的な関数の依存関係:定義:
X->Y であるが、Y が X に完全に依存していない場合、この依存関係は次のようになります。部分的完全依存の場合に呼び出されます。つまり、関数 z = x 0y は とみなすことができます。つまり、z 関数は x と y に依存しますが、z は x のみに依存します。この場合、これは部分関数依存です。
推移関数の依存関係:定義:
X->Y、Y ->Z で、真でない場合、Y-> ; X も真ではありません。この場合、Z 伝達関数は X に依存すると言えます。
これは比較的単純です。関数グループ z = x^2, x = 2y は、z = 4y ^2 に簡略化できます。簡単にわかります。z は x に依存する関数であり、x は x に依存します。 y で z ->x が成り立たない場合、これは伝達関数の依存関係です。
重要な知識ポイント 2-----キー
候補キー: 属性 (フィールド) または属性グループ (複数のフィールド) は、リレーショナル スキーマ (テーブル) 内の他の属性 (フィールド) によって完全に決定できます。つまり、他の属性 (フィールド) は、この属性 (フィールド) または属性グループ (複数のフィールド) に完全に依存します。
主キー: 候補キーが複数ある場合は、そのうちの 1 つを主キーとして選択します。リレーションシップ スキーマ (テーブル) の各タプル (行) で主キーとして選択された属性または属性グループの値は繰り返すことができず、値は null です。
主属性: 候補キーの属性は主属性と呼ばれます。候補キーが複数の属性で構成されている場合、これらの属性グループの各属性がプライマリ属性になります。
非プライマリ属性: どのキーにも含まれていない属性は、非プライマリ属性と呼ばれます。
外部キー: 属性または属性グループは、現在のリレーショナル スキーマ (テーブル) の主キーではありませんが、別のリレーショナル スキーマ (テーブル) の主キーとして機能します。または属性グループは外部キーと呼ばれます。プロパティ グループは外部キーです。 上記の基本的な知識ポイントを紹介した後、データベース テーブルの標準化プロセスを学び始めましょう:
テーブルを標準化したい場合は、まずテーブルが標準化されているかどうかを測定するための標準が必要です。標準化された。この標準は----
パラダイムです。 6 つのパラダイムがあります: 第 1 正規形 (1NF)、第 2 正規形 (2NF)、第 3 正規形 (3NF)、BC 正規形 (BCNF)、第 4 正規形 (4NF)、および第 5 正規形 (5NF) 。 上記の 6 つのパラダイムでは、通常の状況ではテーブルを BCNF に標準化する必要がありますが、これは完璧ですが、実際のプロジェクトでは 3NF に到達するだけで十分です。 次に、最初の 4 つのパラダイムに焦点を当てます。 最初のパラダイム: リレーショナル モデル R のすべての属性は、分離できないデータ項目です。 簡単に言えば、テーブルを作成できさえすれば、そのテーブルはすでに第一正規形を満たしています。たとえば、student テーブル (student_id、course_id、student_name、age、sex、grade、sdept、sdept_director) このテーブルでは、成績項目が Student_id、course_id によって共同で決定されることは明らかなので、これら 2 つの項目を組み合わせる必要があります。主キーとして。 第 2 正規形: 第 1 正規形を満たすことに基づいて、非主属性を満たすかどうかは R の主キーに完全に依存します。 これには、前のコンテンツを使用して、非主属性が主キーに完全に依存しているかどうかを判断する必要があります。満足しないと重くなるよ
テーブルの構造を変更します。たとえば、学生テーブル (student_id、course_id、student_name、年齢、性別、成績、sdept_id、sdept_director) は、student_id と course_id の組み合わせを主キーとして使用しますが、名前、年齢、性別などの他の属性については、属性student_idに依存しているため、主キーとしてstudent_idとcourse_idに部分的に依存しています。これは第 2 正規形の定義を満たしていないため、成績を取り出して、この大きなテーブルを次の 2 つの小さなテーブルに分割する必要があります:student(student_id, name, age, sex, sdept_id, sdept_director)、student_score(student_id, course_id , Grade); 第 3 正規形: 第 2 正規形が満たされる場合、推移的な依存関係を削除します。 例: 学生テーブル (student_id、student_name、年齢、性別、sdept、sdept_director)、明らかに各専攻によって専門ディレクターが決定されるため、sdept_director の転送は Student_id に依存するため、分割する必要があります。テーブル Student (student_id、student_name、age、sex) と sdept (sdept_id、sdept_name、sdept_director) は、第 3 正規形を満たします。 BC パラダイム: 3 番目のパラダイムを満たす場合、さらに 3 つのポイントを満たす必要があります: 1. すべての主要な属性は他の属性に完全に依存しており、それ自身の属性が含まれています。候補キー; 前の 3 つのパラダイムはすべて、非プライマリ属性にさまざまな制約を課します。BC パラダイムはそれらに基づいており、プライマリ属性間の部分的な依存関係を解決するためにプライマリ属性を制約します。主属性が非主属性に完全に依存しているのは問題ありません。
私たちの学生テーブルstudent (student_id、student_name、年齢、性別)、主キーはstudent_idなので、主な属性はstudent_idです。学生の名前が繰り返される可能性があるため、明らかに最初の2つは満たされており、student_id間に機能的な依存関係はありません。とstudent_name の関係があるため、student テーブルは BC 標準形式を満たします。 上記はデータベースの正規化プロセスです。 関連する推奨事項: 「mysql チュートリアル 」
2. すべての非プライマリ属性は各候補キーに完全に依存します;
3. 機能的に 1 つのグループに完全に依存する属性はありません。主な属性。
以上が正規化プロセスはデータベースの論理構造において主に何を扱うのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。