(1)、為了維護數(shù)據(jù)庫的參照完整性,當(dāng)刪除被參照關(guān)系的元組時,系統(tǒng)可能采取哪些做法?(15分)
(2)、若有學(xué)生關(guān)系S(S#,SNAME,SEX,AGE),其主鍵為S#;選課關(guān)系SC(S#,C#,GRADE),其主鍵為(S#,C#),且S.S#=SC.S#。假定學(xué)生號為‘01001’的學(xué)生離開學(xué)校不再回來了,為此若刪除關(guān)系S中S#=‘01001’的元組時,如果關(guān)系SC中有4個元組的S#=‘01001’,應(yīng)該選用哪一種做法?為什么?(15分)
答案:
(1)、為了維護數(shù)據(jù)庫的參照完整性,當(dāng)刪除被參照關(guān)系的元組時,系統(tǒng)可能采取如下三種做法(每種做法得5分):
1)級聯(lián)刪除(cascades):即,當(dāng)刪除被參照關(guān)系的元組時,同時將參照關(guān)系中所有外鍵值與被參照關(guān)系中要被刪除元組的主鍵值相等(相對應(yīng))的元組一起刪除。
2)拒絕刪除(restricted):即,只當(dāng)參照關(guān)系中沒有任何元組的外鍵值與被參照關(guān)系中要被刪除的元組的主鍵值相等(相對應(yīng))時,系統(tǒng)才執(zhí)行該刪除操作,否則拒絕執(zhí)行該刪除操作。
3)置空值刪除(nullfies):即,當(dāng)刪除被參照關(guān)系的元組時,同時將參照關(guān)系中所有與被參照關(guān)系中要被刪除元組的主健值相等(相對應(yīng))的外鍵值都置為空值。
(2)、對于本題的情況,應(yīng)該選用第一種做法。即,將關(guān)系SC中S#=‘01001’的4個元組也一起刪除。(得10分)
因為當(dāng)一個學(xué)生離開學(xué)校不再回來,他的個人信息記錄若從S關(guān)系中刪除了,那么他的選課信息記錄就沒有保存的必要,也應(yīng)隨之從SC關(guān)系中刪除。(得5分)