Sql

挿入異常



Insertion Anomaly



解決:

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

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



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

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



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


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