2012-10-21 80 views
5

我正在學習從here插入異常。以下的數據被寫入它,插入異常

插入異常

當某些屬性不能插入到數據庫中沒有其它屬性的存在的插入物異常發生。例如,這是刪除異常的反面 - 除非我們至少有一名學生參加了課程,否則我們不能添加新課程。

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課程的信息。

因此,爲了插入課程細節,您還需要提供學生的詳細信息。

有你需要閱讀有關different forms of normalization,但在這個例子中,正確的道路來解決這一異常現象最有可能將創建三個表,即strong entity typesStudentCourseassociative entity type linking tableStudentCourse(可能稱爲RegistrationGrade ),這將允許您存儲學生和課程數據,無需重複和異常,併爲許多學生分配許多課程。

您可以在下面的鏈接,通過規範化的例子看,它會給你一個更好的主意:

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

3

的例子假定studentnum和coursenum形成複合主鍵實現完整的規則:一學生不能多次參加同一課程,即組合不合時宜。因此,嘗試添加課程記錄也需要studentnum。爲了避免這種情況,同時仍然保持完整性規則,組合鍵在關聯實體和課程中實現,學生在單獨的實體中。