関係 R(A B C) を考えてみましょう。ここで、関係 R の属性として A、B、C が知られています。その場合、DBMS 内で推移的な依存関係が発生します。条件は A → B、B → C です。したがって、条件は A → C になります。つまり、2 つの関数依存関係によって依存関係が作成される場合、その関数依存関係は推移的な依存関係になると言えます。
推移的な依存関係とは何ですか?
関係 R(A B C) を考えてみましょう。ここで、関係 R の属性として A、B、C が知られています。その場合、DBMS 内で推移的な依存関係が発生します。条件は A → B、B → C です。したがって、条件は A → C になります。推移関数の依存関係では、依存は行列式に直接依存します。
次の例を使用して、推移的な依存関係を理解しましょう。
著者ID | 著者 | 本 | 著者_国籍 |
---|---|---|---|
A1 | アルンダティ・ロイ | 小さなものの神様 | インド |
A1 | Kiran Desai | 喪失の継承 | インド |
A2 | R.K.ナラヤン | マルグディの人喰い | インド |
上の著者テーブルでは、それがわかります。
上で説明した機能の依存関係を詳しく見ると、次のパターンが見つかります。
- A→BおよびB→C B→C。したがって、A→CA→Cとなります。
- A→書籍、B→著者、B→著者、C→著者_国籍 C→著者_国籍
上記の著者テーブルに第 3 正規形 (3NF) を適用するとします。その場合、作成者テーブルの推移的な依存関係を削除する必要があります。データベースの推移的な依存関係を削除するプロセスは、正規化プロセスとして知られています。
推移的な依存関係を回避するには?
上記の作成者テーブルをもう一度考えて、テーブルの作成中にどのような種類の問題が発生するかを見てみましょう。
著者テーブル:
著者ID | 著者 | 本 | 著者_国籍 |
---|---|---|---|
A1 | アルンダティ・ロイ | 小さなものの神様 | インド |
A1 | Kiran Desai | 喪失の継承 | インド |
A2 | R.K.ナラヤン | マルグディの人喰い | インド |
データの異常 (更新、挿入、削除の異常など) や不整合は、作成者テーブルによって引き起こされる可能性があります。データベースの冗長性が高すぎると、データにデータ異常が発生します。データ異常は、新しいデータの更新、削除、挿入に問題がある場合にも発生します。たとえば、著者テーブルでは、
- テーブルに本を追加できない限り、新しい著者を追加することはできません。
- データベースから書籍を完全に削除するまで、著者を削除することはできません。
- 「The God of Small Things」という本を削除したい場合、著者の ID、著者、国籍も削除されます。
上記の問題は、推移的な依存関係を含むあらゆる関係で発生します。
推移依存性を削除した第 3 正規形
考えてみましょう 著者テーブル 3 つの属性 (Author_ID、Author、Author_Nationality) を使用して、このテーブルから推移的な依存関係を見つけて削除しようとします。
著者テーブル:
著者ID | 著者 | 本 | 著者_国籍 |
---|---|---|---|
A1 | アルンダティ・ロイ | 小さなものの神様 | インド |
A1 | Kiran Desai | 喪失の継承 | インド |
A2 | R.K.ナラヤン | マルグディの人喰い | インド |
上記の作成者のテーブルは推移的な依存関係があるため、3NF には含まれていません。方法を見てみましょう
配列リストから削除する
- 著者 → 著者_国籍 著者 → 著者_国籍
- 著者ID → 著者
したがって、次のような関数の依存関係も存在します。
- Authir_ID → Author_Nationality は、上で説明したものと同様のパターンを形成しています。
推移的な依存関係を解消するには、Author_ID が Author_Nationality に機能的に依存しなくなるような方法で Author のテーブルを分割するだけです。
2 つのテーブルを作成しましょう。1 つは { Author_ID, Author} のみを含み、もう 1 つは {Author_Nationality} を含みます。新しいテーブルは次のようになります。
著者テーブル
著者ID | 著者 |
---|---|
A1 | 小さなものの神様 |
A2 | 喪失の継承 |
A3 | マルグディの人喰い |
著者国籍表
著者 | 著者_国籍 |
---|---|
アルンダティ・ロイ | インド |
Kiran Desai | インド |
R.K.ナラヤン | インド |
これで、新しい Author テーブルと Author Nationality テーブルには推移的な依存関係が含まれず、関係は 3NF になりました。