資料庫的完整性約束

2021-09-23 20:23:18 字數 1244 閱讀 5675

完整性約束條件的作用物件:

元組(或稱作 row,一條資料)約束

表級約束(外來鍵)

實體完整性

實體的完整性是通過主鍵(primary key)約束和候選鍵(candidate key)約束來實現的。所以前提條件是要了解鍵的一些概念和分類:

舉個例子:例如有 students 表,含有字段 stu_number(學號)id(身份證號)name(姓名) 那麼找出所有能夠保證元組唯一性的super-key=, , , , , }然後可得 candidate key=stu_number 或 id

主鍵約束

建立主鍵約束

建立主鍵後,資料庫會自動建立唯一索引,用於對主鍵的快速查詢,索引名預設為primary,也可以重新自定義命名

建立候選鍵後,資料庫也會自動建立 unique 索引

參照完整性(reference 或稱作引用)

參照表:宣告了foreign key的表 a。被參照表:主鍵被表 a 宣告為foreign key

舉個例子:學生有選歷史課,但是現在學校決定不開設歷史課了,要把歷史課從課程表刪除,但是刪除的時候會檢查有沒有被引用,如果存在引用則刪除失敗,這就是restrict。如果刪除歷史課的同時,將所有學生選課表中的歷史課也刪除,這就是cascade。如果刪除了歷史課,只是將選課表中的歷史課設為null,這就是set null,萬一哪天又恢復歷史課呢?

使用者定義的完整性

trigger(觸發器)

可以使用 create trigger 建立觸發器,其格式為:

create

trigger trigger_name trigger_time trigger_event

on table_name for each row trigger_body

# trigger_name:觸發器唯一命名

# trigger_body:觸發器具體的執行邏輯

# trigger_event:事件型別,insert delete update

# trigger_time:觸發時間,參照的是 trigger_event 事件發生時間,after(常用) before

綜上,我們簡單的總結下

約束:向表中插入資料時,資料庫會判斷資料是否符合約束,不符合則插入失敗

參考:

資料庫 完整性約束

問題描述 現有乙個商店的資料庫 shopping 記錄客戶及其購物情況,由以下四個關係組成 a 客戶表customer 儲存客戶資訊,包括客戶號customerid 客戶姓名cname 位址address 電子郵件email 性別gender 身份證號cardid 號碼telcode。b 商品表go...

資料庫的完整性約束

一 資料庫的完整性約束定義 資料庫的完整性約束是為了防止不符合規範的資料進入資料庫,在使用者對資料進行插入 修改 刪除等操作時,dbms自動按照一定的約束條件對資料進行監測,使不符合規範的資料不能進入資料庫,以確保資料庫中儲存的資料正確 有效 相容。資料庫的完整性約束包括 1 實體完整性 規定表的每...

資料庫 資料完整性約束

資料完整性 儲存在資料庫中的所有資料值均正確的狀態。完整性約束 防止不符合規範的資料進入資料庫,在使用者對資料進行插入 修改 刪除等操作時,dbms自動按照一定的約束條件對資料進行監測,使不符合規範的資料不能進入資料庫,以確保資料庫中儲存的資料正確 有效 相容。1.實體完整性 實體完整性是對主鍵的約...