《資料庫系統概論》 (第4版) 個人筆記

SJLin96發表於2018-08-10

第01章 緒論

第02章 關聯式資料庫

第03章 關聯式資料庫標準語言SQL

第04章 資料庫安全性

第05章 資料庫完整性

第06章 關係資料理論

第07章 資料庫設計

第8章 資料庫程式設計

第9章 關係查詢處理和查詢優化

第10章 資料庫恢復技術

第11章 併發控制


 

第01章 緒論

  • DBS包括DB和DBMS:
    DBS(DataBase System):資料庫系統,一般由資料庫、資料庫管理系統、應用系統、資料庫管理員(DBA)構成。
    DB(DataBase):資料庫,資料按照一定格式存放在計算機儲存裝置上。
    DBMS(DataBase Management System):資料庫管理系統,一個科學組織和儲存資料,高效地管理和維護資料的系統軟體。
  • 資料庫資料特點:永久儲存、有組織、可共享

 

  • 兩類資料模型:①概念模型 ②邏輯模型和物理模型
    概念模型:也稱資訊模型,按照使用者的觀點來對資料和資訊建模,用於資料庫設計。
    邏輯模型:計算機系統的觀點對資料建模,用於DBMS的實現。主要包括:層次模型、網狀模型、關係模型、物件導向模型、物件關係模型等。
    物理模型:對資料低層的抽象,描述資料在系統內部的表示方式和存取方法,物理模型的具體實現是DBMS的任務。

 

  • 資料的完整性約束條件:
    一組完整性規則的集合。
    完整性規則是給定資料模型中資料及其聯絡所具有的制約和依存規則。
    限定資料庫狀態以及狀態的變化,保證資料的正確、有效、相容。

 

  • 資訊世界中的基本概念:
    實體(Entity):客觀存在並可相互區別的事物稱為實體。可以是具體的人、事、物或抽象的概念。
    屬性(Attribute):實體所具有的某一特性稱為屬性。一個實體可以由若干個屬性來刻畫。
    碼(Key):唯一標識實體的屬性集稱為碼
    域(Domain):屬性的取值範圍稱為該屬性的域。
    實體型(Entity Type):用實體名及其屬性名集合來抽象和刻畫同類實體稱為實體型
    實體集(Entity Set):同一型別實體的集合稱為實體集
    聯絡(Relationship):
    ①現實世界中事物內部以及事物之間的聯絡在資訊世界中反映為實體內部的聯絡和實體之間的聯絡。
    ②實體內部的聯絡通常是指組成實體的各屬性之間的聯絡
    ③實體之間的聯絡通常是指不同實體集之間的聯絡

 

  • 非關係模型:層次模型(Hierarchical Model)、網狀模型(Network Model)
    關係模型(Relational Model) 
  • 層次模型,滿足下面兩個條件的基本層次聯絡的集合為層次模型(就是樹結構):
    ①有且只有一個結點沒有雙親結點,這個結點稱為根結點
    ②根以外的其它結點有且只有一個雙親結點
  • 網狀模型,滿足下面兩個條件的基本層次聯絡的集合(一對多關係,結構上像有向圖):
    ①允許一個以上的結點無雙親;
    ②一個結點可以有多於一個的雙親。

 

  • 關係模型是目前最重要的一種資料模型。
  • 關聯式資料庫系統是支援關係模型的資料庫系統。
  • 一些術語:
    關係(Relation):一個關係對應通常說的一張表。
    元組(Tuple):表中的一行即為一個元組。
    屬性(Attribute):表中的一列即為一個屬性,給每一個屬性起一個屬性名。
    碼(Key):也稱碼鍵。表中某個屬性組,可以唯一確定一個元組。例如學號可以確定唯一一個學生。
    域(Domain):屬性的取值範圍。
    分量:元組中的一個屬性值。
    關係模式:對關係的描述。關係名(屬性1,屬性2,…,屬性n)。例如:
    學生(學號,姓名,年齡,性別,系,年級)
  • 關係必須是規範化的,滿足一定的規範條件。
    最基本的規範條件:關係的每一個分量必須是一個不可分的資料項,不允許表中還有表

 

  • 型(Type):對某一類資料的結構和屬性的說明
    值(Value):是型的一個具體賦值
  • 模式(Schema):
    資料庫邏輯結構和特徵的描述
    是型的描述
    反映的是資料的結構及其聯絡
    模式是相對穩定的
  • 例項(Instance):
    模式的一個具體值
    反映資料庫某一時刻的狀態
    同一個模式可以有很多例項
    例項隨資料庫中的資料的更新而變動

 

  • 資料庫系統的三級模式結構:模式(Schema)、外模式(External Schema)、內模式(Internal Schema)

  • 模式(也稱邏輯模式):
    ①資料庫中全體資料的邏輯結構和特徵的描述
    ②所有使用者的公共資料檢視,綜合了所有使用者的需求
  • 一個資料庫只有一個模式
  • 模式的地位:是資料庫系統模式結構的中間層
    ①與資料的物理儲存細節和硬體環境無關
    ②與具體的應用程式、開發工具及高階程式設計語言無關

 

  • 外模式(也稱子模式或使用者模式):
    ①資料庫使用者(包括應用程式設計師和終端使用者)使用的區域性資料的邏輯結構和特徵的描述
    ②資料庫使用者的資料檢視,是與某一應用有關的資料的邏輯表示
  • 外模式的用途:①保證資料庫安全性的一個有力措施 ②每個使用者只能看見和訪問所對應的外模式中的資料

 

  • 內模式(也稱儲存模式):
    ①是資料物理結構和儲存方式的描述
    ②是資料在資料庫內部的表示方式:
    a. 記錄的儲存方式(順序儲存,按照B樹結構儲存,按hash方法儲存)
    b. 索引的組織方式
    c. 資料是否壓縮儲存
    d. 資料是否加密
    e. 資料儲存記錄結構的規定
  • 一個資料庫只有一個內模式

 

第02章 關聯式資料庫

  • 是一組具有相同資料型別的值的集合。
    例:整數、實數、介於某個取值範圍的整數、長度指定長度的字串集合、{‘男’,‘女’}

 

  • 笛卡爾積:

  • 元組(Tuple):

  • 分量(Component):

  • 基數(Cardinal number):笛卡爾積可能的元組個數。

 

  • 關係:

  • n目關係必有n個屬性。

 

  • 三類關係
    ①基本關係(基本表或基表):實際存在的表,是實際儲存資料的邏輯表示
    ②查詢表:查詢結果對應的表
    ③檢視表:由基本表或其他檢視表匯出的表,是虛表,不對應實際儲存的資料

 

  • 關係模式(Relation Schema)是型,關係是值
  • 關係模式:是對關係的描述,是靜態的、穩定的。
  • 關係:關係模式在某一時刻的狀態或內容,動態的、隨時間不斷變化的。
  • 一個關係模式應當是一個五元組:
    R(U,D,DOM,F)
    R:關係名,它是符號化的元組語義
    U:一組屬性
    D:屬性組中所來自的域
    DOM:屬性到域的對映
    F:屬性組U上的一組資料依賴

    其中D和DOM對模式設計關係不大,所以可以當做三元組:R<U,F>

 

  • 常用的關係操作
    ①查詢:選擇、投影、連線、除、並、交、差
    ②資料更新:插入、刪除、修改
    ③查詢的表達能力是其中最主要的部分
    ④選擇、投影、並、差、笛卡爾積是5種基本操作
  • 關係操作的特點是集合操作方式:操作的物件和結果都是集合,一次一集合的方式

 

  • 實體完整性參照完整性:關係模型必須滿足的完整性約束條件,由系統自動支援
  • 使用者定義的完整性:應用領域需要遵循的約束條件,體現了具體領域中的語義約束
  • 實體完整性規則(Entity Integrity): 若屬性A是基本關係R的主屬性,則屬性A不能取空值。
  • 關係間的引用:在關係模型中實體及實體間的聯絡都是用關係來描述的,因此可能存在著關係與關係間的引用。
  • 外碼:設F是基本關係R的一個或一組屬性,但不是關係R的碼。如果F與基本關係S的主碼Ks相對應,則稱F是基本關係R的外碼。
  • 基本關係R稱為參照關係(Referencing Relation)
  • 基本關係S稱為被參照關係(Referenced Relation)或目標關係(Target Relation)

  • 上圖選修關係,參照課程關係和學生關係。學號、課程號是選修關係的外碼。同時,學號為選修關係的主碼。
  • 主碼,也稱主鍵。外碼,也稱外來鍵。
  • 參照完整性規則:
    若屬性(或屬性組)F是基本關係R的外碼它與基本關係S的主碼Ks相對應(基本關係R和S不一定是不同的關係),則對於R中每個元組在F上的值必須為:①或者取空值(F的每個屬性值均為空值) ②或者等於S中某個元組的主碼值
    (通俗點說,就是要不就取空值,要不就要取一個存在的值)

 

  • 關係代數運算子:

 

  • 專門的關係運算:選擇(行)、投影(列)、連線、除。

 

 

第03章 關聯式資料庫標準語言SQL

  • 檢視是從一個或幾個基本表(或檢視)匯出的表。
  • 與基本表不同,檢視是一個虛表。資料庫中只存放檢視的定義,不存放檢視對應的資料,資料仍然存放在原來的基本表中。
  • 可通過更新檢視操作,來對實際的基本表進行插入、刪除和修改。

 

  • 基本表
    本身獨立存在的表
    SQL中一個關係就對應一個基本表
    一個(或多個)基本表對應一個儲存檔案
    一個表可以帶若干索引
  • 儲存檔案
    邏輯結構組成了關聯式資料庫的內模式
    物理結構是任意的,對使用者透明
  • 檢視
    從一個或幾個基本表匯出的表
    資料庫中只存放檢視的定義而不存放檢視對應的資料
    檢視是一個虛表
    使用者可以在檢視上再定義檢視

 

  • SQL的資料定義功能: 模式定義、表定義、檢視和索引的定義。
  • 定義模式實際上定義了一個名稱空間。在這個空間中可以定義該模式包含的資料庫物件,例如基本表、檢視、索引等。
  • 在使用MS SQL的時候,一般建立資料庫我們都習慣於使用CREATE DATABASE 來完成,而使用CREATE SCHEMA來建立架構。
  • 在MySQL的語法操作中(MySQL5.0.2之後),可以使用CREATE DATABASE和CREATE SCHEMA來建立資料庫,兩者在功能上是一致的。
  • 建立基本表:
    CREATE TABLE <表名>
    (<列名> <資料型別>[ <列級完整性約束條件> ]
    [,<列名> <資料型別>[ <列級完整性約束條件>] ] …
    [,<表級完整性約束條件> ] );
    如果完整性約束條件涉及到該表的多個屬性列,則必須定義在表級上,否則既可以定義在列級也可以定義在表級。
  • 修改基本表:
    ALTER TABLE <表名>
    [ ADD <新列名> <資料型別> [ 完整性約束 ] ]
    [ DROP <完整性約束名> ]
    [ ALTER COLUMN<列名> <資料型別> ];
  • 刪除基本表:
    DROP TABLE <表名>[RESTRICT| CASCADE];

    RESTRICT:刪除表是有限制的。欲刪除的基本表不能被其他表的約束所引用;如果存在依賴該表的物件,則此表不能被刪除。
    CASCADE:刪除該表沒有限制。在刪除基本表的同時,相關的依賴物件一起刪除
  • 資料查詢:
    SELECT [ALL|DISTINCT] <目標列表示式>
    [,<目標列表示式>] …
    FROM <表名或檢視名>[, <表名或檢視名> ] …
    [ WHERE <條件表示式> ]
    [ GROUP BY <列名1> [ HAVING <條件表示式> ] ]
    [ ORDER BY <列名2> [ ASC|DESC ] ];

 

  • 常用查詢條件:

  • ORDER BY子句:可以按一個或多個屬性列排序

    升序:ASC;降序:DESC;預設值為升序

    當排序列含空值時
    ASC:排序列為空值的元組最後顯示
    DESC:排序列為空值的元組最先顯示
  • 聚集函式:
    ①計數
    COUNT([DISTINCT|ALL] *)
    COUNT([DISTINCT|ALL] <列名>)
    ②計算總和
    SUM([DISTINCT|ALL] <列名>)
    ③計算平均值
    AVG([DISTINCT|ALL] <列名>)
    ④最大最小值
    MAX([DISTINCT|ALL] <列名>)
    MIN([DISTINCT|ALL] <列名>)

 

  • 連線查詢:同時涉及多個表的查詢
  • 自身連線:一個表與其自己進行連線,需要給表起別名以示區別。由於所有屬性名都是同名屬性,因此必須使用別名字首。
  • 不相關子查詢:子查詢的查詢條件不依賴於父查詢,一般可以處理為連線。
  • 相關子查詢:子查詢的查詢條件依賴於父查詢。

 

  • 建立檢視:
    CREATE VIEW
    <檢視名> [(<列名> [,<列名>]…)]
    AS <子查詢>
    [WITH CHECK OPTION];

 

第04章 資料庫安全性

  • 三類計算機系統安全性問題:技術安全類、管理安全類、政策法律類。
  • 安全標準:TCSEC標準、CC標準。
  • 計算機系統中,安全措施是一級一級層層設定:

  • 資料庫安全性控制的常用方法:使用者標識和鑑定(帳號密碼)、存取控制(使用者訪問許可權)、檢視、審計、密碼儲存。

 

  • 存取控制機制組成:定義使用者許可權、合法許可權檢查
  • 常用存取控制方法:
    自主存取控制(Discretionary Access Control ,簡稱DAC
    C2級
    靈活
    強制存取控制(Mandatory Access Control,簡稱MAC
    B1級
    嚴格
  • 自主存取控制方法:通過SQL 的GRANT 語句和 REVOKE 語句實現
  • GRANT語句的一般格式:
    GRANT <許可權>[,<許可權>]...
    [ON <物件型別> <物件名>]
    TO <使用者>[,<使用者>]...
    [WITH GRANT OPTION];
  • WITH GRANT OPTION子句:
    指定:可以再授予(就授權給這個使用者,它可以再去授權給別的使用者)
    沒有指定:不能傳播
  • 例:
    ①把查詢Student表許可權授給使用者U1:
    GRANT SELECT
    ON TABLE Student
    TO U1;
    ②把對Student表和Course表的全部許可權授予使用者U2和U3:
    GRANT ALL PRIVILIGES
    ON TABLE Student, Course
    TO U2, U3;
  • REVOKE:授予的許可權可以由DBA或其他授權者用REVOKE語句收回
  • REVOKE語句的一般格式為:
    REVOKE <許可權>[,<許可權>]...
    [ON <物件型別> <物件名>]
    FROM <使用者>[,<使用者>]...;

 

  • 資料庫角色:被命名的一組與資料庫操作相關的許可權。角色是許可權的集合,可以為一組具有相同許可權的使用者建立一個角色,簡化授權的過程。
  • 建立角色:CREATE ROLE <角色名>
  • 例子:
    ①首先建立一個角色R1
    CREATE ROLE R1;
    ②然後使用GRANT語句,使角色R1擁有Student表的SELECT、UPDATE、INSERT許可權
    GRANT SELECT,UPDATE,INSERT
    ON TABLE Student
    TO R1;
    ③角色給具體使用者
    GRANT R1
    TO 王平,張明,趙玲;

 

  • 強制存取控制(MAC):保證更高程度的安全性、使用者能不能直接感知或進行控制、適用於對資料有嚴格而固定密級分類的部門
  • 主體是系統中的活動實體:DBMS所管理的實際使用者,代表使用者的各程式
    客體是系統中的被動實體,是受主體操縱的:檔案、基表、索引、檢視
  • 主體的敏感度標記稱為許可證級別(Clearance Level)
    客體的敏感度標記稱為密級(Classification Level)
  • 強制存取控制規則:
    ①僅當主體的許可證級別大於或等於客體的密級時,該主體才能取相應的客體
    ②僅當主體的許可證級別等於客體的密級時,該主體才能相應的客體
  • DAC + MAC安全檢查示意圖:

 

  • 什麼是審計?
    審計日誌(Audit Log):將使用者對資料庫的所有操作記錄在上面
    DBA利用審計日誌:找出非法存取資料的人、時間和內容
    C2以上安全級別的DBMS必須具有
  • 審計分為:使用者級審計、系統級審計
    ①使用者級審計
    針對自己建立的資料庫表或檢視進行審計
    記錄所有使用者對這些表或檢視的一切成功和(或)不成功的訪問要求以及各種型別的SQL操作
    ②系統級審計
    DBA設定
    監測成功或失敗的登入要求
    監測GRANT和REVOKE操作以及其他資料庫級許可權下的操作

 

  • 統計資料庫:①允許使用者查詢聚集型別的資訊(如合計、平均值等)②不允許查詢單個記錄資訊
  • 統計資料庫查詢規則:
    規則1:任何查詢至少要涉及N(N足夠大)個以上的記錄
    規則2:任意兩個查詢的相交資料項不能超過M個
    規則3:任一使用者的查詢次數不能超過1+(N-2)/M

 

第05章 資料庫完整性

  • 資料庫的完整性:資料的正確性和相容性

 

  • 實體完整性定義:CREATE TABLE中用PRIMARY KEY定義
  • 插入或對主碼列進行更新操作時,RDBMS按照實體完整性規則自動進行檢查。包括:
    ①檢查主碼值是否唯一,如果不唯一則拒絕插入或修改
    ②檢查主碼的各個屬性是否為空,只要有一個為空就拒絕插入或修改
  • 系統會自動為主碼建立一個主索引,方便檢索,索引一般是B+樹。
  • 參照完整性定義:在CREATE TABLE中用FOREIGN KEY短語定義哪些列為外碼
  • 可能破壞參照完整性的情況及違約處理:

  • 參照完整性違約處理:
    ①拒絕(NO ACTION)執行:預設策略
    ②級聯(CASCADE)操作:刪除一個元組,其他相關的會級聯刪除
    ③設定為空值(SET-NULL):對於參照完整性,除了應該定義外碼,還應定義外碼列是否允許空值

 

  • 使用者定義完整性,在屬性上的定義:CREATE TABLE時定義
    ①列值非空(NOT NULL):
    Sno CHAR(9) NOT NULL
    ②列值唯一(UNIQUE):
    Dname CHAR(9) UNIQUE
    ③檢查列值是否滿足一個布林表示式(CHECK):
    Ssex CHAR(2) CHECK (Ssex IN (‘男’,‘女’) ) 
  • 在CREATE TABLE時可以用CHECK短語定義元組上的約束條件,即元組級的限制。
  • 同屬性值限制相比,元組級的限制可以設定不同屬性之間的取值的相互約束條件。
  • 例如:

    CREATE TABLE Student
    (Sno CHAR(9),
    Sname CHAR(8) NOT NULL,
    Ssex CHAR(2),
    Sage SMALLINT,
    Sdept CHAR(20),
    PRIMARY KEY (Sno),
    CHECK (Ssex='女' OR Sname NOT LIKE 'Ms.%')
    /*定義了元組中Sname和Ssex兩個屬性值之間的約束條件*/
    );

    性別是女性的元組都能通過該項檢查,因為Ssex=‘女’成立;
    當性別是男性時,要通過檢查則名字一定不能以Ms.打頭

 

  • 觸發器(Trigger)是使用者定義在關係表上的一類由事件驅動的特殊過程:
    由伺服器自動啟用
    可以進行更為複雜的檢查和操作,具有更精細和更強大的資料控制能力
  • 定義觸發器:
    CREATE TRIGGER <觸發器名>
    {BEFORE | AFTER} <觸發事件> ON <表名>
    FOR EACH {ROW | STATEMENT}
    [WHEN <觸發條件>]
    <觸發動作體>
  • 定義觸發器的語法說明:
    ①建立者:表的擁有者
    ②觸發器名
    ③表名:觸發器的目標表
    ④觸發事件:INSERT、DELETE、UPDATE
    ⑤觸發器型別:行級觸發器(FOR EACH ROW)、語句級觸發器(FOR EACH STATEMENT)
    ⑥觸發條件:觸發條件為真 or 省略WHEN觸發條件
    ⑦觸發動作體:觸發動作體可以是一個匿名PL/SQL過程塊,也可以是對已建立儲存過程的呼叫
  • 可以在一張表上定義觸發器(可以多個),對這張表或其他表進行操作。但對其他表的操作可能會造成其他的觸發器被觸發,注意別造成死迴圈,一般也別定義得太複雜。

 

第06章 關係資料理論

  • 完整性約束的表現形式
    限定屬性取值範圍:例如學生成績必須在0-100之間
    定義屬性值間的相互關連(主要體現於值的相等與否),這就是資料依賴,它是資料庫模式設計的關鍵
  • 資料依賴的型別:函式依賴(Functional Dependency,簡記為FD)、多值依賴(Multivalued Dependency,簡記為MVD)、其他

 

  • 函式依賴:若對於R(U)的任意一個可能的關係r,r中不可能存在兩個元組在X上的屬性值相等, 而在Y上的屬性值不等, 則稱 “X函式確定Y” 或 “Y函式依賴於X”,記作X→Y(通俗點說,就是X這個屬性,決定了唯一一個Y,但反過來不一定)。所有關係例項均要滿足,是一種自然屬性。
  • 若X→Y,Y→X,則記作X←→Y。
  • 如果X→Y,但Y 不是 X的子集,則稱X→Y是非平凡的函式依賴(一般情況下討論的都是這種)
    若X→Y,但Y ⊆ X, 則稱X→Y是平凡的函式依賴
  • 在R(U)中,如果X→Y,並且對於X的任何一個真子集X’,都有X’ →Y, 則稱Y對X完全函式依賴。
    若X→Y,但Y不完全函式依賴於X,則稱Y對X部分函式依賴。
  • 傳遞函式依賴:

  • 例如:
    在關係Std(Sno, Sdept, Mname)中,有: Sno → Sdept,Sdept → Mname
    Mname傳遞函式依賴於Sno

 

  • 正規化的種類:
    第一正規化(1NF)
    第二正規化(2NF)
    第三正規化(3NF)
    BC正規化(BCNF)
    第四正規化(4NF)
    第五正規化(5NF)
  • 各種正規化之間存在聯絡(從小到大的包含關係):

  • 1NF的定義:如果一個關係模式R的所有屬性都是不可分的基本資料項,則R∈1NF。
  • 第一正規化是對關係模式的最起碼的要求。不滿足第一正規化的資料庫模式不能稱為關聯式資料庫。
  • 2NF:若R∈1NF,且每一個非主屬性完全函式依賴於碼,則R∈2NF。
  • 3NF:若R∈3NF,則每一個非主屬性既不部分依賴於碼也不傳遞依賴於碼。
  • BCNF:若R∈BCNF:
    所有非主屬性對每一個碼都是完全函式依賴
    所有的主屬性對每一個不包含它的碼,也是完全函式依賴
    沒有任何屬性完全函式依賴於非碼的任何一組屬性

 

  • 把低一級的關係模式分解為若干個高一級的關係模式的方法不是唯一的。只有能夠保證分解後的關係模式與原關係模式等價,分解方法才有意義。
  • 三種模式分解等價的定義:
    ⒈ 分解具有無損連線性
    ⒉ 分解要保持函式依賴
    ⒊ 分解既要保持函式依賴,又要具有無損連線性

 

第07章 資料庫設計

  • 結構(資料)設計和行為(處理)設計相結合
  • 結構和行為分離的設計

  • 資料庫設計分6個階段:需求分析、概念結構設計、邏輯結構設計、物理結構設計、資料庫實施、資料庫執行和維護。
    ①需求分析:準確瞭解與分析使用者需求(包括資料與處理);這是最困難、最耗費時間的一步。
    ②概念結構設計:通過對使用者需求進行綜合、歸納與抽象,形成一個獨立於具體DBMS的概念模型。這是整個資料庫設計的關鍵。
    ③邏輯結構設計:將概念結構轉換為某個DBMS所支援的資料模型,並對其進行優化
    ④物理結構設計:為邏輯資料模型選取一個最適合應用環境的物理結構(包括儲存結構和存取方法)
    ⑤資料庫實施:運用DBMS提供的資料庫語言(如SQL)及宿主語言,根據邏輯設計和物理設計的結果:a. 建立資料庫;b. 編制與除錯應用程式;c. 組織資料入庫;d. 進行試執行
    ⑥資料庫執行和維護階段:資料庫應用系統經過試執行後即可投入正式執行;在資料庫系統執行過程中必須不斷地對其進行評價、調整與修改。
  • 需求分析和概念設計獨立於任何資料庫管理系統
  • 邏輯設計和物理設計與選用的DBMS密切相關

 

  • 結構化分析方法(Structured Analysis,簡稱SA方法):從最上層的系統組織機構入手;自頂向下、逐層分解分析系統。
  • 首先把任何一個系統都抽象為:

  • 分解處理功能和資料
    ②分解處理功能:將處理功能的具體內容分解為若干子功能
    ②分解資料:處理功能逐步分解同時,逐級分解所用資料,形成若干層次的資料流圖
    ③表達方法
    處理邏輯:用判定表或判定樹來描述
    資料:用資料字典來描述
  • 將分析結果再次提交給使用者,徵得使用者的認可

 

第8章 資料庫程式設計

  • SQL語言提供了兩種不同的使用方式:互動式、嵌入式(不是我們電子那個嵌入式,意思是嵌入到其他高階語言)
  • 為什麼要引入嵌入式SQL:SQL語言是非過程性語言、事務處理應用需要高階語言
  • 嵌入式SQL是將SQL語句嵌入程式設計語言中,被嵌入的程式設計語言,如C、C++、Java,稱為宿主語言,簡稱主語言
  • 遊標:解決集合性操作語言與過程性操作語言的不匹配

 

第9章 關係查詢處理和查詢優化

  • 查詢處理的四個階段:查詢分析、查詢檢查、查詢優化、查詢執行

  • 查詢優化
    代數優化:指關係代數表示式的優化
    物理優化:指存取路徑和底層操作演算法的選擇
  • 集中式資料庫的執行開銷:
    ①磁碟存取塊數(I/O代價,最主要的)
    ②處理機時間(CPU代價)
    ③查詢的記憶體開銷
  • 分散式資料庫:
    總代價=I/O代價+CPU代價+記憶體代價+通訊代價

 

  • 選擇運算儘可能先做(優化策略中最重要、最基本的一條)。
  • 把投影運算和選擇運算同時進行。
  • 把投影同其前或其後的雙目運算結合起來。

 

第10章 資料庫恢復技術

  • 事務定義:
    ①一個資料庫操作序列
    ②一個不可分割的工作單位
    ③恢復和併發控制的基本單位
  • 事務和程式:
    ①在關聯式資料庫中,一個事務可以是一條或多條SQL語句,也可以包含一個或多個程式。
    ②一個程式通常包含多個事務。
  • 當使用者沒有顯式地定義事務時,DBMS按預設規定自動劃分事務
  • 事務的四個特性:原子性、一致性、隔離性、持續性

 

  • 各類故障,對資料庫的影響有兩種可能性:
    ①是資料庫本身被破壞
    ②是資料庫沒有被破壞,但資料可能不正確,這是由於事務的執行被非正常終止造成的。
  • 恢復機制:資料轉儲(backup)、登陸日誌檔案(logging)

 

第11章 併發控制

  • 事務併發執行帶來的問題:
    ①會產生多個事務同時存取同一資料的情況
    ②可能會存取和儲存不正確的資料,破壞事務一致性和資料庫的一致性
  • 封鎖就是事務T在對某個資料物件(例如表、記錄等)操作之前,先向系統發出請求,對其加鎖。
    加鎖後事務T就對該資料物件有了一定的控制,在事務T釋放它的鎖之前,其它的事務不能更新此資料物件。
  • 基本封鎖型別
    排它鎖(Exclusive Locks,簡記為X鎖)(可讀可寫)
    共享鎖(Share Locks,簡記為S鎖)(讀)

相關文章