關係型資料庫完整性規則

2021-05-23 23:53:07 字數 1228 閱讀 6185

不管你用的是sql server 還是mysql 它們都是關係型資料庫,那麼既然是關係型資料庫就要遵守「關係型資料庫的完整性規則」

關係型資料庫提供了三類完整性規則,實體完整性規則,參照完整性規則,使用者自定義完成性規則;

在這三類完成性規則中呢其中實體完整性規則和參照性完整性規則是關係模型必須滿足的完整性的約束條件,稱為關係完整性規則;

一:實體完整性規則

實體完整性規則是指關係的主屬性(就是俗稱主鍵的一些字段,主鍵的組成部分)不能為空值,我們知道現實生活中的每乙個實體都具有唯一性,即使是兩台一摸一樣的計算機呢,都會有相應的生產日期來表示它們的唯一性,現實之中的實體是可以區分的,它們具有某種唯一性標識,相應的關係模型中以主鍵作為唯一性標識,主鍵中的屬性即主屬性不能是空值(「不知道」或「無意義」)的值,如果主屬性為空值,就說明存在不可標識的實體,即存在不可區分的實體,這與現實的環境相矛盾,因此這個實體一定不是完整的實體;

可能你看這段教條很枯燥,甚至有些不明白,這樣理解就簡單了:咱們設計表的時候不是每條記錄前面都有個自己的id嗎,並且每個id不一樣,它其實就是為了區分每條記錄的不一樣,儘管你的其他欄位的值都一樣,只要id不一樣那麼就是兩條不一樣的記錄,就區分開了,就滿足了實體完整性規則;

二:參照完整性規則

指如果關係的外來鍵r1和關係r2的主鍵相符,那麼外來鍵的每個值必須在關係r2中主鍵的值中可以找到或者是空值;

其實就是如果說在兩個有關聯的資料表中,乙個資料表的外來鍵(foreigon key)一定在另乙個資料表中的主鍵(primary key)中可以找到;咱們先看圖說話  大家先看一下圖一和圖二,一張是角色表(role),一張是使用者表(user),你們會發現在使用者user表裡的每乙個欄位role_id的值都可以在role表中的role_id欄位中找到對吧;在看第三張圖也就是圖三,圖三的最後一條記錄中role_id的值為「7」在圖一的role表裡的role_id裡是找不到的,所以說圖三不符合參照完整性規則;

(圖一)

(圖二)

(圖三)

三:使用者自定義的完整性規則

是指某一具體的實際資料庫的約束條件,由應用環境所決定,反映某一具體應用所涉及的資料必須滿足的要求(比如說乙個人的年齡必須要大於零),根據現實生活中的乙個實際情況使用者定義的乙個使用者自定義完整性;

比如你在設計表的時候有個年齡字段,那麼這個欄位裡的值不能小於0吧,不能大於150吧,還沒人能活到150歲對吧。

資料庫完整性

完整性約束條件 實體完整性給出了主鍵的取值的最低約束條件 規則是 主鍵的各個屬性都不能為空。參照完整性給出了在關係之間建立正確的聯絡的約束條件 規則是 外來鍵或者取空值 此時要求外來鍵的各個屬性均為空值 或者等於被參照關係中的主鍵的某個值。使用者自定義完整性 關係數控應用系統中的關係往往還應該滿足一...

資料庫完整性

資料的完整性和安全性 資料庫的完整性和安全性是兩個既有聯絡又不盡相同的概念。資料的完整性是為了防止資料庫中存在不符合語義的資料,也就是防止資料庫中存在不正確的資料。資料的安全性是保護資料庫防止惡意破壞和非法訪問。完整性檢查和控制的防範物件是不合語義的 不正確的資料,防止它們進入資料庫。安全性控制的方...

資料庫 完整性

一 實驗目的 1 掌握資料庫約束的概念 2 熟悉sql server 的完整性約束技術。3 了解sql server 的違反完整性處理措施。二 實驗環境 sql server2014 三 實驗內容 1.在前幾次實驗所使用的資料庫中新建乙個教師資訊表,表名為teacher,字段包括tno 教師編號 t...