>> ZG·言語学習 >  >> 応用言語学 >> 社会言語学

推移的依存関係とは何ですか?

テーブルが別のテーブルに依存している場合、リレーショナルデータベースの推移的依存性が発生し、次に3番目のテーブルに依存します。 これにより、一連の依存関係が作成され、データの整合性を維持し、パフォーマンスの問題を引き起こす可能性があります。

ここに故障があります:

* 直接依存関係: テーブルは、他のテーブルの主キーを参照する外部キーを含む場合、別のテーブルに直接依存します。たとえば、「注文」テーブルには、「顧客」テーブルを参照する外部キーがある場合があります。

* 推移的依存関係: テーブルが3番目のテーブルに依存する別のテーブルに依存する場合、それは推移的依存関係と呼ばれます。 「注文」テーブルに「顧客」テーブルを参照する外部キーがあり、「顧客」テーブルには「地域」テーブルを参照する外部キーがあるシナリオを想像してください。この場合、「注文」テーブルは、「領域」テーブルに推移的な依存性を持っています。

推移的依存性の結果:

* データ冗長性: 3番目のテーブル(領域情報など)に関連するデータは、2番目の表の複数のレコードで複製されます。

* アノマリーを更新: 3番目のテーブルの変更には、2番目のテーブルと最初のテーブルの両方で更新が必要で、矛盾のリスクが高まります。

* 挿入異常: 2番目と3番目のテーブルの両方に対応するレコードがない限り、最初のテーブルにレコードを挿入することはできません。

* 削除異常: 3番目のテーブルでレコードを削除すると、1番目と2番目のテーブルで矛盾と潜在的なデータ損失を引き起こす可能性があります。

* パフォーマンスの問題: 推移的依存関係を含むクエリは、複雑で非効率的です。

正規化と推移的依存関係:

データベースの正規化の目標は、推移的依存関係を削除することにより、これらの問題を排除することです。これは通常、元のテーブルを推移的な依存関係で2つのテーブルに分割することによって達成されます。1つは3番目のテーブルに直接関連し、もう1つは最初のテーブルと直接関係しています。

例:

上記のテーブルの簡単な例を考えてみましょう。

* 注文: (OrderId、customerid、orderdate、...)

* 顧客: (CustomerID、CustomerName、RegionID、...)

* 領域: (RegionID、RegionName、...)

ここで、「注文」は、「顧客」を通じて「地域」に推移的な依存性を持っています。正規化するには、新しいテーブルを作成できます。

* カスタマーリージョン: (CustomerID、RegionID)

この新しいテーブルは、推移的依存性を排除します。 「注文」は「顧客」に直接依存し、「顧客」は「顧客」に直接依存し、「地域」に依存します。

要約:

データベース設計では、推移的依存関係は望ましくありません。それらは、データの冗長性、異常の更新、および潜在的なパフォーマンスの問題につながります。 これらの依存関係を排除し、データの整合性と効率を確保するために、データベースの正規化手法が採用されています。

著作権 © ZG·言語学習(www.zongjiefanwen.com) 無断複写・転載を禁じます。