2番目の正規形(2NF)に問題があり、Googleを使用して解決することができませんでした。私は教師であり、生徒に間違ったものを教えたくないので、それは私を夢中にさせています。
5つのフィールドを持つテーブルを作成しましょう。
成績= {StudentName、SubjectCode、SubjectName、#Exam、Grade}
依存関係は次のとおりです。
StudentName、SubjectCode、#Exam-> Grade
SubjectCode-> SubjectName
SubjectName-> SubjectCode
したがって、候補キー1は{StudentName、SubjectCode、#Exam}であり、候補キー2は{StudentName、SubjectName、#Exam}です。
プライム属性は{StudentName、SubjectCode、SubjectName、#Exam}であり、非プライム属性はGradeです
2番目の標準形式の定義によれば、非プライム属性は候補キーの一部に依存できません。唯一の非プライム属性(グレード)は候補キーの一部に依存しないため、この表は2NFにあるように見えます。
問題は、何かがおかしいと思うことです(そして、私は間違っているかもしれません)。被験者は自分のテーブルを持つべきだと思います。
成績= {生徒名、件名コード、#試験、成績}
サブジェクト= {Subject Code、SubjectName}
しかし、2NFはこれを生成しません。3NFは非プライム属性間の依存関係に関するものであるため、これも生成しません。しかし、冗長性がないため、これは正しい結果であるように思えます。
非プライム属性が「候補キーではない属性」として定義されている場合、2NFが望ましい結果を生成すると思います。しかし、私はこれを何度もチェックしており、非プライム属性は「候補キーに一致しない属性」として定義されています。
私は何を間違えていますか?