logo

DBMS の正規形

正規化 を最小化するプロセスです 冗長性 関係または一連の関係から。関係に冗長性があると、挿入、削除、更新の異常が発生する可能性があります。したがって、関係の冗長性を最小限に抑えるのに役立ちます。 標準形 データベーステーブルの冗長性を排除または削減するために使用されます。

Ranjan Hero による DBMS の正規化

データベース管理システム (DBMS) では、標準形式は、データベースの設計が効率的で組織的であり、データ異常がないことを保証するのに役立つ一連のガイドラインです。正規化にはいくつかのレベルがあり、それぞれに正規形式と呼ばれる独自のガイドライン セットがあります。



DBMSの正規形に関する注意点

  • 第一正規形 (1NF): これは正規化の最も基本的なレベルです。 1NF では、テーブルの各セルには 1 つの値のみが含まれ、各列には一意の名前が必要です。第一正規形は、重複データを排除し、クエリを簡素化するのに役立ちます。
  • 第 2 正規形 (2NF): 2NF は、各非キー属性が主キーに依存することを要求することで、冗長なデータを排除します。これは、各列が他の列ではなく、主キーに直接関連付けられる必要があることを意味します。
  • 第 3 正規形 (3NF): 3NF は、すべての非キー属性が互いに独立していることを要求することにより、2NF を基礎に構築されています。これは、各列が同じテーブル内の他の列ではなく、主キーに直接関連付けられる必要があることを意味します。
  • ボイス・コッド正規形 (BCNF): BCNF は、テーブル内の各行列式が候補キーであることを保証する 3NF のより厳密な形式です。言い換えれば、BCNF は、各非キー属性が候補キーのみに依存することを保証します。
  • 第 4 正規形 (4NF): 4NF は、テーブルに複数値の依存関係が含まれないようにする BCNF をさらに改良したものです。
  • 第 5 正規形 (5NF): 5NF は最高レベルの正規化であり、テーブルをより小さなテーブルに分解してデータの冗長性を除去し、データの整合性を向上させます。

標準形式は、データの冗長性を減らし、データの一貫性を高め、データベースのパフォーマンスを向上させるのに役立ちます。ただし、正規化のレベルが高くなると、データベースの設計やクエリがより複雑になる可能性があります。データベースを設計するときは、正規化と実用性のバランスを取ることが重要です。

正規形の利点

  • データの冗長性の削減: 正規化により、テーブル内の重複データが排除され、必要なストレージ容量が削減され、データベースの効率が向上します。
  • データの一貫性の向上: 正規化により、データが一貫性のある組織的な方法で保存されるようになり、データの不整合やエラーのリスクが軽減されます。
  • 簡素化されたデータベース設計: 正規化は、テーブルとデータの関係を整理するためのガイドラインを提供し、データベースの設計と保守を容易にします。
  • クエリのパフォーマンスの向上: 通常、正規化されたテーブルはデータの検索と取得が容易になり、クエリのパフォーマンスが向上します。
  • データベースのメンテナンスが簡単になります: 正規化により、データベースがより小さく管理しやすいテーブルに分割されるため、データベースの複雑さが軽減され、データの追加、変更、削除が容易になります。

全体として、DBMS で標準形式を使用すると、データ品質が向上し、データベースの効率が向上し、データベースの設計とメンテナンスが簡素化されます。

第一正規形

リレーションに複合属性または多値属性が含まれる場合、そのリレーションは第一正規形に違反します。また、リレーションに複合属性または多値属性が含まれない場合、リレーションは第一正規形になります。関係内のすべての属性が次の場合、その関係は第一正規形になります。 単一値の属性



  • 例 1 – 複数の値の属性 STUD_PHONE があるため、テーブル 1 のリレーション STUDENT は 1NF にありません。 1NF への分解を表 2 に示します。
例

  • 例 2 –
ID Name Courses ------------------ 1 A c1, c2 2 E c3 3 M C2, c3>
  • 上の表では、Course は複数値の属性であるため、1NF には含まれません。複数値の属性がないため、以下のテーブルは 1NF にあります。
ID Name Course ------------------ 1 A c1 1 A c2 2 E c3 3 M c2 3 M c3>

第 2 正規形

第 2 正規形になるには、関係が第 1 正規形である必要があり、関係に部分的な依存関係が含まれていてはなりません。次の場合、リレーションは 2NF にあります。 部分的な依存関係はありません。 つまり 非プライム属性 (候補キーの一部ではない属性) は、テーブルの候補キーの適切なサブセットに依存しません。 部分的な依存関係 – 候補キーの適切なサブセットが非プライム属性を決定する場合、それは部分依存関係と呼ばれます。

jvm
  • 例 1 – 以下の表 3 について考えてみましょう。
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>
  • 注記: 2NF は、メモリに保存される冗長データを削減しようとします。たとえば、C1 コースを受講する学生が 100 人いる場合、100 件のレコードすべてに対して料金を 1000 として保存する必要はありません。代わりに、C1 のコース料金が 1000 であるため、2 番目のテーブルに料金を保存できれば済みます。
  • 例 2 – 関係 R (A、B、C、D) における次の関数の依存関係を考慮します。
AB ->C [A と B が一緒になって C を決定します] BC -> D [B と C が一緒になって D を決定します]>>

上記の関係では、AB が唯一の候補キーであり、部分的な依存関係はありません。つまり、AB の適切なサブセットは非素数属性を決定しません。



X is a super key. Y is a prime attribute (each element of Y is part of some candidate key).>

例 1: 表 4 に示す STUDENT の関係では、FD セット: {STUD_NO -> STUD_NAME, STUD_NO -> STUD_STATE, STUD_STATE -> STUD_COUNTRY, STUD_NO -> STUD_AGE}

候補キー: {STUD_NO}

表 4 のこの関係では、STUD_NO -> STUD_STATE および STUD_STATE -> STUD_COUNTRY が真になります。

したがって、STUD_COUNTRY は STUD_NO に推移的に依存します。これは第 3 正規形に違反します。

第 3 正規形に変換するには、リレーション STUDENT (STUD_NO, STUD_NAME, STUD_PHONE, STUD_STATE, STUD_COUNTRY_STUD_AGE) を次のように分解します。 STUDENT (STUD_NO, STUD_NAME, STUD_PHONE, STUD_STATE, STUD_AGE) STATE_COUNTRY (STATE, COUNTRY)

関係 R(A、B、C、D、E) A -> BC、CD -> E、B -> D、E -> A を検討します。上記の関係で考えられるすべての候補キーは {A、E、CD、BC} です。すべての属性は、すべての関数の依存関係が素数の右側にあります。

insキー

例 2: FD を {BC->D, AC->BE, B->E} として設定した関係 R(A,B,C,D,E) の最高正規形を見つけます。

ステップ1: ご覧のとおり、(AC)+ ={A,C,B,E,D} ですが、そのサブセットのどれもリレーションのすべての属性を決定できないため、AC が候補キーになります。 A または C はリレーションの他の属性から導出できないため、候補キー {AC} は 1 つだけになります。

ステップ2: プライム属性は、この例では候補キー {A, C} の一部である属性であり、その他はこの例では非プライム属性 {B, D, E} になります。

ステップ 3: リレーショナル DBMS では複数値または複合属性が許可されないため、リレーション R は第 1 正規形になります。 BC->D は第 2 正規形 (BC は候補キー AC の適切なサブセットではない) であり、AC->BE は第 2 正規形 (AC は候補キー) であり、B->E であるため、この関係は第 2 正規形になります。は第 2 正規形です (B は候補キー AC の適切なサブセットではありません)。

BC->D (BC はスーパーキーでも D もプライム属性でもない) および B->E (B もスーパーキーでも E もプライム属性でもない) であるため、この関係は第 3 正規形ではありませんが、第 3 正規数を満たすには、FD の LHS がスーパー キーであるか、RHS がプライム属性である必要があります。したがって、関係の最高正規形は第 2 正規形になります。

たとえば、関係 R(A, B, C) A -> BC、B -> A と B は両方ともスーパー キーであるため、上記の関係は BCNF にあるとします。

第 3 正規形

非素数属性に対する推移的な依存関係がない場合、関係は第 3 正規形であると言われます。第 3 正規形の基本条件は、関係が第 2 正規形でなければならないということです。

以下に挙げるのは、自明ではない関数依存関係 X -> Y で保持する必要がある基本条件です。

  • Xはスーパーキーです。
  • Y は主属性です (これは、Y の要素が候補キーの一部であることを意味します)。

詳細については、を参照してください。 DBMS の第 3 正規形。

BCNF

BCNF (ボイス・コッド正規形) は、第 3 正規形の単なる発展バージョンです。ここでは、第 3 正規形以外の追加ルールがいくつかあります。関係が BCNF であるための基本条件は、関係が第 3 正規形である必要があることです。

BCNF のいくつかの基本的なルールに焦点を当てる必要があります。

Javaのソート配列
1. Table must be in Third Normal Form. 2. In relation X->Y、X はリレーション内のスーパーキーでなければなりません。>>

詳細については、を参照してください。 DBMS の BCNF。

第 4 正規形

第 4 正規形には、候補キーを除いて自明でない多値依存関係は含まれません。第 4 正規形の基本条件は、関係が BCNF である必要があることです。

基本的なルールは以下のとおりです。

1. It must be in BCNF. 2. It does not have any multi-valued dependency.>

詳細については、を参照してください。 DBMS の第 4 正規形。

第 5 正規形

第 5 正規形は投影正規形とも呼ばれます。第 5 正規形の基本条件は以下のとおりです。

Relation must be in Fourth Normal Form. The relation must not be further non loss decomposed.>

詳細については、を参照してください。 DBMS の第 5 正規形。

DBMS における正規形の応用

  • データの一貫性: 通常の形式では、データの一貫性が確保され、冗長な情報が含まれていません。これは、データベースの不整合やエラーを防ぐのに役立ちます。
  • データの冗長性: 通常の形式では、一意のデータのみを含むテーブルにデータを編成することで、データの冗長性を最小限に抑えます。これにより、データベースに必要なストレージ容量が削減され、管理が容易になります。
  • 反応時間: 標準形式では、データの取得に必要な結合の数が減るため、クエリのパフォーマンスが向上します。これにより、クエリ処理が高速化され、システム全体のパフォーマンスが向上します。
  • データベースのメンテナンス: 標準形式を使用すると、更新、削除、または変更が必要な冗長データの量が削減されるため、データベースの保守が容易になります。これはデータベース管理を改善し、エラーや不整合のリスクを軽減するのに役立ちます。
  • データベース設計: 標準形式は、効率的、柔軟、スケーラブルなデータベースを設計するためのガイドラインを提供します。これにより、必要に応じてデータベースを簡単に変更、更新、拡張できるようになります。

正規形に関する重要なポイント

  • BCNF には、機能の依存関係によって引き起こされる冗長性がありません。
  • 関係が BCNF にある場合、3NF も満たされます。
  • リレーションのすべての属性が素属性の場合、リレーションは常に 3NF になります。
  • リレーショナル データベース内のリレーションは常に、少なくとも 1NF 形式です。
  • すべてのバイナリ リレーション (属性が 2 つだけのリレーション) は常に BCNF にあります。
  • リレーションに単一の候補キーしかない場合 (つまり、すべての候補キーが 1 つの属性のみで構成されている場合)、リレーションは常に 2NF になります (部分的な関数依存関係が存在しないため)。
  • BCNF 形式を使用すると、機能の依存関係が維持されない場合があります。その場合、失われた FD が必要ない場合にのみ BCNF を使用し、それ以外の場合は 3NF までのみ正規化します。
  • BCNF の後には、4NF など、さらに多くのノーマル形式が存在します。しかし、実際のデータベース システムでは、通常、BCNF を超える必要はありません。

結論

結論として、リレーショナル データベースは、正規形式と呼ばれる一連のルールに従って配置できます。 データベース 管理 (1NF、2NF、3NF、BCNF、4NF、および 5NF)。これにより、データの冗長性が削減され、データの整合性が維持されます。さまざまな種類のデータの異常と依存関係を解決することにより、後続の正規形はそれぞれ、以前の正規形を拡張します。保存されるデータの特定の要件とプロパティによって、どの標準形式を使用する必要があるかが決まります。より高い正規形はより厳密なデータ整合性を提供しますが、データベース構造がより複雑になる可能性もあります。

前年度の質問リンク

  • GATE CS 2012、質問 2
  • GATE CS 2013、質問 54
  • GATE CS 2013、質問 55
  • ゲート CS 2005、質問 29
  • ゲート CS 2002、質問 23
  • ゲート CS 2002、質問 50
  • ゲート CS 2001、質問 48
  • ゲート CS 1999、質問 32
  • GATE IT 2005、質問 22
  • GATE IT 2008、質問 60
  • GATE CS 2016 (セット 1)、質問 31

正規形に関するよくある質問

Q.1: DBMS において正規化が重要なのはなぜですか?

答え:

正規化はデータベースの異常を防ぐのに役立ち、最終的にはデータベースの一貫性を確保し、データベースのメンテナンスを容易にします。

Q.2: データベースを過剰に正規化することは可能ですか?

答え:

はい、過剰な正規化は複雑なクエリに影響し、パフォーマンスも低下します。規格化と実用性のバランスが取れています。

Q.3: データベースを (BCNF または 4NF) のような最高正規形に正規化する必要がありますか?

答え:

データベースの正規化には、特定の必要条件はありません。多くの場合、特定のパフォーマンスとシンプルさのためには、下位形式で十分な場合があります。