天天看點

資料庫期末複習

文章目錄

    • 引言
      • 1.1
        • 1.1.2資料管理技術的發展
      • 1.2 資料庫管理的組成和特點
        • 1.2.1組成
        • ==1.2.2特點==
        • ==1.2.3資料庫的基本特征==
        • 1.3==資料庫管理系統的主要功能==
      • 1.4基本資料模型
        • 1.4.1資料模型
          • 1.概念模型
          • 2.邏輯模型
          • 3.實體模型
        • 1.4.2資料模型的組成要素
      • 1.5資料庫系統模式
        • 1.5.2三級模式結構
          • 1.模式
          • 2.外模式
          • 3.内模式
        • 1.5.3二級映像功能
      • ==1.6資料庫設計步驟==
    • 第二章——關系模型介紹
      • 2.1 關系資料庫的結構
      • 2.3 碼
      • ==2.4完整性限制==
      • 2.5使用者5大完整性限制
      • 2.6 關系運算
        • 關系模型的優缺點
    • 第三章——SQL
      • 特點
      • ==功能==
      • 3.2基本資料類型
      • 3.2.2基本模式定義
      • 3.3 SQL查詢基本結構
      • 3.3.3 自然連接配接
      • 3.5 集合運算
      • 3.6集合的比較
      • 3.8 重複元組
    • 第四章 —— 中級SQL
      • 4.2 視圖
      • 4.4 完整性限制
      • 4.5 SQL中的資料類型
      • 4.5.3 建立索引
      • 4.6 授權
    • 第五章——進階SQL
      • 5.2函數與過程
      • 5.2.2 支援過程語言構造
      • 5.3觸發器
      • 閉包
    • 第六章——形式化關系查詢語言
      • 1.關系運算
    • 第七章——資料庫設計與E-R模型
      • 7.1.2設計選擇
      • 7.2實體-聯系模型
        • 7.2.3
      • 7.5 實體-聯系圖
        • 7.5.1 基本結構
        • E-R圖
    • 第八章——範式理論
      • 函數依賴
      • 範式
      • 範式分解
          • 1. BCNF算法分解
          • 2. 3NF算法分解
    • 第九章——事務
      • ==ACID==
      • 關系
      • 問題
      • InnoDB的行鎖模式及加鎖方法
        • InnoDB實作了以下兩種類型的行鎖
        • 意向鎖
        • InnoDB行鎖模式相容性清單
      • ==産生死鎖的原因以及預防死鎖的三種方法==
        • 特别注意
    • 考試試題易錯
      • 一.概念設計
      • 二.關系運算
      • 三(資料庫的安全性)
      • 四(事務,觸發器)
    • 五(E-R圖)
      • 七(資料庫設計)
      • 八(資料庫恢複)

引言

1.1

1.1.2資料管理技術的發展

  1. 人工管理階段
  2. 檔案系統階段
  3. 資料庫系統階段

1.2 資料庫管理的組成和特點

1.2.1組成

  1. 計算機硬體系統
  2. 資料庫集合
  3. 資料庫管理系統(DBMS)
  4. 相關的軟體系統
  5. 資料庫管理者以及其他人員

1.2.2特點

  1. 資料

    備援度

    小,資料

    共享性高

  2. 具有較高的資料

    獨立性

資料庫系統的

資料獨立性

是指使用者應用程式與資料庫的資料互相獨立,展現在不會因為資料存儲結構與資料邏輯結構變化而影響應用程式
  1. 資料

    結構化

  2. 具有統一的資料

    控制功能

  • 資料安全性控制
  • 資料完整性控制
資料庫的完整性是指資料的_正确性和相容性_
  • 資料并發控制
  • 資料恢複
資料庫恢複要涉及到的兩個技術是_資料轉儲、登記日志檔案_

1.2.3資料庫的基本特征

  • 組織性(資料按一定的資料模型組織、描述和存儲)
  • 共享性(多種應用、多種語言、多個使用者互相覆寫地使用資料集合)、備援度較小、獨立性高、易擴充性
  • (永久存儲、有組織、可共享)

1.3資料庫管理系統的主要功能

  • 資料定義
  • 資料組織、存儲和管理
  • 資料操縱
  • 資料庫的事務管理和運作管理
  • 資料庫的運作和維護功能,運作控制功能
  • 資料字典

1.4基本資料模型

1.4.1資料模型

1.概念模型

概念模型也叫資訊模型,是按使用者的觀點來對資料和資訊模組化,用于資料庫設計,E-R模型就是概念模型.概念模型獨立于具體的機器(硬體裝置)和DBMS

2.邏輯模型
  1. 層次模型

    利用樹型結構

  2. 網狀模型

    利用網狀結構

層次模型和網狀模型中的機關是基本層次聯系,這是指兩個記錄(型)以及它們之間的一對多(包括一對一)的聯系。
  1. 關系模型

    利用二維表(最廣泛的模型,具有嚴格的數學理論基礎)

3.實體模型

實體模型是對資料最底層的抽象,描述資料在系統内部的表示方式和存取方法,在磁盤或錄音帶上的存儲方式和存取方法。面向計算機系統,實體模型的具體實作是DBMS的任務。

1.4.2資料模型的組成要素

  1. 資料結構
對資料系統的靜态特性描述
  1. 資料操作
對資料系統的動态特性描述
  1. 資料的完整性限制條件

1.5資料庫系統模式

1.5.2三級模式結構

資料庫期末複習
1.模式

模式也叫邏輯模式,資料庫系統模式結構中的

中間層

,是所有使用者的公共資料視圖,一個資料庫隻有一個模式

2.外模式

外模式也叫子模式或者使用者模式,是模式的子集,一個資料庫可以有多個外模式,每個使用者隻能看見和通路所對應的外模式的資料

3.内模式

内模式也叫存儲模式,一個資料庫隻有一個内模式

1.5.3二級映像功能

模式: 全局邏輯獨立性

外模式 :局部邏輯獨立性

外模式/模式映像——資料的邏輯獨立性

模式/内模式映像——資料的實體獨立性

資料的實體獨立性是指使用者的應用程式與存儲磁盤上資料庫的資料是互相獨立的

1.6資料庫設計步驟

按照規範的設計方法,一個完整的資料庫設計一般分為以下六個階段:

  1. 需求分析:分析使用者的需求,包括資料、功能和性能需求;
  2. 概念結構設計:主要采用E-R模型進行設計,包括畫E-R圖;
  3. 邏輯結構設計:通過将E-R圖轉換成表,實作從E-R模型到關系模型的轉換(其中包括對關系進行規範化處理);
  4. 資料庫實體設計:主要是為所設計的資料庫選擇合适的存儲結構和存取路徑;
  5. 資料庫的實施:包括程式設計、測試和試運作;
  6. 資料庫運作與維護:系統的運作與資料庫的日常維護。

第二章——關系模型介紹

2.1 關系資料庫的結構

  • 元組:行
  • 關系:表
  • 屬性:列
  • 域: 列的所有取值的集合 (通常叫做**屬性的域)

2.3 碼

  • 超碼: 一個或者多個屬性的集合(裡面有無關緊要的屬性),這些屬性上的取值保證可以唯一識别出關系中的元組
  • 候選碼:最小的超碼(每個屬性都有用,決定其他屬性的屬性集合)
  • 主碼:是被資料庫設計者選中,隻是用來區分而已(關系的一個候選碼可以作為主碼)
  • 外碼和參照關系

2.4完整性限制

  1. 實體完整性(主碼的值不能重複,主碼的屬性非空,primary key)

展現:對基本表插入或更新操作的時候,

(1)檢查主碼是否唯一,如果不唯一則拒絕插入或修改。

(2)檢查主碼的各個屬性是否為空,隻要有一個為空則拒絕插入或修改。

  1. 參照完整性(外碼可以是空值或者另一個關系主碼的有效值,foreign key)

解決措施:

1.拒絕執行,不允許該操作執行。

2.級聯操作,當删除或修改被參照表的一個元組導緻與參照表不一緻的時候,删除或修改參照表中的所有導緻不一緻的元組。

3.設定為空值,當删除或修改被參照表的一個元組導緻與參照表不一緻的時候,将參照表中的所有導緻不一緻的元組設定為空值。【需要考慮是否能為空】

  1. 使用者定義完整性(constraint)

包括:

1.列值非空

2.列值唯一

3.檢查列值是否滿足一個通過Check語句定義的布爾表達式。通過Check語句可以定義在列級、行級的限制

2.5使用者5大完整性限制

#主鍵限制
alter table [表名] add constraint [列名] primary key (id)
#check限制
alter table [表名] add constraint [列名] check(條件)
#unique限制
alter table [表名] add constraint [列名] unique(ename)
#預設限制
alter table [表名] add constraint default 限制類型 預設值 for 列名
#外鍵限制
alter table [表名] add constraint foreign key (列名) references 被引用的表名稱(列名)
           

2.6 關系運算

符号 使用執行個體
α 條 件 ( 表 名 ) \alpha_{條件}(表名) α條件​(表名) 選擇 α s a l a r y > = 5000 ( i n s t r u c t o r ) \alpha_{salary>=5000}(instructor) αsalary>=5000​(instructor)
Π 屬 性 名 ( 表 名 ) \Pi_{屬性名}(表名) Π屬性名​(表名) 投影 Π I D , s a l a r y ( i n s t r u c t o r ) \Pi_{ID,salary}(instructor) ΠID,salary​(instructor)
自然連接配接
× \times ×笛卡爾積 [表名] × \times ×[表名]
U U U并 表名 U U U表名(要求兩個表的屬性完全相同)

關系模型的優缺點

優點:

  • 它是建立在嚴格的數學概念的基礎上的;
  • 關系模式的概念單一;
  • 實體和各類聯系都用關系來表示;
  • 對資料的檢索結果也是關系;
  • 關系模型的存取路徑對使用者透明;
  • 具有更高的資料獨立性,更好的安全保密性;
  • 簡化了程式員的工作和資料庫開發建立的工作。

    缺點:

  • 存取路徑對使用者透明導緻查詢效率往往不如非關系資料模型
  • 為提高性能,必須對使用者的查詢請求進行優化增加了開發DBMS的難度。
  • 資料庫系統的三級模式(每個模式的定義和特點)

第三章——SQL

特點

  1. 統一綜合
集資料定義語言,資料操作語言,資料控制語言功能于一體
  1. 高度非過程化
存取路徑的選擇以及SQL的操作過程由系統自動完成
  1. 面向集合的操作方式
操作對象、查找結果、一次插入、删除、更新操作的對象都可以是元組的集合
  1. 以同一種語言結構提供多種使用方式
SQL是獨立的語言,又是嵌入式的語言,關系資料庫語言
  1. 語言簡潔、易學易用

功能

  1. 資料定義

    :資料定義語言用于定義資料的結構,比如建立、修改或者删除資料庫對象,相應的語句是CREATE、ALTER 和 DROP;
  2. 資料操縱

    :資料操縱語言用于修改資料,修改資料包括插入、更新和删除,對應的語句是 INSERT、UPDATE 和 DELETE;
  3. 資料控制

    :資料控制語言用于定義資料庫使用者的權限,其中授予權限使用 GRANT 語句,收回權限使用 REVOKE 語句等等。
  4. 資料查詢

    :資料查詢語言用于檢索,檢索資料使用 SELECT 語句;

3.2基本資料類型

  • char(n) 使用者指定長度
  • varchar(n) 指定最大長度
  • int
  • smallint
  • numeric(p,d) 定點數(p個數字,d是小數點右邊數字個數)
  • float

3.2.2基本模式定義

  • 建立
create table(
  primary key (course_id,sex_id),
  foreign key (dept_name) references tabke_name(dept_name)
);
           
  • 删除元組
delete from table_name where ; 
           
  • 删除表
drop table table_name
           
  • 添加列
ALTER TABLE 【表名】 ADD 【列名】 【類型】
           
  • 删除列
ALTER TABLE 【表名】 DROP 【列名】
           
  • 重命名列
ALTER TABLE 【表名】 CHANGE 【列名】【新名】
           
  • 修改表字段
alter table 表名稱 change 字段名稱 字段名稱 字段類型 [是否允許非空];
alter table 表名稱 modify 字段名稱 字段類型 [是否允許非空];
           
  • 修改表名
ALTER TABLE tbl_name rename new_tbl_name;
           

3.3 SQL查詢基本結構

  • all

    :不去重
  • distinc

    :去重

3.3.3 自然連接配接

  • natural join

3.5 集合運算

運算 名稱
union 并集
intersect 交集
expect 減去

3.6集合的比較

  • all

  • some

< >是不等于的意思

< >ALL 與所有都不相等 那麼與NOT IN的意思相同

< >SOME 與部分不相等

= SOME 與部分相等

= ALL 與全部相等

  • exists

3.8 重複元組

  • unique

    :是否存在重複元組,沒有就是true
  • with as

    用法
with [表名](屬性名字,屬性名字) as (
      # 查詢的結果
)
           
  • update

    用法
update [表名] set [列名]=[值]
where 條件
           
  • case

    用法
case 
	when pred1 then result1
	when pred2 then result2
	else result0
end
           

第四章 —— 中級SQL

4.2 視圖

  • view

    的使用
create view [名字] as select
#條件
;
           
  • 特别注意

    一般來說,如果定義視圖的查詢對下列條件都能滿足,我們稱SQL視圖是可更新的(即視圖上可以執行插入、更新和删除)

    • from語句中隻有一個資料庫關系
    • select子句中隻包含關系的屬性名,不包含任何表達式、聚集或者distinct聲明
    • 任何沒有出現在select子句中的屬性可以取空值,即這些屬性上沒有not null限制,也不構成主碼的一部分
    • 查詢語句中不含有group by和having語句

4.4 完整性限制

  • 分類
    • not null

    • unique

      :放在屬性後面
    • check

      :放在屬性後面,括号裡面加入條件
  • 完整性限制作用
    • 保證授權使用者對資料庫的所做的改變不會導緻資料一緻性的破壞
  • 參照完整性限制作用
    • 保證出現在一個關系的給定屬性集上的值同樣出現在另一個關系的特定屬性集上
  • 域限制作用
    • 指定了在一個屬性上可能取值的集合,可以禁止在特定屬性上使用空值

4.5 SQL中的資料類型

  • date

    : ‘2001-04-25’
  • time

    : ‘09:30:00’
  • timestamp

    :‘2001-04-25 09:30:00’

4.5.3 建立索引

create index Student_index on student(ID);
           

4.6 授權

  • 權限授予與收回
grant [權限清單‘select,delete,*,...(update 後面可加([屬性名]))’]
on [表名或者視圖]
to [角色]
           
revoke [權限清單‘select,delete,*,...’]
on [表名或者視圖]
from [角色]
           
  • 角色
create role [角色名]
           
  • 授權角色
grant [角色名] to [角色名]
           
  • 權限轉移
grant [權限清單] on [表名] to [角色名] with grant option #表示允許該角色将權限授權給其他角色
           

第五章——進階SQL

5.2函數與過程

  • 函數
create function 函數名([<參數1><類型1>[,<參數2><類型2>...]]) 
    returns 資料類型 
    begin
      sql語句;
      return 值;
    end
           
  • 存儲過程
create procedure 名稱(in [<參數1><類型1>[,<參數2><類型2>...], out [<參數1><類型1>[,<參數2><類型2>...]]) 
    begin
      sql語句;
    end
           

5.2.2 支援過程語言構造

  • while

    and

    repeat

while 布爾表達式 do 
			語句序列	;
end while

repeat 語句序列;
until	布爾表達式
end repeat
           
  • if

if 布爾表達式  
then		語句序列	;
elseif 	語句序列	;
else 	語句序列	;
end if
           

5.3觸發器

  • 文法
CREATE TRIGGER trigger_name
trigger_time(after,before)
([update,delete,insert] of [表名]) trigger_event ON tbl_name
(referencing new row as nrow,old row as orow )
FOR EACH ROW
trigger_stmt
           

閉包

第六章——形式化關系查詢語言

1.關系運算

  1. 并。計算兩個關系在集合理論上的并集,即給出關系R和S(兩者有相同元/列數),R∪S的元組包括R和S所有元組的集合,形式定義如下:
    資料庫期末複習
    式中 t是元組變量(下同)。顯然,R∪S=S∪R。
  2. 差。計算兩個關系的差別的集合,即給出關系R和S(兩者有相同元/列數),R-S的元組包

    括R中有而S中沒有的元組的集合,形式定義如下:

    資料庫期末複習
    通俗點說,就是屬于R但是屬于S的元素。
  3. 交。計算兩個關系集合理論上的交集,即給出關系R和S(兩者有相同元/列數),R∩S的元組包括R和S相同元組的集合,形式定義如下:
    資料庫期末複習
    顯然,R∩S=R-(R-S)和R∩S=S-(S-R)成立。
  4. 笛卡爾積。計算兩個關系的笛卡爾乘積,令R為有m元的關系,S為有n元的關系,則R×S是m+n元的元組的集合,其前m個元素來自R的一個元組,而後n個元素來自S的一個元組。形成定義如下:
    資料庫期末複習

    若R有u個元組,S有v個元組,則R×S有u×v個元組。

    要記住笛卡爾積的數量是兩者的乘積即可,相當于兩者排列組合。

(5)投影。從一個關系中抽取指明的屬性(列)。令R為一個包含屬性A的關系,則

資料庫期末複習

(6)θ連接配接。θ連接配接從兩個關系的笛卡兒積中選取屬性之間滿足一定條件的元組,記作:

資料庫期末複習

其中A和B分别為R和S上元數相等且可比的屬性組。θ為“=”的連接配接,稱為等值連接配接,記作:

資料庫期末複習

如果兩個關系中進行比較的分量必須是相同的屬性組,并且在結果中将重複的屬性去掉,則稱為自然連接配接,記作:

資料庫期末複習

第七章——資料庫設計與E-R模型

7.1.2設計選擇

我們主要避免一下兩個問題

  • 備援

    : 出現重複資訊
  • 不完整

    :對關系處理的不完整

7.2實體-聯系模型

7.2.3

  • 簡單和複合屬性:簡單屬性不能被劃分,複合屬性還能被劃分(比如name可以設計成為firstname和lastname)
  • 單值屬性和多值屬性:多值屬性(不同的老師可以有不同數量的電話号碼)
  • 派生屬性:可以由其他屬性計算而來

7.5 實體-聯系圖

7.5.1 基本結構

  • 矩形:實體集的名字和所有屬性的名字
  • 菱形:代表聯系集
  • 未分割的矩形:代表聯系的屬性
  • 線段:實體集-聯系集
  • 虛線:聯系集-聯系集屬性
  • 雙線:實體在聯系集的參與度
  • 雙菱形:連接配接到弱實體集(沒有足夠屬性已形成主碼)的标志性聯系集

E-R圖

資料庫期末複習

第八章——範式理論

函數依賴

  • 完全函數依賴:Y完全函數依賴X,就是Y依賴X的所有屬性,即X中少一項都推不出Y
  • 部分函數依賴:Y部分函數依賴X,就是Y依賴X的一部分屬性,即X的真子集也可能推出Y

範式

  • 第一範式:每個屬性都不可再分
  • 第二範式:第一範式 + 如果關系模式R(U,F)中的所有非主屬性都完全依賴于任意一個候選關鍵字
  • 第三範式:第二範式 + 如果關系模式R(U,F)中的所有非主屬性對任何候選關鍵字都不存在傳遞依賴
  • BC範式:第一範式 + 如果關系模式R(U,F)的所有屬性(包括主屬性和非主屬性)都不傳遞依賴于R的任何候選關鍵字。

範式分解

1. BCNF算法分解
  1. 檢驗R是否屬于BCNF。如果是,不需要做任何事,傳回{R}作為結果。
  2. 如果存在BCNF違例,假設為X→Y。計算X+。選擇R1=X+作為一個關系模式,并使另一個關系模式R2包含屬性X以及那些不在X+中的屬性。
  3. 計算R1和R2的FD集,分别記為S1和S2。
  4. 遞歸地分解R1和R2。傳回這些分解得到的結果集合。
  • 舉例
    資料庫期末複習
    資料庫期末複習
2. 3NF算法分解
資料庫期末複習

第九章——事務

ACID

  • 原子性

    :事務所有操作要麼全部正确反映,要麼完全不反映,即不允許事務部分地完成
    保證原子性由恢複控制子系統處理
  • 一緻性

    :即事務對資料庫的作用應使資料庫從一個一緻狀态轉變到另外一個一緻狀态。
    完整性限制以及編寫事務的應用程式員負責
  • 隔離性

    :即多個事務并發執行時,應像各個事務單獨執行一樣,互不幹擾
    保證隔離性由并發控制子系統處理
  • 持久性

    :即一個事務成功執行之後,對資料庫的影響應該是永久的,即使資料庫故障或被破壞,DBMS也應該能夠恢複
    保證原子性由恢複控制子系統處理

關系

  • 隻有滿足一緻性,事務的執行結果才是正确的。
  • 在無并發的情況下,事務串行執行,隔離性一定能夠滿足。此時隻要能滿足原子性,就一定能滿足一緻性。
  • 在并發的情況下,多個事務并行執行,事務不僅要滿足原子性,還需要滿足隔離性,才能滿足一緻性。
  • 事務滿足持久化是為了能應對系統崩潰的情況。
    資料庫期末複習

問題

  1. 髒讀
    資料庫期末複習
  2. 不可重複讀
    資料庫期末複習
  3. 幻讀
    資料庫期末複習
  4. 更新丢失(Lost Update)
當兩個或多個事務選擇同一行,然後基于最初標明的值更新該行時,由于每個事務都不知道其他事務的存在,就會發生丢失更新問題——最後的更新覆寫了其他事務所做的更新。例如,兩個編輯人員制作了同一文檔的電子副本。每個編輯人員獨立地更改其副本,然後儲存更改後的副本,這樣就覆寫了原始文檔。最後儲存其更改儲存其更改副本的編輯人員覆寫另一個編輯人員所做的修改。如果在一個編輯人員完成并送出事務之前,另一個編輯人員不能通路同一檔案,則可避免此問題

InnoDB的行鎖模式及加鎖方法

InnoDB實作了以下兩種類型的行鎖

  • 共享鎖(s):共享鎖又叫讀鎖,如果事務T對A加上共享鎖,則其他事務隻能對A再加共享鎖,不能加其他鎖。共享鎖的事務隻能讀資料,不能寫資料。
  • 排他鎖(X):排他鎖又叫寫鎖,如果事務T對A加上排它鎖,則其他事務都不能對A加任何類型的鎖。獲準排它鎖的事務既能讀資料,又能寫資料

意向鎖

  • 其實有排它鎖和共享鎖就足夠了為什麼還需要有意向鎖,這裡舉一個比較形象的例子:

    在mysql中有表鎖,讀鎖鎖表,會阻塞其他事務修改表資料。寫鎖鎖表,會阻塞其他事務讀和寫。

    1. Innodb引擎又支援行鎖,行鎖分為共享鎖,一個事務對一行的共享隻讀鎖。排它鎖,一個事務對一行的排他讀寫鎖。
    2. 這兩中類型的鎖共存的問題考慮這個例子:事務A鎖住了表中的一行,讓這一行隻能讀,不能寫。之後,事務B申請整個表的寫鎖。如果事務B申請成功,那麼理論上它就能修改表中的任意一行,這與A持有的行鎖是沖突的。資料庫需要避免這種沖突,就是說要讓B的申請被阻塞,直到A釋放了行鎖。
    資料庫要怎麼判斷這個沖突呢?
    • step1:判斷表是否已被其他事務用表鎖鎖表
    • step2:判斷表中的每一行是否已被行鎖鎖住。

    注意step2,這樣的判斷方法效率實在不高,因為需要周遊整個表。于是就有了意向鎖。在意向鎖存在的情況下,事務A必須先申請表的意向共享鎖,成功後再申請一行的行鎖。

    在意向鎖存在的情況下,上面的判斷可以改成

    • step1:不變
    • step2:發現表上有意向共享鎖,說明表中有些行被共享行鎖鎖住了,是以,事務B申請表的寫鎖會被阻塞。
    注意:申請意向鎖的動作是資料庫完成的,就是說,事務A申請一行的行鎖的時候,資料庫會自動先開始申請表的意向鎖,不需要我們程式員使用代碼來申請。

InnoDB行鎖模式相容性清單

目前鎖模式/是否相容/請求鎖模式 X IX S IS
X 沖突 沖突 沖突 沖突
IX 沖突 相容 沖突 相容
S 沖突 沖突 相容 相容
IS 沖突 相容 相容 相容

如果一個事務請求的鎖模式與目前的鎖相容,InnoDB就請求的鎖授予該事務;反之,如果兩者兩者不相容,該事務就要等待鎖釋放。

意向鎖是InnoDB自動加的,不需使用者幹預。對于UPDATE、DELETE和INSERT語句,InnoDB會自動給涉及的資料集加排他鎖(X);對于普通SELECT語句,InnoDB會自動給涉及資料集加共享鎖(S);

産生死鎖的原因以及預防死鎖的三種方法

  • 原因:一個事務若申請鎖未被準許,則需等待其它事務釋放鎖。當事務之間出現循環等待時,如果不加幹預,則會等待下去,進而産生死鎖
  • 方法如下
    1. 要求每一個事務必須同時封鎖所需要使用的全部資料
    2. 對所有資料對象規定一個封鎖的次序,要求所有事務必須按照這個次序封鎖對象
    3. 當事務申請鎖未被準許時,不等待加鎖而是讓一些事務復原重新執行

特别注意

兩段鎖協定是指每個事務的執行可以分為兩個階段:生長階段(加鎖階段)和衰退階段(解鎖階段)。

  • 加鎖階段:在該階段可以進行加鎖操作。在對任何資料進行

    讀操作

    之前要申請并獲得S鎖,在進行

    寫操作

    之前要申請并獲得X鎖。加鎖不成功,則事務進入等待狀态,直到加鎖成功才繼續執行。
  • 解鎖階段:當事務釋放了一個封鎖以後,事務進入解鎖階段,在該階段隻能進行解鎖操作不能再進行加鎖操作。

    兩段封鎖法可以這樣來實作:事務開始後就處于加鎖階段,一直到執行ROLLBACK和COMMIT之前都是加鎖階段。ROLLBACK和COMMIT使事務進入解鎖階段,即在ROLLBACK和COMMIT子產品中DBMS釋放所有封鎖。

    兩段可以簡單了解成,加鎖解鎖分兩步走,先都加鎖,然後都解鎖,不要在加鎖的過程中包含解鎖

考試試題易錯

一.概念設計

  1. 在資料庫中,産生資料不一緻的根本原因是資料備援
  2. DBS=DBMS+DB+DBA
  3. 資料庫管理系統的主要功能是定義資料庫
  4. 資料庫系統的最大特點是資料的三級抽象和二級獨立
  5. 資料庫系統的資料獨立性是指不會因為系統資料存儲結構與資料邏輯結構的變化而影響應用程式
  6. 資訊世界中的術語,與之對應的資料庫術語為記錄
  7. 資料備援可能導緻的問題有浪費存儲空間以及修改麻煩和潛在的資料不一緻
  8. 用二維表結構表示實體型,外鍵實作實體之間聯系的模型稱為關系模型 【❌】

二.關系運算

  1. 在關系代數運算中,五種基本運算為并、差、選擇、投影、笛卡爾積
  2. 一個關系模式的定義主要包括 關系名 、屬性名、屬性類型、屬性長度 和關鍵字 。
  3. 關系資料庫中基于數學上兩類運算是關系代數、關系演算
  4. 資料庫期末複習

三(資料庫的安全性)

  1. 保護資料庫安全性的一般方法是設定使用者辨別和存儲權限控制
  2. 安全性控制的一般方法有使用者辨別鑒定、存取控制 、審計、資料加密和視圖的保護五級安全措施

四(事務,觸發器)

資料庫期末複習

2.

資料庫期末複習

事務送出後就不能復原了

五(E-R圖)

  1. 關系R的屬性A參照引用關系T的屬性A,T的某條元組對應的A屬性值在R中出現,當要删除T的這條元組時,系統可以采用的政策包括拒絕執行、級聯删除、設為空值

七(資料庫設計)

  1. 資料庫實體設計完成後,進入資料庫實施階段,下列各項中不屬于實施階段的工作是擴充功能
  2. 在設計分 E-R 圖時,由于各個子系統分别有不同的應用,而且往往是由不同的設計人員設計的,是以各個分 E-R 圖之間難 免有不一緻的地方,這些沖突主要有屬性沖突 、命名沖突、結構沖突三類。
    1. 屬性沖突:屬性值的類型、取值範圍或者取值集合的不同
    2. 結構沖突:包括同一個對象在不同應用中的不同抽象
    3. 命名沖突:包括屬性名,實體名,聯系民之間的沖突
  3. 在關系資料庫的規範化理論中,執行“模式分解”時,必須遵守的兩條規範化準則是:保持原有的函數依賴關系和具有無損連接配接性。

八(資料庫恢複)

  1. 資料庫系統在運作過程中,可能會發生故障。故障主要有資料庫系統在運作過程中,可能會發生故障。故障(括号後為恢複方法)主要有**事務故障(事務撤銷 UNDO)、系統故障(重做REDO)、計算機病毒、媒體故障(資料轉儲 等級日志檔案)**四類。
  2. 在資料恢複時,對尚未做完的事務要進行UNDO處理
資料庫期末複習
  1. 加鎖協定中規定“先申請先服務”的原則,可避免資料庫出現活鎖