數據庫複習

概念

數據結構、數據操做和數據完整性約束條件構成數據模型的三要素算法

實體型之間的聯繫包括一對一聯繫、一對多聯繫和多對多聯繫三種類型。sql

數據庫是長期存儲在計算機中、有(組織)的、可(共享)的數據集合。數據庫

DBMS表示,它是位於(用戶)和(操做系統)之間的一層數據管理軟件。數據結構

根據數據模型的應用目的不一樣,數據模型分爲(概念模型)、(邏輯模型)和(物理模型)等。閉包

數據庫領域中經常使用的邏輯數據模型有層次模型、網狀模型、關係模型、面向對象模型等。數據庫設計

數據庫系統由數據庫、數據庫管理系統、應用系統和數據庫管理員等組成ide

事物的四個特性:AIDC 原子性 獨立性 持久性 一致性函數

經過 加鎖 日誌 提交來保持操作系統

三級模式 兩級存儲映像.net

實體(行)完整性
實體完整性是對關係中的記錄惟一性,也就是主鍵的約束。準確地說,實體完整性是指關係中的主屬性值不能爲Null且不能有相同值。定義表中的全部行能惟一的標識,通常用主鍵,惟一索引 unique關鍵字,及identity屬性好比說咱們的身份證號碼,能夠惟一標識一我的.
參照完整性
參照完整性是對關係數據庫中創建關聯關係的數據表間數據參照引用的約束,也就是對外鍵的約束。準確地說,參照完整性是指關係中的外鍵必須是另外一個關係的主鍵有效值,或者是NULL。參考完整性維護表間數據的有效性,完整性,一般經過創建外部鍵聯繫另外一表的主鍵實現,還能夠用觸發器來維護參考完整性

無損鏈接

無損鏈接分解的快捷判別方法

  首先要申明,這種快捷方法是有前提的,前提就是分解後的關係模式只有兩個。其內容爲:

  設ρ={R1,R2}是R的一個分解,F是R上的FD集,那麼分解ρ相對於F是無損分解的充分必要條件是:(R1∩R2)→(R1–R2)或(R1∩R2)→(R2–R1)。這個「或」字很重要,這裏表示(R1∩R2)→(R1–R2)、(R1∩R2)→(R2–R1)中只要有一個成立就行。這裏的求交和相減運算的對象是關係模式的屬性。

若是要保持無損鏈接,那麼總能夠達到第四範式。

無損鏈接參考

函數依賴

能夠將R1, R2, R3 ……分別求函數依賴閉包,看是否丟失函數依賴

若是F上的每個函數依賴都在其分解後的某一個關係上成立,則這個分解是保持依賴的(這是一個充分條件)。

這句話的意思是:將R<U,F>分解後,存在不少分解後的關係,例如分解爲R1,R2,R3等。在R<U,F>中,F存在不少的函數依賴,若是F中的每個函數依賴,均可以在分解後的R1,R2,R3上找到它的屬性的話,那麼這個分解是保持依賴的。若是找不到的話,還須要進一步去判斷。

若是上面的充分條件不能用的話,按照下面的算法來進行補充,對於F上的每一個α→β使用如下算法。

算法,核心算法只有最後兩行:

result=γ;    //首先定義一個屬性,這個屬性如何找後文說
while(result發生變化)do    //第一次直接執行,以後對result判斷與上一次是否發生變化
    for each 分解後的Ri    //將每一個分解後的結構Ri逐個帶入
        t=(result∩Ri)+ ∩ Ri    //這裏的意思是取result與Ri的交集的閉包值,以後再與Ri取交集
        result=result∪t

若是最後的result中包含了β的全部屬性,那麼稱分解是保持函數依賴的。不然沒有保持函數依賴。

若是要保持函數依賴,那麼總能夠達到第三範式

求候選鍵

  • L型:只在左邊的出現的節點必定存在於中候選鍵。(也就是候選鍵的一個一部分或者所有)

  • R型:只在右邊出現的節點必定不是候選鍵。(啥都不是,它只能被候選鍵推導出來 。是個鐵廢物)

  • N型: 兩邊都沒有出現的節點,一點存在於候選鍵中。

  • LR型:在左邊和右邊都出現的節點有待觀察。依次求閉包

求最小函數依賴集

若是函數依賴集F知足如下條件,則稱F爲一個極小函數依賴集。也稱爲最小依賴集或最小覆蓋。

(1)F中任一函數依賴的右部僅含有一個屬性。

(2)F中不存在這樣的函數依賴X→A,使得F與F-{X→A}等價。

(3)F中不存在這樣的函數依賴X→A,X有真子集Z使得F-{X→A}U{Z→A}與F等價。

① 用分解的法則,使F中的任何一個函數依賴的右部僅含有一個屬性;

② 去掉多餘的函數依賴:從第一個函數依賴X→Y開始將其從F中去掉,而後在剩下的函數依賴中求X的閉包X+,看X+是否包含Y,如果,則去掉X→Y;不然不能去掉,依次作下去。直到找不到冗餘的函數依賴;

③ 去掉各依賴左部多餘的屬性。一個一個地檢查函數依賴左部非單個屬性的依賴。例如XY→A,若要判Y爲多餘的,則以X→A代替XY→A是否等價?若A屬於(X)+,則Y是多餘屬性,能夠去掉。(以上步驟中,求出關係依賴集F,此時,再F的基礎上,求出X或者Y的閉包,是否包含A)

範式

第一範式:強調數據表的原子性。

第二範式: 消除部分函數依賴,部分函數依賴:設X,Y是關係R的兩個屬性集合,存在X→Y,若X’是X的真子集,存在X’→Y,則稱Y部分函數依賴於X。

第三範式:消除傳遞函數依賴,在關係模式R(U)中,設X,Y,Z是U的不一樣的屬性子集,若是X肯定Y、Y肯定Z,且有X不包含Y,Y不肯定X,(X∪Y)∩Z=空集合,則稱Z傳遞函數依賴於X。

BC範式:主屬性不依賴於主屬性。若關係模式R屬於第一範式,且每一個屬性都不傳遞依賴於鍵碼,則R屬於BC範式。即左邊都是候選鍵。

SQL

  • having放在group by 的後面
  • group by 後面只能放非聚合函數的列
  • where 子句的做用是在對查詢結果進行分組前,將不符合where條件的行去掉,即在分組以前過濾數據,條件中不能包含聚組函數,使用where條件顯示特定的行。
  • having 子句的做用是篩選知足條件的組,即在分組以後過濾數據,條件中常常包含聚組函數,使用having 條件顯示特定的組,也可使用多個分組標準進行分組。

聚合函數只能在如下位置做爲表達式使用:

  • select 語句的選擇列表(子查詢或外部查詢);
  • compute 或 compute by 子句;
  • having 子句;

=ANY 運算符與 IN 等效,< >ANY 運算符則不一樣於 NOT IN:< >ANY 表示不等於 a,或者不等於 b,或者不等於 c。NOT IN 表示不等於 a、不等於 b 而且不等於 c。<>ALL 與 NOT IN 表示的意思相同。

執行順序

–第一步:執行FROM(有join on執行join on)

–第二步:WHERE條件過濾

–第三步:GROUP BY分組(開始使用select中的別名,後面的語句中均可以使用)

–第四步:HAVING條件過濾

–第五步:執行SELECT投影列

–第六步:執行DISTINCT

–第六步:執行ORDER BY 排序

數據庫設計

  • 需求分析
  • 概念結構設計
  • 邏輯結構設計
  • 物理結構設計
  • 機器實現/數據實施
  • 數據庫運行和維護

三級封鎖協議

排它鎖 X鎖

共享鎖 S鎖

一級封鎖協議:防止丟失修改

​ 事物T在修改數據以前必須先對其加X鎖,直到事物結束釋放

二級封鎖協議:防止讀髒數據

​ 事物T在讀數據以前加上S鎖,讀完後便可釋放

三級封鎖協議:保證數據可重複讀

​ 事物T在讀取數據以前必須對其加上S鎖,直到事物結束才釋放

破壞死鎖產生

  • 一次封鎖法

  • 順序封鎖法

實現可串行性

  • 兩段鎖協議

    是充分條件而不是必要條件 可能死鎖

賦予權限和取回權限

GRANT CREATE SESSION TO SCOTT;

GRANT CREATE TABLE TO Student_role;

REVOKE CREATE TABLE FROM SCOTT;

習題

1.數據庫(DB),數據庫系統(DBS)和數據庫管理系統(DBMS)之間的關係是(A)。

A. DBS包括DB和DBMS

B. DBMS包括DB和DBS

C. DB包括DBS和DBMS

D. DBS就是DB,也就是DBMS

2.下面列出的數據庫管理技術發展的三個階段中,沒有專門的軟件對數據進行管理的是(D)。

I.人工管理階段

II.文件系統階段

III.數據庫階段

A. I 和II

B. 只有II

C. II 和III

D. 只有I

3.下列四項中,不屬於數據庫系統特色的是(C)。

A. 數據共享

B. 數據完整性

C. 數據冗餘度高

D. 數據獨立性高

4.數據庫系統的數據獨立性體如今(B)。

A.不會由於數據的變化而影響到應用程序

B.不會由於系統數據存儲結構與數據邏輯結構的變化而影響應用程序

C.不會由於存儲策略的變化而影響存儲結構

D.不會由於某些存儲結構的變化而影響其餘的存儲結構

5.要保證數據庫的數據獨立性,須要修改的是(C)。

A. 模式與外模式

B. 模式與內模式

C. 三層之間的兩種映射

D. 三層模式

6.要保證數據庫的邏輯數據獨立性,須要修改的是(A)。

A. 模式與外模式的映射

B. 模式與內模式之間的映射

C. 模式

D. 三層模式

描述數據庫全體數據的全局邏輯結構和特性的是_____模式_。

相關文章
相關標籤/搜索