13

ここから挿入異常を学んでいます。そこには以下のデータが書かれています、

異常を挿入

挿入異常は、特定の属性が他の属性の存在なしにデータベースに挿入できない場合に発生します。たとえば、これは削除異常の逆です。コースに少なくとも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

私はその概念を理解するのに行き詰まっています。コースが存在するために、なぜ学生をコースに登録する必要があるのでしょうか。

前もって感謝します

4

3 に答える 3

14

これは、スキーマが正規化されていないことを意味します。つまり、テーブルにコースに関する情報がありますStudent

したがって、コースの詳細を挿入するには、学生の詳細も提供する必要があります。

読む必要のある正規化にはさまざまな形式がありますが、この例では、この異常を解決するための正しい方法は、3つのテーブル、つまり強力なエンティティタイプ、、 StudentおよびCourse連想エンティティタイプのリンクテーブル StudentCourse(おそらくaRegistrationまたはGrade)これにより、重複や異常なしに学生とコースのデータを保存したり、多くの学生に多くのコースを割り当てたりすることができます。

次のリンクで正規化の例を読むことができます。これにより、より良いアイデアが得られます。

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

于 2012-10-21T14:38:36.010 に答える
8

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

于 2013-08-18T23:48:00.280 に答える
1

挿入の異常:上記の例によると、1つのテーブルにすべての属性があります。student id今、私は新しいコースを紹介したいので、主キーであり、空にすることはできない(そのコースを勉強したい学生)について知っている必要があります。取った表によると、あなたは知っている必要がありprimary key(student id)ます。他のフィールドに入力したいが、現在、学生が登録されていない新しいコースの詳細のみがあります。したがって、新しいコースを入力して主キーを空のままにすることはできません。これは挿入異常です。

于 2020-02-05T07:40:37.393 に答える