資料庫完整性(DatabaseIntegrity)是指資料庫中資料的正確性和相容性,其目的是防止垃圾資料的進出。資料庫完整性由各種各樣的完整性約束來保證,因此可以說資料庫完整性設計就是資料庫完整性約束的設計。加在資料庫之上的語義約束條件就是資料庫完整性約束條件。 完整性約束條件作用物件可以使關係、元組、列三種。 ● 列約束主要是列的資料型別、取值範圍、精度、排序等約束條件。 ● 元組的約束是元組中各個欄位間的聯絡的約束。 ● 關係的約束是若干元組間、關係集合上以及關係之間的聯絡的約束。 完整性約束條件涉及這三類物件,其狀態可以是靜態的,也可以是動態的。所謂靜態約束是指資料庫每一確定狀態時的資料物件所應滿足的約束條件。它是反映資料庫狀態合理性的約束,這是最重要的一類完整性約束。 動態約束是指資料庫從一種狀態轉變為另一種狀態時,新、舊值之間所應滿足的約束條件。 完整性約束條件可分為以下六類: ● 靜態列級約束 ● 靜態元組約束 ● 靜態關係約束 ● 動態列級約束 ● 動態元組約束 ● 動態關係約束
1.靜態列級約束是對一個列的取值域的說明,包括以下幾個方面: (1) 對資料型別的約束,包括資料的型別、長度、單位、精度等; (2) 對資料格式的約束。例如規定日期的格式為YYYY-MM-DD; (3) 對取值範圍或取值集合的約束。例如規定學生的成績取值範圍為0~100; (4) 對空值的約束,規定哪些列可以為空值,哪些列不能為空值;
2.靜態元組約束就是規定元組的各個列之間的約束關係。例如,訂貨關係中包含發貨量、訂貨量等列,規定發貨量不得超過訂貨量。
3.靜態關係約束是指在一個關係的各個元組之間或者若干關係之間存在的約束。常見的靜態約束有: (1) 實體完整性約束; (2) 引用完整性約束; (3) 函式依賴約束;大部分函式依賴約束都在關係模式中定義。 (4) 統計約束;即欄位值與關係中多個元組的統計值之間的約束關係。例如,規定部門經理的工資不得高於本部門職工平均工資的5倍,不得低於本部門職工平均工資的2倍。
4.動態列級約束是修改列定義或列值時應滿足的約束條件,包括下面兩方面: (1) 修改列定義時的約束。例如,將允許空值的列改為不允許空值時,如果該列目前已存在空值,則拒絕這種修改。 (2) 修改列值時的約束。修改列值時有時需要參照其舊值,並且新舊值之間需要滿足某種約束條件。例如,職工調整後的工資不得低於其調整前的原來工資;職工婚姻狀態的變化只能是由未婚到已婚、已婚到離異、離異到再婚等幾種情況。
5.動態元組約束是指修改元組的值時元組中各個欄位間需要滿足某種約束條件。例如,職工工資調整時新工資不得低於原工資+工齡*1.5等。
6.動態關係約束是加在關係變化前後狀態上的限制條件。例如,在積體電路晶片設計資料庫中,一個設計中用到的所有單元的工藝必相同,因此,在更新某個設計單元時,設計單元的新老工藝必須保持一致。
資料庫完整性(DatabaseIntegrity)是指資料庫中資料的正確性和相容性,其目的是防止垃圾資料的進出。資料庫完整性由各種各樣的完整性約束來保證,因此可以說資料庫完整性設計就是資料庫完整性約束的設計。加在資料庫之上的語義約束條件就是資料庫完整性約束條件。 完整性約束條件作用物件可以使關係、元組、列三種。 ● 列約束主要是列的資料型別、取值範圍、精度、排序等約束條件。 ● 元組的約束是元組中各個欄位間的聯絡的約束。 ● 關係的約束是若干元組間、關係集合上以及關係之間的聯絡的約束。 完整性約束條件涉及這三類物件,其狀態可以是靜態的,也可以是動態的。所謂靜態約束是指資料庫每一確定狀態時的資料物件所應滿足的約束條件。它是反映資料庫狀態合理性的約束,這是最重要的一類完整性約束。 動態約束是指資料庫從一種狀態轉變為另一種狀態時,新、舊值之間所應滿足的約束條件。 完整性約束條件可分為以下六類: ● 靜態列級約束 ● 靜態元組約束 ● 靜態關係約束 ● 動態列級約束 ● 動態元組約束 ● 動態關係約束
1.靜態列級約束是對一個列的取值域的說明,包括以下幾個方面: (1) 對資料型別的約束,包括資料的型別、長度、單位、精度等; (2) 對資料格式的約束。例如規定日期的格式為YYYY-MM-DD; (3) 對取值範圍或取值集合的約束。例如規定學生的成績取值範圍為0~100; (4) 對空值的約束,規定哪些列可以為空值,哪些列不能為空值;
2.靜態元組約束就是規定元組的各個列之間的約束關係。例如,訂貨關係中包含發貨量、訂貨量等列,規定發貨量不得超過訂貨量。
3.靜態關係約束是指在一個關係的各個元組之間或者若干關係之間存在的約束。常見的靜態約束有: (1) 實體完整性約束; (2) 引用完整性約束; (3) 函式依賴約束;大部分函式依賴約束都在關係模式中定義。 (4) 統計約束;即欄位值與關係中多個元組的統計值之間的約束關係。例如,規定部門經理的工資不得高於本部門職工平均工資的5倍,不得低於本部門職工平均工資的2倍。
4.動態列級約束是修改列定義或列值時應滿足的約束條件,包括下面兩方面: (1) 修改列定義時的約束。例如,將允許空值的列改為不允許空值時,如果該列目前已存在空值,則拒絕這種修改。 (2) 修改列值時的約束。修改列值時有時需要參照其舊值,並且新舊值之間需要滿足某種約束條件。例如,職工調整後的工資不得低於其調整前的原來工資;職工婚姻狀態的變化只能是由未婚到已婚、已婚到離異、離異到再婚等幾種情況。
5.動態元組約束是指修改元組的值時元組中各個欄位間需要滿足某種約束條件。例如,職工工資調整時新工資不得低於原工資+工齡*1.5等。
6.動態關係約束是加在關係變化前後狀態上的限制條件。例如,在積體電路晶片設計資料庫中,一個設計中用到的所有單元的工藝必相同,因此,在更新某個設計單元時,設計單元的新老工藝必須保持一致。