MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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->アクティビティ


  1. DBMSの機能依存性

    機能従属性とは 名前が示すように、DBMSの機能依存性は、相互に依存するテーブルの属性間の関係です。 E. F. Coddによって導入され、データの冗長性を防ぎ、悪い設計について知るのに役立ちます。 (矢印記号)で表されます。 次に、以下は矢印記号-で属性間の機能依存性を表します。 B 上記は次のことを示唆しています: 例 以下は、関数従属性を理解しやすくする例です- があります 2つの属性を持つテーブル-DeptId およびDeptName 。 DeptId =部門ID DeptName =部門名 DeptId 主キ

  2. DBMSのデッドロック

    デッドロックは、2つ以上のプロセスが、他のプロセスによって保持されている実行を完了するために何らかのリソースを必要とする場合に発生します。 上の図では、プロセス1にはリソース1があり、リソース2が必要です。同様にプロセス2にはリソース2があり、リソース1が必要です。これらの各プロセスは、完了するために他のリソースを必要としますが、どちらもリソースを放棄する意思はありません。したがって、プロセス1とプロセス2はデッドロック状態にあります。 コフマンの状態 デッドロックは、4つのコフマン条件が当てはまる場合にのみ発生します。これらの条件は、必ずしも相互に排他的ではありません。それらは: 相