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

DBMSの部分的な依存関係


部分的な依存関係とは何ですか?

部分的な依存関係は、非プライム属性が候補キーの一部に機能的に依存している場合に発生します。

2番目の正規形(2NF)は、部分的な依存関係を排除します。

例を見てみましょう-

StudentID
ProjectNo
StudentName
プロジェクト名
S01
199
ケイティ
ジオロケーション
S02
120
オリー
クラスターの探索

上記の表では、部分的な依存関係があります。どのように見てみましょう-

主なキー属性はStudentIDです。 およびProjectNo 、および

StudentID =学生の一意のID
StudentName =学生の名前
ProjectNo =プロジェクトの一意のID
プロジェクト名 =プロジェクトの名前


前述のように、非プライム属性、つまり StudentName およびProjectName 部分的に依存するには、候補キーの一部に機能的に依存している必要があります。

StudentName StudentIDで判断できます 、関係を部分的に依存させます。

プロジェクト名 ProjectNoで判断できます 、関係を部分的に依存させます。

したがって、関係は正規化の2NFに違反しており、データベース設計が不適切であると見なされます。

2NFの部分的な依存関係と違反を削除するには、テーブルを分解します-

< StudentInfo >

StudentID
ProjectNo
StudentName
S01
199
ケイティ
S02
120
オリー


ProjectNo
プロジェクト名
199
ジオロケーション
120
クラスターの探索


これで、関係はデータベース正規化の第2正規形になります。


  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つのコフマン条件が当てはまる場合にのみ発生します。これらの条件は、必ずしも相互に排他的ではありません。それらは: 相