數據庫的完整性數據庫
目錄:測試
1.完整性子系統spa
2.SQL中的完整性約束code
1.完整性子系統事務
數據庫中完整性一詞是指數據的正確性、有效性和相容性,防止錯誤的數據進入數據庫。io
正確性:是指數據的合法性,例如,數值型數據只能包含數字而不能包含字母;語法
有效性:是指數據是否屬於所定義的有效範圍;方法
相容性:是指表示同一事實的兩個數據應相同,不一致就是不相容。數據
DBMS必須提供一種功能來保證數據庫中的數據時正確的,避免非法的不符合語義的錯誤數據的輸入和輸出,即所謂「垃圾進垃圾出」所形成的無效操做和錯誤操做。檢查數據庫中的數據是否知足規定的條件稱爲「完整性檢查」。數據庫中的數據應該知足的條件稱爲「完整性約束條件」,有時也稱爲完整性規則。sse
DBMS中執行完整性檢查的子系統稱爲「完整性子系統」。完整性子系統的主要功能有兩點
①監督事務的執行,並測試是否違反完整性規則。
②如有違反現象,則採起適當操做,例如,採用拒絕操做,報告違反狀況,改正錯誤等方法處理。
2.SQL中的完整性約束
SQL中把完整性約束分紅三大類:域約束、基本表約束和斷言。
1.域約束
能夠用「CREATE DOMAIN」語句定義新的域,而且還能夠出現CHECK子句。
例:定義一個新的域COLOR,可用下列語句實現:
CREATE DOMAIN COLOR CHAR(6) DEFAULT'???' CONSTRAINT VALID_COLORS CHECK(VALUE IN ('Red','Yellow','Blue','Green','???'));
2.基本表約束
SQL的基本表約束主要有3中形式:候選鍵定義、外鍵定義和「檢查約束」定義。這些定義均可以在前面加上「CONSTRAINT<約束名>」,由此爲新約束起個名字。
①候選鍵
UNIQUE (<列名序列>)或PRIMARY KEY (<列名序列>)
②外鍵
FOREIGN KEY (<列名序列>) REFERENCES <參照表> [(<列名序列>)] [ON DELETE <參照動做>] [ON UPDATE <參照動做>]
③「檢查約束」
這種約束是對單個關係的元組值加以約束。方法是在關係定義中任何須要的地方加上關鍵字CHECK和約束條件。
CHECK(<條件表達式>)
3.斷言
若是完整性約束的牽涉面較廣,與多個關係有關,或者與聚合操做有關,那麼SQL2會提供「斷言」(Assertions)機制讓用戶書寫完整性約束。斷言能夠向關係同樣,用CREATE語句定義,其語法以下:
CREATE ASSERTION <斷言名> CHECK (<條件>) DROP ASSERTION <斷言名>