【自考必背】數據庫系統原理第六章

1、對數據庫施加數據完整性約束的作用

防止數據庫中存在不符合語義的數據,維護數據庫完整性

隨時檢測更新狀態數據庫內容是否符合完整性約束,保障數據一致性與正確性

防止對數據庫的惡意破壞,體改完整性檢測的效率,減輕數據庫編程人員負擔

2、完整性約束條件的作用對象可以是列、元祖、表

列:字段的類型、空值、取值範圍、精度等約束

元祖:字段之間的約束,開始日期小於結束期

表:主鍵和外鍵之間的約束

3、定義與實現完整性約束

(1)實體完整性約束:指關係的主屬性,即主碼的組成不能爲空,也就是關係的主屬性不能是NULL

(2)參照完整性約束:定義外碼和主碼之間的引用規則,它是對關係間引用數據的一種限制

(3)用戶定義的完整性約束:針對某一應用環境的完整性約束條件,它反應了某一具體應用所涉及的數據應滿足的條件

check約束:在創建表或更新表同時,根據用戶的實際完整性要求定義的。

4、使用SQL實現命名完整性約束

5、使用SQL實現更新完整性約束

CREATE TABLE table_name(

id INT NOT NULL AUTO_INCREMENT,

name VARCHAR(50) NOT NULL DEFAULT "",

PRIMARY KEY(id),

FOREIGN KEY(shcool_id)

REFERENCE school(id)

ON DELETE RESTRICT

ON UPDATE RESTRICT

);

CASCADE:父表delete、update的時候,子表會delete、update掉關聯記錄;

SET NULL:父表delete、update的時候,子表會將關聯記錄的外鍵字段所在列設爲null,所以注意在設計子表時外鍵不能設爲not null;

RESTRICT:如果想要刪除父表的記錄時,而在子表中有關聯該父表的記錄,則不允許刪除父表中的記錄;

NO ACTION:同 RESTRICT,也是首先先檢查外鍵;

6、觸發器

CREATE TRIGGER trigger_name AFTER UPDATE ON table_name FOR EACH ROW SET NEW.name = OLD.name;

DROP TRIGGER IF EXISTS trigger_name;

7、SQL語言安全控制中的訪問控制的作用,兩種方式用戶賬號和權限管理

存儲在名爲mysql的數據庫user表中,包含所有用戶帳號。

需要爲用戶分配訪問適當的權限。

8、用戶賬號管理

CREATE USER 'admin'@'127.0.0.1' IDENTIFIELD BY '123456',

'hongda'@'127.0.0.1' IDENTIFIELD BY PASSWORD 'afrwefwe';

DROP USER [email protected];

RENAME USER 'hongda'@'127.0.0.1' TO 'hong'@'127.0.0.1';

SET PASSWORD FOR 'hongda'@'127.0.0.1' = 'asfohwoiefhowihefoiw';

9、用戶權限管理

GRANT SELECT(id,name) ON table_name TO 'hongda'@'127.0.0.1';

GRANT SELECT,UPDATE ON table_name TO 'hongda'@'127.0.0.1',

'admin'@'127.0.0.1'

WITH GRANT OPTION;

10、事務與併發控制的概念

併發控制:對併發操作提供一定的控制,防止他們互相干擾,從而保證數據庫的正確性不被破壞,避免數據庫不一致性;

事務:用戶定義的一個數據操作序列,這些操作可以作爲一個完整的工作單元,要麼全部執行,要麼全部不執行,是一個不可分割的工作單位;

11、事務的特徵ACID

原子性、一致性、隔離性、持續性

12、併發操作的問題

丟失更新

不可重複讀

讀髒數據

13、封鎖

封鎖作爲一種常用的併發控制技術,用於解決併發操作所帶來的數據不一致性問題

基本思想:事務通過向系統請求對它所希望的數據對象加鎖,以確保它不被非預期修改

(1)鎖:允許或阻止一個事務對一個數據對象的存取特權。排它鎖(X鎖)、共享鎖(S鎖)

(2)用封鎖進行併發控制:

事務對數據加了X鎖,只有當事務結束後,纔可對數據做存取

事務對數據加了S鎖,其他事務可以繼續施加S鎖。X鎖必讀等待S鎖全部釋放纔可請求

事務執行數據庫操作時先請求相應的鎖,由DBMS隱式執行

事務一直戰友獲得的鎖,當ROLLBACK或COMMIT時釋放

(3)封鎖的粒度

粒度描述封鎖的數據單元的大小。粒度越細,併發越高,軟件複雜性和系統夠開銷也大。對數據庫加鎖,粒度最大,數據存取只能順序執行,性能大大下降。

(4)封鎖的級別

又稱爲一致性級別或隔離度。與封鎖期限有關,有的只是數據單元的存取期,有的是整個事務的存取期。

0級封鎖:封鎖的事務不重複寫其他非0級封鎖事務的爲提交的更新數據

1級封鎖:被封鎖的事務不允許重寫未提交的更新數據

2級封鎖:被封鎖的事務既不重寫也不讀未提交的更新數據

3級封鎖:被封鎖的事務不讀未提交的更新數據,不寫任何未提交數據

(5)活鎖與死鎖

活鎖:併發事務處理過程中,由於鎖會使一事務處於等待狀態而調度其他事務,因而該事務可能因爲優先級低永遠等待下去。

死鎖:兩個以上事務循環等待被同組中另一事物鎖住的數據單元的情形

死鎖解決方法:一次性鎖請求、鎖請求排序、序列化處理、資源剝奪

(6)可串行性

一組事務的一個調度就是他們基本操作的一個排序。一個調度中,任意兩個事務T1和T2,要麼T1所有操作都在T2之前,要麼之後,則該調度是可串行的。

(7)兩段封鎖法

任意一個事務中,所有加鎖操作都必須在所有釋放鎖操作之前。

14、備份與恢復

概念:備份是指通過導出數據或複製表文件的方式製作數據庫的副本;恢復是指當前數據庫遭到破壞時,將備份加載到系統中,使數據庫從錯誤狀態恢復到正確狀態。

作用:

保證數據庫的可靠性和完整性

可以用於數據恢復

通過導出數據或者複製表文件的方式製作數據庫的副本

SELECT * FROM table_name INTO OUTFILE 'C://table_name.txt';

LOAD DATA INFILE 'C://table_name.txt' INTO TABLE table_name;

更多自考筆記:點擊跳轉

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章