DBMSの多値従属性
テーブル内に1つ以上の行が存在するということは、同じテーブル内に1つ以上の他の行があることを意味する場合、多値従属性が発生します。
テーブルに属性P、Q、およびRがある場合、QおよびRはPの複数値のファクトです。
二重矢印で表されます-
->-> |
この例の場合:
P->-> Q P->-> R |
上記の場合、多値従属性は、QとRが独立した属性である場合にのみ存在します。
多値従属性を持つテーブルは4NFに違反しています。
例
例を見てみましょう&mins;
<学生>
StudentName | CourseDiscipline | アクティビティ |
Amit | 数学 | 歌う |
Amit | 数学 | ダンス |
Yuvraj | コンピューター | クリケット |
Akash | 文学 | ダンス |
Akash | 文学 | クリケット |
Akash | 文学 | 歌う |
上記の表では、学生がアミットを見ることができます。 およびAkash 複数の活動に関心がある。
CourseDiscipline であるため、これは多値従属性です。 生徒の割合はアクティビティから独立していますが、生徒に依存しています。
したがって、多値従属性-
StudentName->-> CourseDiscipline StudentName->->アクティビティ |
上記の関係は、正規化の第4正規形に違反しています。
これを修正するには、テーブルを2つの別々のテーブルに分割し、多値従属性を解除します。
StudentName | CourseDiscipline |
Amit | 数学 |
Amit | 数学 |
Yuvraj | コンピューター |
Akash | 文学 |
Akash | 文学 |
Akash | 文学 |
StudentName | アクティビティ |
Amit | 歌う |
Amit | ダンス |
Yuvraj | クリケット |
Akash | ダンス |
Akash | クリケット |
Akash | 歌う |
これにより、多値従属性が破られ、2つの機能従属性が得られます-
StudentName-> CourseDiscipline StudentName->アクティビティ |
-
DBMSの機能依存性
機能従属性とは 名前が示すように、DBMSの機能依存性は、相互に依存するテーブルの属性間の関係です。 E. F. Coddによって導入され、データの冗長性を防ぎ、悪い設計について知るのに役立ちます。 (矢印記号)で表されます。 次に、以下は矢印記号-で属性間の機能依存性を表します。 B 上記は次のことを示唆しています: 例 以下は、関数従属性を理解しやすくする例です- があります 2つの属性を持つテーブル-DeptId およびDeptName 。 DeptId =部門ID DeptName =部門名 DeptId 主キ
-
DBMSのデッドロック
デッドロックは、2つ以上のプロセスが、他のプロセスによって保持されている実行を完了するために何らかのリソースを必要とする場合に発生します。 上の図では、プロセス1にはリソース1があり、リソース2が必要です。同様にプロセス2にはリソース2があり、リソース1が必要です。これらの各プロセスは、完了するために他のリソースを必要としますが、どちらもリソースを放棄する意思はありません。したがって、プロセス1とプロセス2はデッドロック状態にあります。 コフマンの状態 デッドロックは、4つのコフマン条件が当てはまる場合にのみ発生します。これらの条件は、必ずしも相互に排他的ではありません。それらは: 相