資源描述:
《第五章 數(shù)據(jù)庫完整性課件.ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、完整性約束條件完整性控制FoxPro的完整性小結(jié)5數(shù)據(jù)庫完整性數(shù)據(jù)庫的完整性是指數(shù)據(jù)的正確性和相容性。例如,學(xué)生的學(xué)號必須唯一;性別只能是男或女、本科學(xué)生的年齡的取值范圍為14-30的整數(shù);學(xué)生所在的系必須是學(xué)校已經(jīng)開設(shè)的系等。數(shù)據(jù)庫是否具備完整性關(guān)系到數(shù)據(jù)庫系統(tǒng)能否真實地反映現(xiàn)實世界,因此維護數(shù)據(jù)庫的完整性是非常重要的。5數(shù)據(jù)庫完整性數(shù)據(jù)的完整性和安全性是兩個不同的概念。前者是為了防止數(shù)據(jù)庫中存在不符合語義的數(shù)據(jù),防止錯誤信息的輸入和輸出,即所謂垃圾進垃圾出(GarbageInGarbageOut)所造成的無效操作和錯誤結(jié)果。而后者是
2、保護數(shù)據(jù)庫防止惡意破壞和非法的存取。也就是說,安全性措施的防范對象是非法用戶和非法操作,完整性措施的防范對象是不合語義的數(shù)據(jù)。5.2數(shù)據(jù)庫完整性為維護數(shù)據(jù)庫的完整性,DBMS必須提供一種機制來檢查數(shù)據(jù)庫中的數(shù)據(jù),看其是否滿足語義規(guī)定的條件。這些加在數(shù)據(jù)庫數(shù)據(jù)之上的語義約束條件稱為數(shù)據(jù)庫完整性約束條件,它們作為模式的一部分存放入數(shù)據(jù)庫中。而DBMS中檢查數(shù)據(jù)是否滿足完整性條件的機制稱為完整性檢查。5.2數(shù)據(jù)庫完整性5.1完整性約束條件完整性檢查是圍繞完整性約束條件進行的,因此完整性約束條件是完整性控制機制的核心。完整性約束條件作用的對象可
3、以是關(guān)系、元組、列三種。其中列約束條件主要是列的類型、取值范圍、精度、排序等約束條件。元組的約束條件是元組中各個字段間的聯(lián)系的約束。關(guān)系的約束是若干元組間、關(guān)系集合上以及關(guān)系之間的聯(lián)系的約束。5.1完整性約束條件完整性約束條件涉及的這三類對象,其狀態(tài)可以是靜態(tài)的,也可以是動態(tài)的。所謂靜態(tài)約束是指數(shù)據(jù)庫每一確定狀態(tài)時的數(shù)據(jù)對象所應(yīng)滿足的約束條件,它是反映數(shù)據(jù)庫狀態(tài)合理性的約束,這是最重要的一類完整性約束。動態(tài)約束是指數(shù)據(jù)庫從一種狀態(tài)轉(zhuǎn)變?yōu)榱硪环N狀態(tài)時,新、舊值之間所應(yīng)滿足的約束條件,它反映數(shù)據(jù)庫狀態(tài)變遷的約束。5.1完整性約束條件圖5.1
4、完整性約束條件分類對象粒度對象狀態(tài)動態(tài)列級約束動態(tài)元組約束動態(tài)關(guān)系約束④⑤⑥靜態(tài)列級約束靜態(tài)元組約束靜態(tài)關(guān)系約束①②③靜態(tài)動態(tài)列元組關(guān)系5.1完整性約束條件一、靜態(tài)列級約束靜態(tài)列級約束是對一個列的取值說明,這是最常用也是最容易實現(xiàn)的一類完整性約束。1.對數(shù)據(jù)類型的約束(包括數(shù)據(jù)的類型、長度、單位、精度等)2.對數(shù)據(jù)格式的約束例如,規(guī)定學(xué)號的前兩位表示入學(xué)年份,中間兩位表示系的編號,后三位為順序編號。5.1完整性約束條件一、靜態(tài)列級約束3.對取值范圍或取值集合的約束例如,規(guī)定學(xué)生成績的取值范圍為0-100,性別的取值集合為[男,女]。4.
5、對空值的約束空值表示未定義或未知的值,它與零值和空格不同。有的列允許有空值,有的則不允許。例如學(xué)生學(xué)號不能取空值,成績可以為空值。5.其它約束例如關(guān)于列的排序,組合列等。5.1完整性約束條件二、靜態(tài)元組約束一個元組是由若干個列值組成的,靜態(tài)元組約束就是規(guī)定元組的各個列之間的約束關(guān)系。例如訂貨關(guān)系中包含發(fā)貨量、訂貨量等列,規(guī)定發(fā)貨量不得超過訂貨量;又如教師關(guān)系中包含職稱、工資等列,規(guī)定教授的工資不低于1000元。5.1完整性約束條件三、靜態(tài)關(guān)系約束在一個關(guān)系的各個元組之間或者若干關(guān)系之間常常存在各種聯(lián)系或約束。常見的靜態(tài)關(guān)系約束有:實體完
6、整性約束參照完整性約束實體完整性約束和參照完整性約束是關(guān)系模型的兩個極其重要的約束,稱為關(guān)系的兩個不變性。5.1完整性約束條件三、靜態(tài)關(guān)系約束函數(shù)依賴約束。大部分函數(shù)依賴約束都在關(guān)系模式中定義。統(tǒng)計約束。即字段值與關(guān)系中多個元組的統(tǒng)計值之間的約束關(guān)系。例如規(guī)定部門經(jīng)理的工資不得高于本部門職工平均工資的5倍,不得低于本部門職工平均工資的2倍。5.1完整性約束條件四、動態(tài)列級約束動態(tài)列級約束是修改列定義或列值時應(yīng)滿足的約束條件,包括下面兩方面:修改列定義時的約束例如,將允許空值修改成不允許空值時,如果該列目前已存在空值,則拒絕這種修改。修改
7、列值時的約束修改列值有時需要參照其舊值,并且新舊值之間需要滿足某種約束條件。例如,職工工資調(diào)整不得低于其原來的工資,學(xué)生年齡只能增長等。5.1完整性約束條件五、動態(tài)元組約束動態(tài)元組約束是指修改元組的值時元組中各字段間需要滿足某種約束條件。例如職工工資調(diào)整時新工資不得低于原工資+工齡*1.5倍。六、動態(tài)關(guān)系約束動態(tài)關(guān)系約束是加在關(guān)系變化前后狀態(tài)上的限制條件,例如事務(wù)一致性、原子性等約束。5.1完整性約束條件表5.1完整性的約束條件粒度狀態(tài)列級元組級關(guān)系級列定義元組值實體完整性約束靜態(tài)·類型應(yīng)滿足參照完整性約束·格式的條件函數(shù)依賴約束·值
8、域統(tǒng)計約束·空值動態(tài)改變列定元組新舊值關(guān)系新舊狀態(tài)義或列值之間應(yīng)滿足之間應(yīng)滿足的的約束件條約束條件5.2完整性控制DBMS的完整性控制機制應(yīng)具有三個方面的功能:定義功能,提供定義完整性約束條件的機制。檢查功