參照完整性是對什么的約束 SQL中,什么是數(shù)據(jù)完整性?數(shù)據(jù)完整性分為幾種?
SQL中,什么是數(shù)據(jù)完整性?數(shù)據(jù)完整性分為幾種?數(shù)據(jù)完整性是指數(shù)據(jù)的準確性和可靠性。提出防止數(shù)據(jù)庫中存在不符合語義規(guī)定的數(shù)據(jù),防止錯誤信息的輸入和輸出導致無效操作或錯誤信息。數(shù)據(jù)完整性分為四類:實體完
SQL中,什么是數(shù)據(jù)完整性?數(shù)據(jù)完整性分為幾種?
數(shù)據(jù)完整性是指數(shù)據(jù)的準確性和可靠性。提出防止數(shù)據(jù)庫中存在不符合語義規(guī)定的數(shù)據(jù),防止錯誤信息的輸入和輸出導致無效操作或錯誤信息。數(shù)據(jù)完整性分為四類:實體完整性、域完整性、引用完整性和用戶定義完整性。數(shù)據(jù)庫使用多種方法來保證數(shù)據(jù)的完整性,包括外鍵、約束、規(guī)則和觸發(fā)器。該制度很好地處理了四者之間的關(guān)系,并根據(jù)不同的具體情況采用不同的方法,相輔相成。
SQL基本表的創(chuàng)建中是通過什么實現(xiàn)參照完整性規(guī)則的?
例如,在類表中有一個學校表、一個類表、一個學生表、一個類表、一個學校,創(chuàng)建一個外鍵約束來限制學生表中的類,并創(chuàng)建一個外鍵約束。例如,在創(chuàng)建之后,我在張三(1類)、李四(2類)和王武(3類)的數(shù)據(jù)創(chuàng)建之后插入以下數(shù)據(jù)。如果沒有外鍵,我就把大學刪除了,那么班級里的數(shù)據(jù)就有問題了。查詢學校的班級,有數(shù)據(jù),但查詢學校,發(fā)現(xiàn)學校不存在。如果我刪除2012級3班,王武的數(shù)據(jù)會有問題。去查,顯示王武班是3班,但班表上沒有這個記錄。這導致數(shù)據(jù)不完整。如果存在外鍵約束。當我刪除大學時,默認情況下,數(shù)據(jù)庫會拒絕我的操作,并提示我有外鍵數(shù)據(jù),所以我不能刪除2012級3班。默認情況下,數(shù)據(jù)庫會拒絕我的操作,并提示我有外鍵數(shù)據(jù),不能刪除。我要把王武的班從三班改到二班,確定2012級三班以下沒有學生,然后我就可以刪除2012級三班了
事實上,你可以直接查書。
有三種數(shù)據(jù)庫完整性約束:實體完整性約束、引用完整性約束和用戶定義的完整性約束。
實體完整性:如果屬性m是關(guān)系R的主要屬性,那么m不能為空。
引用完整性:如果屬性m是關(guān)系R的外部代碼,則m的值為空或等于引用表的主代碼值。(大致來說,表中外鍵的值應該與連接表的主鍵的值一致。如果不一致,則外鍵的值應設置為空)
用戶定義的完整性:用戶為特定關(guān)系定義的完整性約束。有三種情況:列值不為空,列值唯一,列值是否滿足布爾表達式(檢查)
創(chuàng)建表學生(
SnO int primary key,-main code,entity integrity,main code不為空
courseno int foreign key references course,-external code,引用完整性
coursename nvarchar(50)不為空,--用戶定義的完整性,課程名稱不為空
sname nvarchar(50)唯一,--用戶定義的完整性,學生名稱唯一
sage int,
check(sage>0和sage<100)-用戶定義的完整性,檢查學生年齡是否在正常范圍(0-100)
數(shù)據(jù)庫完整性約束的主要功能是保證數(shù)據(jù)的正確性和兼容性。
例如,如果數(shù)據(jù)庫中有年齡項目,則應確保該項目不是負數(shù),并且有性別項目。你應該確保它只能是“男”或“女”等。簡而言之,你應該確保數(shù)據(jù)是語義和正確的。