如何理解資料庫中的完整性約束?

時間 2021-05-30 19:28:25

1樓:Coder

資料庫的integrity是為了防止資料庫中存在不符合語義的資料,也就是防止資料庫中存在不正確的資料; 資料庫的security是保護資料庫,防止其被惡意破壞和非法訪問;

這裡解釋一下什麼是資料庫的integrity

首先明確:

資料庫的完整性 = data correctness(資料正確性) + data compat-ability(資料相容性).

其次要知道資料庫的完整性包括實體完整性,參照完整性和使用者自定義完整性.

先說data correctness和data compat-ability:

例如如學生的學號必須唯一(unique),性別只能是男或女,這是指的是資料的正確性(Correctness)即指data是符合現實世界語義,反應當前實際狀況的; 又如有一張選課表(table)中包括學號,課程號,分數三個字段,現在有個新轉來的學生要選課, 打算用DML向選課表中insert一行資料,('0010', '01', null), 但他的學號0010只是教務處提前告訴他的,教務處還沒來得及錄入他的資訊至教務系統,那這個向選課表中的insert操作就不應該執行成功,因為不能允許乙個''不存在''的學生選課,這就是資料的相容性(data compat-ability),即指資料庫同一物件在不同關係表中的資料是符合邏輯的。

再說實體完整性,參照完整性和使用者自定義完整性:

實體完整性就是一張表的主鍵/主碼; 參照完整性就是定義外來鍵; 使用者定義的完整性就是用not null, unique, check短語修飾字段;

(怎麼定義實體完整性呢,比如在create table中用 primary key修飾乙個字段,這種屬於在列級定義約束條件(Constraint),還有一種是在宣告完欄位後寫,primary key(Sno),primary key(Sno, Cno)這種定義屬於在表級定義約束條件。多屬性構成的碼(碼就是候選碼的意思)只有一種說明方法,即定義表級約束條件;)

為了維護資料庫的integrity,DBMS必須能實現如下功能:

1. 提供定義完整性約束條件的機制;

2.提供完整性檢查的方法;

3.進行違約處理;

1.怎麼定義完整性約束(Integrity Constraint)條件?

如在create table的時候,你用unique, not null, primary key, 或者 foreign key去修飾某個字段,這就是Integrity Constraint, 也就是說一般Integrity Constraint都是相對某個字段/屬性來說的,如性別字段只能為男或女,學號唯一,這都是完整性約束條件

2.什麼是提供完整性檢查的方法?

DBMS中檢查data是否滿足Integrity Constraint條件的機制稱為完整性檢查,一般在DML語句執行後開始檢查,也可以在事務提交(transaction commit)時檢查。檢查這些操作執行後DB中的data是否違背了完整性約束條件。你可能好奇什麼是transaction,這個將在後面中講述.

3.什麼是進行違約處理?

進行完整性檢查的時候,若DBMS發現使用者的操作違背了完整性約束條件(Integrity Constraint),DBMS將採取一定的動作,如拒絕執行操作(no action)或cascade執行其他操作.以上

2樓:

分1、實體完整性:就是主屬性不能取空值

2、參照完整性:F是關係R的外碼,F的屬性值要麼都是空值,要麼等於關係S裡某個元組的主碼值(如果F是關係R的主屬性,這個時候F就不能取空值了)

3、使用者定義的完整性:反映某一具體應用所涉及的資料必須滿足的語義要求,比如某個學生的成績的取值範圍可以定義在0~100之間。

3樓:

三句話說清楚:

1.完整性約束這個叫法就很奇葩,應該拆分為資料的完整性,和,實現資料完整性的方式(就是約束);

2.啥叫資料的完整性?就是保證我們往資料庫裡放的資料能不失真,能滿足儲存真實業務資料的需求;

3.真實業務資料茫茫多, 怎麼能讓資料庫更真實的存放資料呢?得定規矩,定規則,這就是約束;

什麼是資料庫關係的完整性?

笑飲孤鴻 關係模型的完整性規則是對關係的某種約束條件。關係模型中有三類完整性約束 實體完整性規則,使用者定義的完整性規則,和參照完整性規則。1.實體完整性規則 關係的主鍵可以表示關係中的每條記錄,二關係的實體完整性要求關係中的記錄不允許出現兩條記錄的主鍵值相同,既不能有空值,也不能有重複值。實體完整...

如何理解資料庫鎖的相容性矩陣?

考研複習到這,修改一下 從多粒度樹的角度著手理解。在多粒度封鎖中,若對乙個節點加鎖 X S 意味著這個點的後裔節點也被加以同樣的鎖。若對乙個節點加意向鎖,則說明正在對其子節點加 對應的 鎖 可理解為乙個事務中的先後次序 任意節點加 X,S 鎖時,必須對其所有上級節點加意向鎖。多粒度封鎖的加鎖順序是自...

資料庫併發時如何保證資料的正確性?

冀利鐲 select 編號,稱號,sum 數量 算計 from table1 group by 編號,稱號由於併發操作帶來了資料的不一致性 主要有三種 1 丟失修改 2 不可重複讀 3 讀 髒 資料併發操控確保了事務的一致性原子性阻隔性持續性打個比方說,賣火車票,這時候火車票就剩餘一張了,可是同時有...