いいえ、生徒は 2NF ではなく 1NF にいます。
あなたはから始めています
Student(StudentNum, NRIC, DateOfBirth, BookTitle)
そしてこれらの依存関係。
StudentNum->NRIC
StudentNum->DateOfBirth
NRIC->DateOfBirth
関係が 2NF にあるのは、次の場合のみです。
- それは 1NF にあり、
- すべての非プライム属性は、候補キーの一部だけでなく、すべての候補キー全体に依存しています。
したがって、最初の仕事は Student リレーションの候補キーを決定することです。Student リレーションには候補キーが 1 つだけあり、それは {StudentNum, BookTitle} です。
教科書には、関係のすべての候補キーを決定するためのアルゴリズムが少なくとも 1 つ含まれている必要があります。
NRIC は StudentNum に依存しており、StudentNum は候補キーではない (候補キーの一部に過ぎない) ため、Student の関係は 2NF にはありません。変更して修正します
Student(StudentNum, NRIC, DateOfBirth, BookTitle)
これには、StudentNum に対する部分的なキーの依存関係を排除することによって行います。1
- 学生 ( StudentNum、 NRIC 、 DateOfBirth )
- StudentBooks ( StudentNum, BookTitle )
StudentBooks には非プライム属性はまったくありません。現在は6NFです。学生は 2NF にいますが、まだ 3NF または BCNF にはなっていません。なぜなのかご存知ですか?
その理由を知っていたようです。確かに推移的な依存関係があります: StudentNum->NRIC および NRIC->DateOfBirth です。このような推移的な依存関係を修正します。
- 学生 ( StudentNum , NRIC)
- NRIC ( NRIC、生年月日)
- StudentBooks ( StudentNum, BookTitle )
これら 3 つの関係はすべて 6NF にあります。
この分解は少し奇妙に見えるかもしれません。これは、教科書の例では通常、関係や属性に意味のある名前が使用されていないためです。リレーションは通常、R{ABCD}、R 1 {ABC}、R 2 {AD} などと名付けられます。
- 新しい関係 { StudentNum , NRIC, DateOfBirth} を投影して、部分的なキーの依存関係を排除し、
- 「Student」という名前が { StudentNum, BookTitle }からなる関係をもはや識別していないことを観察し、
- 「Student」という名前を元の関係から新しい投影された関係に移動し、
- 元の関係の新しい名前、StudentBooks を考え出します。