2012-10-21 16 views
5

私はhereから挿入異常を学んでいます。データがその中に書かれている次の、挿入異常

挿入異常

アン挿入異常が特定の属性が他の属性が存在しないデータベースに挿入することができない場合に発生します。たとえば、これは削除の異常の逆です - 少なくとも1人の学生がコースに登録していない限り、新しいコースを追加することはできません。

StudentNum CourseNum Student Name Address  Course 
S21   9201  Jones   Edinburgh Accounts 
S21   9267  Jones   Edinburgh Accounts 
S24   9267  Smith   Glasgow  physics 
S30   9201  Richards  Manchester Computing 
S30   9322  Richards  Manchester Maths 

私はコンセプトを理解していません。なぜ生徒が存在するために生徒がコースに登録される必要がありますか?事前

答えて

7

これで

おかげでスキーマがすなわち、正規化されていない今、あなたがテーブルStudentで進路についての情報を持っていることを意味します。

コースの詳細を挿入するには、学生の詳細も入力する必要があります。

について、あなたは読む必要があるが、この例では、最も可能性の高いこの異常を解決するための正しい道は3つのテーブルを作成することですstrong entity typesStudentCourse、すなわち、およびassociative entity type linking tableStudentCourseは(おそらくRegistrationまたはGradeと呼ばdifferent forms of normalizationあります)、重複や異常のない学生やコースのデータを保存したり、多くの学生に多くのコースを割り当てることができます。あなたは以下のリンクでの正規化の例を通読することができます

、それはあなたに良いアイデア与える:

http://www.sqa.org.uk/e-learning/MDBS01CD/page_26.htm#Example

3

を例がstudentnumとcoursenumはそのA整合性ルールを実装する複合主キーを形成することを前提としてい学生は同じコースに複数回登録することはできません。つまり、組み合わせは一律です。したがって、コースレコードを追加しようとすると、生徒番号も必要になります。整合性ルールを維持しながらこの状況を回避するために、複合キーは連想エンティティおよびコースで実装され、生徒は別個のエンティティにあります。

関連する問題