數據庫系統概論考前複習

第一章

數據庫的四個特點
數據結構化
數據共享性高,冗餘度低,伸縮性強
數據獨立性高
數據由數據庫管理系統統一管理和控制

數據模型的組成要素 P18
數據結構
數據操作
數據的完整性約束條件

關係模型
關係:通常說的一張表
元組:表中的一行即爲一個元組
屬性:表中的一列即爲一個屬性
碼: 表中的某個屬性組,它可以唯一確定一個元組
域: 屬性的取值範圍
分量:元組中的一個屬性值
關係模式:對關係的描述 例:學生(學號,姓名,年齡)
關係的每一個分量必須是一個不可分的數據項
關係模型的數據操縱:查詢、插入、刪除、更新
關係的完整性約束條件:實體完整性、參照完整性和用戶定義的完整性。

三級模式
模式:
  模式也稱邏輯模式,
  是數據庫中全體數據的邏輯結構和特徵的描述,
  是所有用戶的公共數據視圖。
外模式:
  外模式也稱子模式或用戶模式,
  它是數據庫用戶能夠看見和使用的局部數據的邏輯結構和特徵的描述,
  是數據庫用戶的數據視圖
內模式:
  內模式也稱存儲模式,
  一個數據庫只有一個內模式。
  它是數據物理結構和存儲方式的描述,是數據在數據庫內部的組織方式。

兩級映像
外模式/模式映像
  當模式改變時(增加新的關係、新的屬性、改變屬性的數據類型等),由數據庫管理員對各個外模式/模式的映像作相應改變,可以使外模式保持不變。應用模式是依據數據的外模式編寫的,從而應用程序不必修改,保證了數據與程序的邏輯獨立性,簡稱數據的邏輯獨立性
模式/內模式映像
  當數據庫的存儲結構改變時(例如選用了另一種存儲結構),由數據庫管理員對模式/內模式映像作相應改變,可以使模式保持不變,從而應用程序不必修改,保證了數據與程序的物理獨立性,簡稱數據的物理獨立性

爲什麼數據庫系統有數據與程序的獨立性?

DBMS在三級模式之間提供的兩級映像保證了數據庫系統中的數據能夠具有較高的邏輯獨立性和物理獨立性。

數據庫系統的組成

數據庫系統一般由數據庫、數據庫管理系統(及其開發工具)、應用系統、數據庫管理員和用戶構成。

第二章

關係的完整性

實體完整性
  實體完整性規則:若屬性(一個或者一組)A是基本關係R的主屬性,則A不能取空值。空值就是不知道、不存在、無意義的值。
  按照實體完整性規則,如果主碼由若干屬性組成,則所有這些主屬性都不能取空值。
參照完整性
  外碼、參照關係、被參照關係:
  設F是基本關係R的一個或一組屬性,但不是關係的碼,Ks是基本關係S的主碼。如果F與Ks相對應,則稱F是R的外碼,並稱基本關係R爲參照關係,基本關係S爲被參照關係。其中R和S不一定是不同的關係。

  參照完整性規則:
  若屬性(或屬性組)F是基本關係R的外碼,它與基本關係S的主碼Ks相對應(基本關係R和S不一定是不同的關係),則對於R中的每個元組在F上的取值必須:
  或者取空值(F的每個屬性均爲空值);
  或者等於S中某個元組的主碼值。

用戶定義的完整性

幾個定義

關係模式是型;
關係是值,是關係模式的實例。

候選碼:若關係中的某一屬性組能唯一地標識一個元組,而其子集不能,則稱該屬性爲候選碼
主碼:若一個關係有多個候選碼,則選定其中一個作爲主碼
外碼:設F是基本關係R的一個或一組屬性,但不是關係R的碼,如果F與基本關係S的主碼Ks相對應,則稱F是基本關係R的外部碼,簡稱外碼

關係代數的運算
傳統的集合運算:並、差、交、笛卡爾積
專門的關係運算:選擇、投影、連接、除運算
選擇:從關係R中選擇滿足給定條件的諸元組
投影:關係R上的投影是從R中選擇出若干屬性列組成新的關係
連接:從兩個關係的笛卡爾積中選取屬性間滿足一定條件的元組
除運算:關係R除以關係S的結果爲關係T,則T包含所有在R但不在S中的屬性及其值,且T的元組與S的元組的所有組合都在R中

第三章

SQL的特點

①綜合統一。SQL語言集數據定義語言(DDL)、數據操縱語言(DML)、數據控制語言(DCL)的功能於一體

②高度非過程化。只需要提出做什麼,而無須指明怎麼做。存取路徑的選擇以及SQL語句的操作過程由系統自動完成

③面向集合的操作方式。SQL語言採用集合操作方式,不禁操作對象、查找結果可以是元組的集合,而且一次插入、刪除、更新操作的對象也可以是元組的集合

CREATE SCHEMA 模式名 AUTHORIZATION 用戶名

DROP SCHEMA 模式名 CASCADE | RESTRICT

CASCADE爲級聯,表示在刪除模式的同時把該模式中所有的數據庫對象全部刪除。

RESTRICT爲限制,表示如果該模式中已經定義了下屬的數據庫對象(如表、視圖等),則拒絕該刪除語句的執行。只有當該模式中沒有任何下屬的對象時才能執行DROP SCHEMA語句。

CREATE TABLE 表名

(

  列名 數據類型 列級完整性約束條件

  表級完整性約束條件

)

CREATE TABLE SC

(

  Sno CHAR(9),

  Cno CHAR(4),

  Grade SMALLINT,

  PRIMARY KEY (Sno,Cno), /*主碼由兩個屬性構成,必須作爲表級完整性定義*/

  FOREIGN KEY (Sno) REFERENCES Student(Sno),

  FOREIGN KEY (Cno) REFERENCES Course(Cno)

)

修改基本表

ALTER TABLE 表名 子句

ADD子句:增加新列、新的列級完整性約束條件和新的表級完整性約束條件

DROP COLUMN子句:刪除表中的列(CASCADE/RESTRICT)

DROP CONSTRAINT子句:刪除指定的完整性約束條件

ALTER COLUMN子句:修改原有的列定義(列名和數據類型)

插入數據

INSERT INTO Student (Sno,Sname,Ssex,Sdept,Sage) VALUES ('201215128','陳東','男','IS',18);

修改數據

UPDATE Student SET Sage=22 WHERE Sno='201215128';

刪除數據

DELETE FROM Student WHERE Sno='201215128';

空值

屬性定義中有NOT NULL約束條件的不能取空值

加了UNIQUE限制的屬性不能取空值

碼屬性不能取空值

視圖

視圖是從一個或幾個基本表中導出的表。它與基本表不同,是一個虛表。數據庫中只存放視圖的定義,而不存放視圖對應的數據,這些數據仍存放在原來的基本表中,所以一旦基本表中的數據發生變化,從視圖中查詢出的數據也就隨之改變了。

基本表的行列子集視圖一般是可更新的。

若視圖來自聚集函數、表達式,則該視圖肯定是不可以更新的。

創建視圖

CREATE VIEW IS_Student(Sno,Sname,Sage)

AS

SELECT Sno,Sname,Sage FROM Student WHERE Sdept='IS'

WITH CHECK OPTION

WITH CHECK OPTION的作用:以後對該視圖進行插入、修改和刪除操作時,關係數據庫管理系統會自動加上Sdept='IS'的條件

刪除視圖

DROP VIEW IS_Student CASCADE

視圖的作用

簡化用戶操作

使用戶能以多種角度看待同一數據

視圖對重構數據庫提供了一定程度的邏輯獨立性

能夠對機密數據提供安全保護

適當利用視圖可以更清晰地表達查詢

第四章

存取控制

存取控制機制主要包括定義用戶權限和合法權限檢查兩部分

自主存取控制

定義存取權限稱爲授權。

GRANT INSERT

ON TABLE Student

TO U4

WITH GRANT OPTION

如果指定了WITH GRANT OPTION子句,則獲得某種權限的用戶還可以把這種權限再授予其他的用戶

REVOKE INSERT

ON TABLE Student

FROM U4 CASCADE

注意,收回U4權限的同時,級聯收回了U4給其他用戶的權限。

數據庫角色

角色的創建

CREATE ROLE R1;

創建角色R1

給角色授權

GRANT SELECT,UPDATE,INSERT

ON TABLE Student

TO R1;

使得R1具有對Student表的查詢、修改和插入權限

將一個角色授予其他的角色或用戶

GRANT R1

TO A,B,C

WITH ADMIN OPTION

使得A、B、C三個用戶具有R1所有的權限

如果指定了WITH ADMIN OPTION子句,則獲得某種權限的角色或用戶還可以把這種權限再授予其他的角色。

角色權限的收回

REVOKE SELECT

ON TABLE Student

FROM R1;

收回R1的SELECT權限

REVOKE R1

FROM A

通過R1來收回A的權限

強制存取控制

強制存取控制是對數據本身進行密級標記,無論數據如何複製,標記與數據是一個不可分的整體,只有符合密級標記要求的用戶纔可以操縱數據,從而提供了更高級別的安全性。

敏感度標記:絕密、機密、可信、公開

主體:許可證級別

客體:密級

主體讀寫客體的原則:

(1) 僅當主體的許可證級別 ≥ 客體的密級時,主體才能讀取客體;

(2) 僅當主體的許可證級別 ≤ 客體的密級時,主體才能寫客體。

審計

審計功能把用戶對數據庫的所有操作自動記錄下來放入審計日誌中。審計員可以利用審計日誌監控數據庫中的各種行爲,重新啊導致數據庫現有狀況的一系列事件,找出非法存取數據的人、時間和內容。

數據加密

數據加密主要包括存儲加密和傳輸加密

 

 

 

第五章

數據庫的完整性是指正確性和相容性

完整性約束機制的三個部分:定義完整性約束條件;完整性檢查;違約處理

實體完整性

規則:某一關係的主屬性不能取空值。

定義:在CREATE TABLE語句中,使用PRIMARY KEY定義主碼。

檢查:

  時機:向基本表中插入記錄或修改主碼時

  內容:主碼值是否唯一;主碼的各個屬性是否均不爲空

違約處理:一律拒絕

參照完整性

規則:外碼的取值要麼爲空,要麼等於被參照關係中某個元組的主碼值。

定義:在CREATE TABLE語句中,使用FOREIGN KEY定義外碼;用REFERENCES指明外碼參照的表及主碼

FOREIGN KEY (<外碼列名>)

REFERENCES<被參照表名>(<主碼>)

ON <DELETE|UPDATE>

<NO ACTION|SET NULL|CASCADE>;

 

檢查和違約處理:

 

約束條件

列值非空(NOT NULL)

列值唯一(UNIQUE)

檢查列值是否滿足一個條件表達式(CHECK短語)

 

完整性約束命名 P165

格式:CONSTRANT<完整性約束名><完整性約束條件>

完整性約束條件包括NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY、CHECK短語

修改表中的完整性限制

ALTER TABLE Student DROP CONSTRAINT C1;

ALTER TABLE Student ADD CONSTRAINT C1 CHECK(Sno BETWEEN 900000 AND 999999);

修改限制前,首先使用drop刪除限制,然後添加新的約束條件。

第六章

一個好的模式應當不會發生插入異常、刪除異常和更新異常,數據冗餘應儘可能少。

數據依賴是一個關係內部屬性與屬性之間的一種約束關係。

通常按屬性間依賴情況來區分關係規範化程度爲第一範式、第二範式、第三範式和BCNF範式。

 

不好的關係模式具有的四個問題:數據冗餘;插入異常;刪除異常;修改困難

該關係模式存在以下四個嚴重問題:

數據冗餘

      數據庫中不必要的重複存儲就是數據冗餘。此關係中,有關學生所在學院和其所對應的宿舍樓的信息有冗餘,因爲一個院有多少個學生,這個院所對應的宿舍樓的信息就要重複存儲多少遍。

插入異常

       應該存儲的信息無法存儲。插入記錄時出現不能插入等一些不合理現象。如果某個學生還沒有選課,但已經有了college和Sloc信息,我們也不能將此學生的這些已知信息插入到數據庫中。因爲Cno爲空,而Cno爲主屬性,不能爲空,因此也就丟掉了該學生的其他基本信息。

刪除異常

       不該刪除的信息被刪除。如果一個學生只選了一門課,而後來又不選了,則應該刪除此學生選此門課程的記錄。但由於這個學生只選了一門課,那麼刪掉此學生的選課記錄的同時也刪掉了此學生的其他基本信息。

更新異常(修改困難)

       由於數據的重複存儲,會給更新帶來很多麻煩。可能會導致數據的不一致,這將直接影響系統的質量。若某一學生從一院轉到三院,那麼不但要修改學生的college列的值,而且還要修改其Sloc列的值,從而使修改複雜化。

       一方面,修改工作量大;另一方面,可能漏改或該錯,會造成數據的不一致性。

函數依賴:設 R(U)是屬性集U上的關係模式,X、Y是U的子集。對於任意r中的任意兩個元組uv都有  u[X]=v[X] Þ u[Y]=v[Y]  成立,則稱X函數決定Y,或稱Y函數依賴於X,記作X->Y

完全函數依賴:X->Y,且對任意的X’ ⊂ X, 都有X’ -/->Y, 則稱X->Y是一個完全函數依賴, 即Y完全依賴於X。記作X->Y

部分函數依賴: X->Y,但Y不完全函數依賴於X,即存在X’ ⊂ X,有X’->Y。記作 X->Y。

 

X函數確定Y,Y函數依賴於X,X->Y

屬性X、Y之間:一對一(X->Y,Y->X);多對一(X->Y)。

已知X->Y,若Y是X的子集,則稱爲平凡的函數依賴;否則稱爲非平凡函數依賴。

完全函數依賴/部分函數依賴/傳遞函數依賴

候選碼能唯一標識某一元組,而其子集不能,這樣的屬性組或屬性。

能夠完全決定關係模式的屬性或屬性組合,屬性集U完全函數依賴於K,則K稱爲關係模式R的候選碼。

超碼:U函數依賴於K,即K->U,則K稱爲超碼

若候選碼多於一個,則選定一個爲主碼

包含在任何一個候選碼中的屬性稱爲主屬性,不包含在任何一個候選碼中的屬性稱爲非主屬性。

規範化:

一個低一級範式的關係模式通過模式分解可以轉換成若干個高一級範式的關係模式的集合,這種過程就叫規範化。

第一範式:

定義:關係的每個分量必須是不可再分的數據項。

說明:屬性不可再分;屬性下的值不可再分

第二範式:

定義:已知R屬1NF,若R的每個非主屬性都完全函數依賴於任何一個候選碼,則R屬2NF。

說明:消除關係模式中非主屬性對主碼的部分函數依賴,即可得到2NF。

第三範式:

定義:已知R屬2NF,若不存在任何非主屬性對碼的傳遞依賴和部分函數依賴,則R屬3NF。

說明:如果R的候選關鍵字是全鍵(沒有非主屬性),則R屬3NF。

BCNF:

定義1:已知R屬1NF,若對任何非平凡函數依賴X->Y,都有X包含候選碼,則R屬BCNF。

定義2:如果R∈3NF,並且不存在主屬性對碼的部分和傳遞函數依賴,則其是BCNF。

第七章

數據字典通常包括數據項、數據結構、數據流、數據存儲和處理過程五個部分

E-R圖

實體型用矩陣表示,矩形框內寫明實體名

屬性用橢圓形表示,並用無向邊將其與相應的實體型連接起來

聯繫用菱形表示,菱形框中寫明聯繫名,並用無向邊分別與有關實體型連接起來,同時標註聯繫的類型(1:1,1:n,m:n)

 

屬性不能再具有需要描述的性質,屬性必須是不可分的數據項,不能再由零一些屬性組成。

屬性不能與其他實體具有聯繫,聯繫只能發生在實體之間

爲了簡化E-R圖,凡是能夠作爲屬性對待的事物,應儘量作爲屬性。

E-R圖向關係模型的轉換原則

(1)實體型的轉換:一個實體型轉換爲一個關係模式

關係模式的屬性:實體的屬性

關係模式的碼:實體的碼

(2)聯繫的轉換

①1:1聯繫 可轉換爲一個獨立的關係模式(屬性:與該聯繫相連的各實體的碼+聯繫本身的屬性;候選碼:每個實體的碼),也可與相連的任意一端對應的關係模式合併(屬性:原關係模式的屬性+另一端關係模式的碼+聯繫本身的屬性;合併後的碼:不變)

②1:n聯繫 可轉換爲一個獨立的關係模式(屬性:與該聯繫相連的各實體的碼+聯繫本身的屬性;候選碼:n端實體的碼),也可與n端對應的關係模式合併(屬性:原關係模式的屬性+1端關係模式的碼+聯繫本身的屬性;合併後的碼:不變)

③m:n聯繫 一個m:n聯繫轉換爲一個關係模式(屬性:與該聯繫相連的各實體的碼+聯繫本身的屬性;候選碼:各實體碼的組合)

④三個或三個以上實體間的一個多元聯繫 轉換爲一個關係模式(屬性:與該多元聯繫相連的各實體的碼+聯繫本身的屬性;候選碼:各實體碼的組合)

⑤具有相同碼的關係模式可合併(目的:減少系統中的關係個數;合併方法:將一個關係模式的全部屬性加入到另一個關係模式中,然後去掉其中的同義屬性,適當調整次序)

數據庫設計步驟

需求分析

概念結構設計

邏輯結構設計

物理結構設計

數據庫實施

數據庫運行和維護

 第十章

事務:是數據庫中執行的一個工作單位,由用戶定義的一組操作序列構成。這些操作,要麼全做,要麼全不做。

SQL語句:

開始事務:BEGIN TRANSACTION

提交:COMMIT,提交事務的所有操作,將事務中所有對數據庫的更新寫回到磁盤上的物理數據庫中,事務正常結束

回滾(撤銷事務中所有已完成的操作(對數據庫的更新操作),回滾到事務開始時的狀態):ROLL BACK

事務的特徵:ACID原則(原子性、一致性、隔離性、持久性)

原子性:

事務是數據庫的邏輯工作單位,事務中包括的操作要麼都做,要麼都不做。

一致性:

數據庫只包含成功事務提交的結果時,就說數據庫處於一致性狀態。

隔離性:

一個事務的執行不能被其他事務干擾。一個事務的內部操作及使用的數據對其他併發事務是隔離的,併發執行的各個事務之間不能相互干擾。

持續性:

一個事務一旦提交,它對數據庫中數據的改變就應該是永久性的。

 

數據庫故障的種類:

事務內部的故障

    事務在運行至正常終止點前被終止

系統故障

 造成系統停止運轉的任何事件,使得系統要重新啓動

    系統故障造成數據庫不一致狀態:

    一是未完成事務對數據庫的更新可能已經寫入數據庫

    二是已提交事務對數據庫的更新可能還留在緩衝區沒來得及寫入數據庫

介質故障

    磁盤上的物理數據和日誌文件被破壞

計算機病毒

數據庫恢復技術:

數據轉儲:靜態轉儲和動態轉儲

登記日誌文件

日誌文件

日誌文件是用來記錄事務對數據庫的更新操作的文件。

格式:以記錄爲單位或者以數據塊爲單位

以記錄爲單位的日誌文件中需要登記的內容:

各個事務的開始(BEGIN TRANSACTION)標記

各個事務的結束(COMMIT或ROLLBACK)標記

各個事務的所有更新操作

每個事務的開始標記、結束標記和每個更新操作均爲日誌文件中的一個日誌記錄

日誌文件的作用:

事務故障和系統故障恢復必須用日誌文件

在動態轉儲方式中必須建立日誌文件,後備副本和日誌文件結合起來纔能有效地恢復數據庫

登記日誌文件的原則:按併發事務的時間次序登記;先登記日誌文件,再寫數據庫

恢復策略:P300

事務故障的恢復

特點:利用日誌文件撤銷(UNDO)未正常終止事務對數據庫的修改,對用戶透明,系統自動完成。

步驟:

反向掃描日誌文件,查找該事務的更新操作

對該事務的更新操作執行逆操作

重複前兩個步驟,直到讀到此事務的開始標記,事務故障恢復完成。

 

系統故障的恢復

特點:撤銷故障發生時未完成的事務,重做已完成的事務。由系統在重新啓動時自動完成,不需要用戶干預。

步驟:

正向掃描日誌文件,找出在故障發生前已經提交的事務(既有BEGIN TRANSACTION記錄,也有COMMIT記錄),將其事務標識記入重做隊列。同時找出故障發生時尚未完成的事務(這些事務只有TRANSACTION記錄,無相應的COMMIT記錄),將其事務標識記入撤銷隊列。

對撤銷隊列中的各個事務進行撤銷處理,進行撤銷的方法是,反向掃描日誌文件,對每個撤銷事務的更新操作執行逆操作,即將日誌記錄中“更新前的值”寫入數據庫

對重做隊列中的各個事務進行重做處理,進行重做處理的方法是:正向掃描日誌文件,對每個重做事務重新執行日誌文件登記的操作,即將日誌記錄中“更新後的值”寫入數據庫

 

介質故障的恢復

特點:重裝數據庫,然後重做已完成的事務

步驟:

裝入最新的數據庫後備副本(離故障發生時刻最近的轉儲副本),使數據庫恢復到最近一次轉儲時的一致性狀態;對於動態轉儲的數據庫副本,還需要同時裝入轉儲開始時刻的日誌文件副本,利用恢復系統故障的方法,才能將數據庫恢復到一致的狀態。

裝入相應的日誌文件副本(轉儲結束時刻的日誌文件副本),重做已完成的事務。即首先掃描日誌文件,找出故障發生時已經提交的事務的標識,將其記入重做隊列;然後掃描日誌文件,對重做隊列中的所有事務進行重做處理。即將日誌記錄中“更新後的值”寫入數據庫。

第十一章

1.理解併發操作及其帶來的三種數據不一致性問題

2.掌握鎖的類型和鎖相容矩陣

3.掌握三級封鎖協議的內容

4.掌握串行的調度、可串行化調度、衝突可串行化調度

 

1.1併發操作帶來的三個問題

(1)丟失修改【寫-寫】

(2)污讀(髒數據)【修改-讀】(T1被撤銷)

(3)不可重讀【讀-更新(修改/刪除/插入)】

2.1 封鎖

(1)鎖的類型

排他鎖(寫鎖,X鎖)、共享鎖(讀鎖,S鎖)

(2)鎖相容矩陣

給出了當事務T1獲得某數據上的鎖後,事務T2欲申請該數據上的某個鎖時,是否被批准的規則。

總結(X0 SS):如果R已加X鎖,則不能再加任何鎖;如果R已加S鎖,則只能再加S鎖不能加X鎖。

3.1三級封鎖協議

一級封鎖協議(解決“丟失修改”):事務T在修改數據對象之前,必須對其加X鎖,直到事務結束才釋放。

二級封鎖協議(解決“污讀”):在一級封鎖協議的基礎上,事務T在讀取數據對象之前,必須對其加S鎖,讀完後立即釋放。

三級封鎖協議(解決“不可重讀”):在一級封鎖協議的基礎上,事務T在讀取數據對象之前,必須對其加S鎖,直到事務結束才釋放。

3.2 活鎖和死鎖

預防死鎖:一次封鎖法、順序封鎖法

診斷解除:超時法、等待圖法

4.1併發調度的可串行性

可串行性是並行事務正確性的唯一準則。

可串行化的調度:多個事務的併發執行是正確的,當且僅當其結果與按某一次序串行地執行它們時的結果相同。

4.2衝突可串行化調度

衝突可串行化調度:保證一個調度中衝突操作次序不變的前提下,通過交換不同事務的非衝突操作的次序,能夠得到一個串行調度。

衝突操作:不同事務對同一數據進行的寫寫、讀寫操作。

不同事務的衝突操作和同一事務的兩個操作是不能交換的。

 

在一個調度中,改變不同事務的非衝突操作的順序不影響數據庫的狀態。而衝突操作和同一事務的兩個操作的順序不能改變。

衝突可串行化調度一定是可串行化調度,但可串行化調度不一定是衝突可串行化調度。

 

4.3 兩段鎖協議

2PL是併發控制正確性的充分條件,但不是必要條件。

內容:

(1)在讀、寫操作之前,首先要獲得封鎖

(2)釋放一個封鎖之後,不再獲得其他封鎖

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