DBMSの依存関係の種類
- 機能従属性
- 完全に機能する依存性
- 推移的な依存関係
- 多値従属性
- 部分的な依存関係
関数従属性から始めましょう-
機能従属性
テーブルに格納されている情報が同じテーブル内の別の情報を一意に判別できる場合、それは関数従属性と呼ばれます。同じ関係の2つの属性間の関連付けと見なしてください。
Pが機能的にQを決定する場合、
P-> Q |
例を見てみましょう-
<従業員>
EmpID | EmpName | EmpAge |
E01 | アミット | 28 |
E02 | Rohit | 31 |
上記の表で、 EmpName 機能的にEmpIDに依存しています EmpName EmpID:の指定された値に対して、1つの値のみを取ることができます
EmpID-> EmpName |
同じことが下に表示されます-
完全に機能的な依存関係
属性がその属性に機能的に依存していて、適切なサブセットに依存していない場合、その属性は別の属性に完全に機能的に依存しています。
たとえば、属性Qは、Pの適切なサブセットではなく、Pに機能的に依存している場合、別の属性Pに完全に機能的に依存しています。
例を見てみましょう-
ProjectID | ProjectCost |
001 | 1000 |
002 | 5000 |
EmpID | ProjectID | 日数 (プロジェクトに費やした) |
E099 | 001 | 320 |
E056 | 002 | 190 |
上記の関係は次のように述べています:
EmpID、ProjectID、ProjectCost->日数 |
ただし、完全に機能に依存しているわけではありません。
一方、サブセットは {EmpID、ProjectID} {日}を簡単に判断できます 従業員がプロジェクトに費やしました。
これは、完全に機能的な依存関係を要約して示します-
{EmpID、ProjectID}->(日) |
推移的な依存関係
間接的な関係が機能依存性を引き起こす場合、それは推移的依存性と呼ばれます。
P->QおよびQ->Rが真の場合、P->Rは推移的な依存関係です。
多値従属性
テーブルに1つ以上の行が存在するということは、同じテーブルに他の1つ以上の行があることを意味する場合、多値従属性が発生します。
テーブルに属性P、Q、およびRがある場合、QおよびRはPの複数値のファクトです。
二重矢印で表されます-
->-> |
この例の場合:
P->-> Q Q->-> R |
上記の場合、多値従属性は、QとRが独立した属性である場合にのみ存在します。
部分的な依存関係
部分的な依存関係は、非プライム属性が候補キーの一部に機能的に依存している場合に発生します。
2番目の正規形(2NF)は、部分的な依存関係を排除します。例を見てみましょう-
StudentID | ProjectNo | StudentName | プロジェクト名 |
S01 | 199 | ケイティ | ジオロケーション |
S02 | 120 | オリー | クラスターの探索 |
上記の表では、部分的な依存関係があります。どのように見てみましょう-
主なキー属性はStudentIDです。 およびプロジェクト番号
前述のように、非プライム属性、つまり StudentName およびProjectName 部分的に依存するには、候補キーの一部に機能的に依存している必要があります。
StudentName StudentIDで判断できます これにより、関係は部分的に依存します。
プロジェクト名 ProjectIDで判別できます 、その関係は部分的に依存しています。
-
DBMSの機能依存性
機能従属性とは 名前が示すように、DBMSの機能依存性は、相互に依存するテーブルの属性間の関係です。 E. F. Coddによって導入され、データの冗長性を防ぎ、悪い設計について知るのに役立ちます。 (矢印記号)で表されます。 次に、以下は矢印記号-で属性間の機能依存性を表します。 B 上記は次のことを示唆しています: 例 以下は、関数従属性を理解しやすくする例です- があります 2つの属性を持つテーブル-DeptId およびDeptName 。 DeptId =部門ID DeptName =部門名 DeptId 主キ
-
DBMSのデッドロック
デッドロックは、2つ以上のプロセスが、他のプロセスによって保持されている実行を完了するために何らかのリソースを必要とする場合に発生します。 上の図では、プロセス1にはリソース1があり、リソース2が必要です。同様にプロセス2にはリソース2があり、リソース1が必要です。これらの各プロセスは、完了するために他のリソースを必要としますが、どちらもリソースを放棄する意思はありません。したがって、プロセス1とプロセス2はデッドロック状態にあります。 コフマンの状態 デッドロックは、4つのコフマン条件が当てはまる場合にのみ発生します。これらの条件は、必ずしも相互に排他的ではありません。それらは: 相