資料庫第五章資料庫完整性
一 資料庫的完整性:
資料的正確性 :是指資料是符合現實世界語義,反映了當前實際狀況的
資料的相容性: 是指資料庫同一物件在不同關係表中的資料是符合邏輯的
二:資料的完整性和安全性是兩個不同概念:
資料的完整性: 防止資料庫中存在不符合語義的資料,也就是防止資料庫中存在不正確的資料
防範物件:不合語義的、不正確的資料 資料的安全性 保護資料庫 防止惡意的破壞和非法的存取
防範物件:非法使用者和非法操
二:實體完整性定義
關係模型的實體完整性
CREATE TABLE中用PRIMARY KEY定義
單屬性構成的碼有兩種說明方法 定義為列級約束條件
定義為表級約束條件
對多個屬性構成的碼只有一種說明方法 定義為表級約束條件
三:實體完整性檢查和違約處理
插入或對主碼列進行更新操作時,關聯式資料庫管理系統按照實體完整性規則自動進行檢查。包括:
檢查主碼值是否唯一,如果不唯一則拒絕插入或修改 檢查主碼的各個屬性是否為空,只要有一個為空就拒絕插入或修改
參照完整性定義:
在CREATE TABLE中用FOREIGN KEY短語定義哪些列為外碼
用REFERENCES短語指明這些外碼參照哪些表的主碼
四:參照完整性檢查和違約處理
一個參照完整性將兩個表中的相應元組聯絡起來
對被參照表和參照表進行增刪改操作時有可能破壞參照完整性,必須進行檢查
五:參照完整性檢查和違約處理
參照完整性違約處理
(1) 拒絕(NO ACTION)執行 不允許該操作執行。該策略一般設定為預設策略
(2) 級聯(CASCADE)操作 當刪除或修改被參照表(Student)的一個元組造成了與參照表(SC)的不一致,則刪除或修改參照表中的所有造成不一致的元組
(3)設定為空值(SET-NULL) 當刪除或修改被參照表的一個元組時造成了不一致,則將參照表中的所有造成不一致的元組的對應屬性設定為空值。
對於參照完整性,除了應該定義外碼,還應定義外碼列是否允許空值
參見愛課程網資料庫系統概論5.2節動畫《參照完整性》
六:使用者定義的完整性
使用者定義的完整性是:針對某一具體應用的資料必須滿足的語義要求 關聯式資料庫管理系統提供了定義和檢驗使用者定義完整性的機制,不必由應用程式承擔
七:屬性上約束條件的定義
CREATE TABLE時定義屬性上的約束條件 列值非空(NOT NULL)
列值唯一(UNIQUE)
檢查列值是否滿足一個條件表示式(CHECK)
(1)不允許取空值
(2)列值唯一
(3)用CHECK短語指定列值應該滿足的條件
屬性上的約束條件檢查和違約處理
插入元組或修改屬性的值時,關聯式資料庫管理系統檢查屬性上的約束條件是否被滿足
如果不滿足則操作被拒絕執行
八:元組上約束條件的定義
在CREATE TABLE時可以用CHECK短語定義元組上的約束條件,即元組級的限制
同屬性值限制相比,元組級的限制可以設定不同屬性之間的取值的相互約束條件
九:元組上約束條件檢查和違約處理
插入元組或修改屬性的值時,關聯式資料庫管理系統檢查元組上的約束條件是否被滿足
如果不滿足則操作被拒絕執行
十:完整性約束命名子句
CONSTRAINT <完整性約束條件名><完整性約束條件>
<完整性約束條件>包括NOT NULL、UNIQUE、PRIMARY KEY短語、FOREIGN KEY短語、CHECK短語等
十一:觸發器
觸發器(Trigger)是使用者定義在關係表上的一類由事件驅動的特殊過程
觸發器儲存在資料庫伺服器中
任何使用者對錶的增、刪、改操作均由伺服器自動啟用相應的觸發器
觸發器可以實施更為複雜的檢查和操作,具有更精細和更強大的資料控制能力
定義觸發器的語法說明
(1)表的擁有者才可以在表上建立觸發器
(2)觸發器名 觸發器名可以包含模式名,也可以不包含模式名 同一模式下,觸發器名必須是唯一的 觸發器名和表名必須在同一模式下
(3)表名 觸發器只能定義在基本表上,不能定義在檢視上 當基本表的資料發生變化時,將啟用定義在該表上相應觸 發事件的觸發器
觸發事件
觸發事件可以是INSERT、DELETE或UPDATE
也可以是這幾個事件的組合 還可以UPDATE OF<觸發列,...>,即進一步指明修改哪些列時啟用觸發器 AFTER/BEFORE是觸發的時機 AFTER表示在觸發事件的操作執行之後啟用觸發器 BEFORE表示在觸發事件的操作執行之前啟用觸發器
觸發器型別
行級觸發器(FOR EACH ROW) 語句級觸發器(FOR EACH STATEMENT)
觸發器的執行,是由觸發事件啟用的,並由資料庫伺服器自動執行 一個資料表上可能定義了多個觸發器,遵循如下的執行順序: (1) 執行該表上的BEFORE觸發器;
(2) 啟用觸發器的SQL語句;
(3) 執行該表上的AFTER觸發器。
刪除觸發器的SQL語法:
DROP TRIGGER <觸發器名> ON <表名>;
觸發器必須是一個已經建立的觸發器,並且只能由具有相應許可權的使用者刪除
相關文章
- 資料庫 資料庫的完整性資料庫
- 資料庫完整性+T-SQL資料庫SQL
- 資料庫應用系統中的資料庫完整性(上)KP資料庫
- 資料庫之淚第五章節資料庫
- 資料庫架構和物件、定義資料完整性-SQL Server資料庫架構物件SQLServer
- Flask web開發第五章資料庫FlaskWeb資料庫
- 資料庫系統之實體完整性約束資料庫
- 資料庫PostrageSQL-管理資料庫資料庫SQL
- 【資料庫資料恢復】SAP資料庫資料恢復案例資料庫資料恢復
- 【資料庫資料恢復】MS SQL資料庫附加資料庫出錯怎麼恢復資料?資料庫資料恢復SQL
- SQL語言與資料庫完整性和安全性SQL資料庫
- 資料庫介紹--初識資料庫資料庫
- 資料湖 vs 倉庫 vs 資料庫資料庫
- 資料庫概論 (一)資料庫概念資料庫
- 【Falsk 使用資料庫】---- 資料庫基本操作資料庫
- 【資料庫資料恢復】Sql Server資料庫資料恢復案例資料庫資料恢復SQLServer
- DataX將MySql資料庫資料同步到Oracle資料庫MySql資料庫Oracle
- 織夢資料庫_織夢還原資料庫_織夢資料庫很卡資料庫
- 生產資料庫、開發資料庫、測試資料庫中的資料的區分資料庫
- 資料庫資料庫
- 資料完整性
- L10資料庫——資料庫介紹資料庫
- Oracle資料庫-----資料庫的基本概念Oracle資料庫
- 【資料庫設計】資料庫的設計資料庫
- oracle 備份資料庫,匯出資料庫Oracle資料庫
- 【資料庫】資料庫儲存過程(一)資料庫儲存過程
- 國產資料庫源流史:AntDB資料庫資料庫
- 資料庫與資料庫管理系統概述資料庫
- 實時資料庫與時序資料庫資料庫
- NoSQL資料庫概念與NoSQL資料庫家族SQL資料庫
- DataX將Oracle資料庫資料同步到達夢資料庫Oracle資料庫
- Mysql資料庫-資料模型MySql資料庫模型
- MySQL資料庫資料管理MySql資料庫
- IndexedDB 資料庫新增資料Index資料庫
- 【資料庫資料恢復】windows server下SqlServer資料庫的資料恢復資料庫資料恢復WindowsServerSQL
- 【資料庫資料恢復】如何恢復Oracle資料庫truncate表的資料資料庫資料恢復Oracle
- Python3爬蟲資料入資料庫---把爬取到的資料存到資料庫,帶資料庫去重功能Python爬蟲資料庫
- mongodb資料庫備份與恢復(資料庫資料遷移)MongoDB資料庫