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