《數(shù)據(jù)庫(kù)原理》研究生復(fù)試知識(shí)點(diǎn)總結(jié)

第一章 緒論

  1. 數(shù)據(jù)管理技術(shù)的發(fā)展階段:人工管理階段、文件系統(tǒng)階段、數(shù)據(jù)庫(kù)階段,各階段主要特點(diǎn)
  2. 名詞基本概念
  • 數(shù)據(jù):描述事務(wù)的符號(hào)記錄稱(chēng)為數(shù)據(jù)
  • DB:DataBase數(shù)據(jù)庫(kù),是長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi)、有組織的、可共享的大量數(shù)據(jù)集合。有永久存儲(chǔ) 有組織 可共享三個(gè)基本特點(diǎn)
  • DBMS:數(shù)據(jù)庫(kù)管理系統(tǒng)
  • DBS:數(shù)據(jù)庫(kù)系統(tǒng),由DB+DBMS+應(yīng)用程序+數(shù)據(jù)庫(kù)管理員(DBA)組成的存儲(chǔ)、管理、處理和維護(hù)的數(shù)據(jù)的系統(tǒng)。
  1. 數(shù)據(jù)管理技術(shù)的發(fā)展階段:人工管理階段、文件系統(tǒng)階段、數(shù)據(jù)庫(kù)階段,其中文件階段到數(shù)據(jù)庫(kù)階段是質(zhì)的飛躍。


    數(shù)據(jù)庫(kù)三個(gè)階段的比較

數(shù)據(jù)模型:對(duì)現(xiàn)實(shí)數(shù)據(jù)特征的抽象(從現(xiàn)實(shí)世界->信息世界->機(jī)器世界)

  1. 數(shù)據(jù)模型的基本概念
    聯(lián)系的種類(lèi)下面的名詞只屬于關(guān)系模型
名次 英文名 解釋
實(shí)體 enity 客觀存在并可互相區(qū)別的事物
屬性 attribute 實(shí)體所具有某一特性
key 唯一標(biāo)識(shí)實(shí)體的屬性集稱(chēng)為碼
實(shí)體型 entitty 用實(shí)體名及其屬性名集合來(lái)抽象和刻畫(huà)同類(lèi)實(shí)體
實(shí)體集 enity set 同一類(lèi)型實(shí)體的集合
聯(lián)系 relationship 實(shí)體內(nèi)部的聯(lián)系通常指組成實(shí)體的各屬性之間的聯(lián)系,實(shí)體之間的聯(lián)系通常指不同實(shí)體集之間的聯(lián)系
聯(lián)系的種類(lèi) 一對(duì)一、一對(duì)多、多對(duì)多
關(guān)系 relation 一對(duì)關(guān)系對(duì)應(yīng)一張表
元組 tuple 表中一行即為一個(gè)元組
屬性 attitude 表中一列即為一個(gè)屬性
key 也稱(chēng)碼鍵,表中的某一個(gè)屬性可以唯一確定一個(gè)元組
domain 是一組具有相同數(shù)據(jù)類(lèi)型的值的集合
分量 元組中的一個(gè)屬性值
關(guān)系模式 對(duì)關(guān)系的描述,一般表示為:關(guān)系名(屬性1, 屬性2,...)
  1. 數(shù)據(jù)模型分類(lèi)。根據(jù)應(yīng)用不同,第一類(lèi)是概念模型,第二類(lèi)是邏輯模型和物理模型
  • 概念模型:也稱(chēng)信息模型,是按用戶(hù)的觀點(diǎn)來(lái)對(duì)數(shù)據(jù)和信息建模,主要用于數(shù)據(jù)庫(kù)設(shè)計(jì)。其中一種表示方法->實(shí)體-聯(lián)系方法又稱(chēng)E-R方法,使用E-R圖實(shí)現(xiàn)
  • 邏輯模型:主要包括層次模型網(wǎng)狀模型關(guān)系模型,另外還有面向?qū)ο髷?shù)據(jù)模型、對(duì)象關(guān)系模型、半結(jié)構(gòu)化模型等,是按計(jì)算機(jī)系統(tǒng)的觀點(diǎn)對(duì)數(shù)據(jù)建模,主要用于數(shù)據(jù)庫(kù)管理系統(tǒng)的實(shí)現(xiàn)。
  • 物理模型:是對(duì)數(shù)據(jù)最底層的抽象,它描述數(shù)據(jù)在系統(tǒng)內(nèi)部的表示方式和存取方法,或在磁盤(pán)或磁帶上的存儲(chǔ)方式和存取方法,是面向計(jì)算機(jī)的。
模型 定義 優(yōu)點(diǎn) 缺點(diǎn)
層次模型 ①有且只有一個(gè)節(jié)點(diǎn)沒(méi)有雙親結(jié)點(diǎn)
②根以外的其他節(jié)點(diǎn)有且只有一個(gè)雙親節(jié)點(diǎn)
①數(shù)據(jù)結(jié)構(gòu)較清晰
②查詢(xún)效率高
③提供了良好的完整性支持
①現(xiàn)實(shí)世界大多不是層次關(guān)系
②查詢(xún)子女節(jié)點(diǎn)必須通過(guò)雙親節(jié)點(diǎn)
③結(jié)構(gòu)過(guò)于嚴(yán)密,層次命令趨于程序化
網(wǎng)狀模型 ①允許一個(gè)以上的節(jié)點(diǎn)無(wú)雙親節(jié)點(diǎn)
②一個(gè)節(jié)點(diǎn)可以有多于一個(gè)的雙親節(jié)點(diǎn)
①能夠更直接描述世界
②具有良好的性能,存取效率高
①結(jié)構(gòu)較復(fù)雜
②需要嵌入高級(jí)語(yǔ)言,用戶(hù)不易掌握,不宜使用
③記錄之間的聯(lián)系是通過(guò)存取路徑實(shí)現(xiàn),因此用戶(hù)必須了解系統(tǒng)結(jié)構(gòu)的細(xì)節(jié)
關(guān)系模型 要求關(guān)系必須是規(guī)范化的,即關(guān)系的每一個(gè)分量必須是一個(gè)不可分的數(shù)據(jù)項(xiàng) ①建立在嚴(yán)格的數(shù)學(xué)概念上
②概念單一,數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)單、清晰
③存取路徑對(duì)用戶(hù)透明,數(shù)據(jù)獨(dú)立性,安全保密性更好
查詢(xún)效率低,需優(yōu)化
  1. 數(shù)據(jù)模型的組成要素:數(shù)據(jù)結(jié)構(gòu)+數(shù)據(jù)操作+數(shù)據(jù)完整性約束條件
  • 數(shù)據(jù)結(jié)構(gòu):描述數(shù)據(jù)庫(kù)的組成對(duì)象以及對(duì)象之間的聯(lián)系
  • 數(shù)據(jù)操作:是指對(duì)數(shù)據(jù)庫(kù)中各種對(duì)象的實(shí)例(值)允許執(zhí)行的操作的集合,包括操作及有關(guān)的操作規(guī)則。
  • 完整性約束條件:是一組完整性規(guī)則

數(shù)據(jù)庫(kù)的體系結(jié)構(gòu)(需仔細(xì)閱讀P28~31)

  1. 三級(jí)結(jié)構(gòu)模式,數(shù)據(jù)庫(kù)的體系結(jié)構(gòu)分為三級(jí):內(nèi)部級(jí)、概念級(jí)和外部級(jí)
  • 模式(概念級(jí)):是數(shù)據(jù)庫(kù)中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是所有用戶(hù)的公共數(shù)據(jù)視圖
  • 外模式(外部級(jí)):能夠看見(jiàn)和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)庫(kù)用戶(hù)的數(shù)據(jù)視圖
  • 內(nèi)模式(內(nèi)部級(jí)):也稱(chēng)存儲(chǔ)模式,一個(gè)數(shù)據(jù)庫(kù)只有一個(gè)內(nèi)模式,最接近于物理存儲(chǔ),涉及到實(shí)際數(shù)據(jù)存儲(chǔ)的結(jié)構(gòu),是數(shù)據(jù)在數(shù)據(jù)庫(kù)內(nèi)部的組織方式
  1. 兩層映象(其保證了數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)能夠具有較高的邏輯獨(dú)立性和物理獨(dú)立性)
  • 模式/內(nèi)模式映象:用于定義概念模式和內(nèi)模式之間的對(duì)應(yīng)性。一般在內(nèi)模式中描述
  • 外模式/模式映象:用于定義外模式和概念模式間的對(duì)應(yīng)性。一般在外模式中描述
  1. 兩級(jí)數(shù)據(jù)獨(dú)立性
  • 物理數(shù)據(jù)獨(dú)立性:修改內(nèi)模式時(shí)盡量不影響概念模式及外模式,則達(dá)到物理數(shù)據(jù)獨(dú)立性
  • 邏輯數(shù)據(jù)獨(dú)立性:修改概念模式時(shí)盡量不影響外模式和應(yīng)用程序

數(shù)據(jù)庫(kù)系統(tǒng)的組成(數(shù)據(jù)庫(kù)、硬件、軟件、人員)及其要求

  1. 硬件平臺(tái)及數(shù)據(jù)庫(kù)
  • 要有足夠大的內(nèi)存
  • 有足夠大的磁盤(pán)或磁盤(pán)陣列等設(shè)備存放數(shù)據(jù)庫(kù),作數(shù)據(jù)備份
  • 系統(tǒng)有較高的通道能力,以提高數(shù)據(jù)傳送效率
  1. 軟件
  • DBMS
  • 支持DBMS的OS
  • 相應(yīng)的高級(jí)語(yǔ)言操作數(shù)據(jù)庫(kù)
  • 以DBMS為核心的開(kāi)發(fā)工具
  1. 人員
  • DMA:①?zèng)Q定數(shù)據(jù)庫(kù)的信息內(nèi)容和結(jié)構(gòu)②決定數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)和存取策略③定義數(shù)據(jù)的安全性要求和完整約束條件④監(jiān)控?cái)?shù)據(jù)庫(kù)的運(yùn)行和使用⑤數(shù)據(jù)庫(kù)的改進(jìn)和重構(gòu)
  • 系統(tǒng)分析員和數(shù)據(jù)庫(kù)設(shè)計(jì)人員
  • 應(yīng)用程序人員
  • 用戶(hù):分為偶然用戶(hù)、簡(jiǎn)單用戶(hù)、復(fù)雜用戶(hù)

第二章

關(guān)系模型

可形式化表示為R(U, D, DOM, F),R為關(guān)系名,U為屬性名集合,D為U中屬性所來(lái)自的域,DOM為屬性向域的映像集合,F(xiàn)為屬性間數(shù)據(jù)的依賴(lài)關(guān)系集合
關(guān)系模型只包含單一的數(shù)據(jù)結(jié)構(gòu)——關(guān)系(是笛卡爾積的有限子集),用戶(hù)看來(lái)其中的數(shù)據(jù)邏輯結(jié)構(gòu)是一張扁平的二維表

  1. 碼:由一個(gè)或幾個(gè)屬性組成
  • 候選碼:可唯一標(biāo)識(shí)每一組的屬性組
  • 主碼:用戶(hù)選作元組標(biāo)識(shí)的一個(gè)候選鍵位主鍵
  • 外碼:某個(gè)關(guān)系的主碼相應(yīng)的屬性在另一關(guān)系中出現(xiàn),此時(shí)主鍵就是另一關(guān)系的外碼
  1. 關(guān)系有三種類(lèi)型:基本關(guān)系(或基表。是實(shí)際存在的表,實(shí)際存儲(chǔ)數(shù)據(jù)的邏輯表示),查詢(xún)表(是查詢(xún)結(jié)果對(duì)應(yīng)的表),視圖表(是由基本表或其他視圖導(dǎo)出的表,是虛表)

  2. 基本關(guān)系的六條性質(zhì)

  • 列是同質(zhì)的
  • 不同列可出自同一域
  • 列的順序無(wú)所謂
  • 行的順序無(wú)所謂
  • 任意兩個(gè)元組的候選碼不能取相同值
  • 分量必須是原子值,即每個(gè)分量都是必不可分

關(guān)系的完整性

關(guān)系模型有三類(lèi):實(shí)體完整性,參照完整性,用戶(hù)定義的完整性。前兩個(gè)必須滿(mǎn)足,稱(chēng)為關(guān)系的兩個(gè)不變性

  • 實(shí)體完整性規(guī)則:要求關(guān)系中組成主碼的屬性上不能有空值
  • 參照完整性規(guī)則:要求不引用不存在的實(shí)體,但可以是空值
  • 用戶(hù)定義完整性規(guī)則:由具體應(yīng)用環(huán)境決定,系統(tǒng)提供定義和檢驗(yàn)這類(lèi)完整性的機(jī)制

關(guān)系代數(shù) (例子P51~P57)

是一種抽象的查詢(xún)語(yǔ)言,是對(duì)關(guān)系的運(yùn)算來(lái)表達(dá)查詢(xún)

符號(hào) 含義
-
× 笛卡爾積
σ 選擇
Π 投影
? 連接
÷

注:前四個(gè)為集合運(yùn)算,后四個(gè)為關(guān)系運(yùn)算

關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL

  1. SQL特點(diǎn)
  • 綜合統(tǒng)一
  • 高度非過(guò)程化
  • 面向集合的操作方式
  • 以同一種語(yǔ)法結(jié)構(gòu)提供多種使用方式
  • 語(yǔ)言簡(jiǎn)潔,易學(xué)易用
  1. 數(shù)據(jù)定義:包括模式定義、表定義、視圖、索引
  • 創(chuàng)建模式
CREATE SCHEMA <模式名> AUTHORIZATION <用戶(hù)名> [<表定義>|<視圖定義>|<授權(quán)定義>];
  • 刪除模式
DROP SCHEMA <模式名> <CASCADE | RESTRICT>
  • 創(chuàng)建表
CREATE TABLE <表名> (<列名><數(shù)據(jù)類(lèi)型> [列級(jí)完整性約束條件]
    [, <列名><數(shù)據(jù)類(lèi)型> [列級(jí)完整性約束條件]]
    ...
    [, <表級(jí)完整性約束條件>]
);
  • 刪除表
DROP TABLE <表名> <CASCADE | RESTRICT>
  • 修改表
ALTER TABLE <表名>
    [ADD [COLUMN] <新列名> <數(shù)據(jù)類(lèi)型> [完整性約束]]
    [ADD <表級(jí)完整性約束>]
    [DROP [COLUMN] <列名> [CASCADE | RESTRICT] ]
    [DROP CONSTRAINT <完整性約束名> [RESTRICT | CASCADE] ]
    [ALTER COLUMN <列名> <數(shù)據(jù)類(lèi)型>]
    ;
  • 創(chuàng)建索引
CREATE [UNIQUE] [CLUSTER] INDEX <索引名>
    ON <表名>( <列名> [<次序>]  [, <列名> [<次序>]] ... )
;
  • 修改索引
ALTER INDEX <舊索引名> RENAME TO <新索引名>;
  • 刪除索引
DROP INDEX <索引名>;

數(shù)據(jù)查詢(xún)

其一般格式:

SELECT [ALL | DISTINCT] <目標(biāo)列表達(dá)式> [, <目標(biāo)列表達(dá)式>] ...
    FROM <表名|視圖名> [, <表名|視圖名> ...] | (<SELECT語(yǔ)句>) [AS] <別名>
    [WHERE <條件表達(dá)式>]
    [GROUP BY <列名1> [HAVING <條件表達(dá)式>]]
    [ORDER BY <列名2> [ASC|DESC]]

整個(gè)SELECT語(yǔ)句的含義是: 根據(jù)WHERE子句的條件表達(dá)式從FROM子句指定的基本表, 視圖或派生表中找出滿(mǎn)足條件的元組,再按SELECT子句中的目標(biāo)列表達(dá)式選出元組中的屬性值形成結(jié)果表
如果有GROUP BY 子句, 則結(jié)果將按照列1的值(滿(mǎn)足 HAVING中的提條件的組 )進(jìn)行分組
如果有ORDER BY子句,則結(jié)果表還需要按<列2>的值升序或降序排序

查詢(xún)條件 謂詞
比較 = > < >= <= != <> !> !<; NOT+上述比較運(yùn)算符
確定范圍 BETWEEN AND, NOT BETWEEN AND
確定集合 IN, NOT IN
字符匹配 LIKE,NOT LIKE
空值 IS NULL, IS NOT NULL
多重條件(邏輯運(yùn)算) AND,OR,NOT
  1. 聚集函數(shù)
函數(shù)名 含義
COUNT(*) 統(tǒng)計(jì)元組個(gè)數(shù)
COUNT( [DISTINCT|ALL] <列名>) 統(tǒng)計(jì)一列中值的個(gè)數(shù)
SUM( [DISTINCT|ALL] <列名>) 計(jì)算一列值的總和(類(lèi)型必須為數(shù)值型)
AVG( [DISTINCT|ALL] <列名>) 計(jì)算一列值的平均值(類(lèi)型必須為數(shù)值型)
MAX( [DISTINCT|ALL] <列名>) 求出一列值的最大值
MIN( [DISTINCT|ALL] <列名>) 求出一列值的最小值
  1. GROUP BY 子句
    將查詢(xún)結(jié)果按某一列或多列的值分組,值相等的為一組(分組后聚集函數(shù)將作用于每一個(gè)組,即每一個(gè)組都有一個(gè)函數(shù)值)

數(shù)據(jù)更新

  1. 插入數(shù)據(jù)
  • 插入元組
INSERT INTO <表名> [(<屬性列1> [,<屬性列2>] ...)]
    VALUES(<常量1> [,<常量2>] ...);
  • 插入子查詢(xún)結(jié)果
INSERT INTO <表名> [(<屬性列1> [, <屬性列2>] ...)]
    子查詢(xún);
  1. 修改數(shù)據(jù)
UPDATE <表名> SET <列名>=<表達(dá)式> [,<列名>=<表達(dá)式>] ...
    [WHERE <條件>];
  1. 刪除數(shù)據(jù)
DELETE
    FROM <表名>
    [WHERE <條件>]
;

視圖

  • 創(chuàng)建視圖
CREATE VIEW <視圖名> [(<列名> [,<列名>] ...)]
    AS <子查詢(xún)>
    [WITH CHECK OPTION]
;
  • 刪除視圖
DROP VIEW <視圖名> [CASCADE];
  • 更新視圖: 對(duì)視圖的查詢(xún)是和基本表相同的,但是更新操作則受到下列三條規(guī)則的限制
    ①如果視圖是從多個(gè)基本表使用聯(lián)接操作導(dǎo)出的,則不允許更新。
    ②如果導(dǎo)出的視圖使用了分組和聚合操作,也不允許更新。
    ③如果視圖是從單個(gè)基本表使用選擇和投影操作導(dǎo)出的,并且包括了基本表的主碼或某個(gè)候選碼,則可以執(zhí)行操作。(這就相當(dāng)于在基本表上操作)。

第四章 數(shù)據(jù)安全性

數(shù)據(jù)安全性是指保護(hù)數(shù)據(jù)庫(kù)以防止不合法使用所造成的數(shù)據(jù)泄露, 更改或破壞

  1. 數(shù)據(jù)的不安全因素
    ①非授權(quán)用戶(hù)對(duì)數(shù)據(jù)庫(kù)的惡意存取和破壞
    ②數(shù)據(jù)庫(kù)中重要或敏感的數(shù)據(jù)被泄露
    ③安全壞境的脆弱性
  2. 實(shí)現(xiàn)數(shù)據(jù)庫(kù)系統(tǒng)安全性的技術(shù)和方法有多種,最重要的是存取控制技術(shù)和審計(jì)技術(shù)。

目前許多大型DBMS 達(dá)到了C2級(jí),其安全版本達(dá)到了B1
C2級(jí)的DBMS必須具有自主存取控制功能和初步的審計(jì)功能
B1級(jí)的DBMS必須具有強(qiáng)制存取控制和增強(qiáng)的審計(jì)功能
自主存取控制功能一般是通過(guò)SQL 的GRANT語(yǔ)句和REVOKE語(yǔ)句來(lái)實(shí)現(xiàn)的

  1. 常用存取控制方法
  • 自主存取控制(Discretionary Access Control ,簡(jiǎn)稱(chēng)DAC)

同一用戶(hù)對(duì)于不同的數(shù)據(jù)對(duì)象有不同的存取權(quán)限
不同的用戶(hù)對(duì)同一對(duì)象也有不同的權(quán)限
用戶(hù)還可將其擁有的存取權(quán)限轉(zhuǎn)授給其他用戶(hù)

  • 強(qiáng)制存取控制(Mandatory Access Control,簡(jiǎn)稱(chēng) MAC)

每一個(gè)數(shù)據(jù)對(duì)象被標(biāo)以一定的密級(jí)
每一個(gè)用戶(hù)也被授予某一個(gè)級(jí)別的許可證
對(duì)于任意一個(gè)對(duì)象,只有具有合法許可證的用戶(hù)才可以存取

數(shù)據(jù)完整性

  1. 為了維護(hù)數(shù)據(jù)庫(kù)的完整性,DBMS必須能夠?qū)崿F(xiàn)如下功能:
    ①提供定義完整性約束條件的機(jī)制
    ②提供完整性檢查的方法
    ③進(jìn)行違約處理

  2. 實(shí)體完整性檢查和違約處理: 在 列級(jí), 表級(jí)定義主碼后, 每更新一次,DBMS將自動(dòng)檢查(有全表掃描, B+樹(shù)索引)

  • 檢查主碼值是否唯一,如果不唯一則拒絕插入或修改
  • 檢查主碼的各個(gè)屬性是否為空,只有一個(gè)為空就拒絕插入或修改
  1. 參照完整性:用FOREIGN KEY短語(yǔ)定義哪些列為外碼,用REFERENCE指明這些外碼參照哪些表的主碼. 參照完整性檢查和違約處理
    |被參照表(如Student表)|參照表(如SC表)|違約處理|
    |-|-|-|
    |可能破壞參照完整性|插入元組|拒絕|
    |可能破壞參照完整性|修改外碼值|拒絕|
    |刪除元組|可能破壞參照完整性|拒絕/級(jí)聯(lián)刪除/設(shè)置唯恐值|
    |修改主碼值|可能破壞參照完整性|拒絕/級(jí)聯(lián)修改/設(shè)置為空值|
    ||||
    |備注:|拒絕|即NO ACTION|
    ||級(jí)聯(lián)|即CASCADE|

  2. 用戶(hù)定義完整性
    ①屬性上約束條件的定義:包括 列值非空(NOT NULL), 列值唯一(UNIQUE), 檢查列值是否滿(mǎn)足一個(gè)條件表達(dá)式(CHECK 短語(yǔ)) .
    屬性上約束條件的檢查和違約處理: 當(dāng)往表中插入元組或修改屬性的值時(shí),DBMS將檢查屬性上的約束是否被滿(mǎn)足,如不滿(mǎn)足則被拒絕執(zhí)行
    ②元組上約束條件的定義:與屬性上類(lèi)似, 用CHECK定義元組上的約束條件,即元組級(jí)限制(可設(shè)置不同屬性之間的相互約束條件).
    元組上約束條件的檢查和違約處理: 當(dāng)往表中插入元組或修改屬性的值時(shí),DBMS將檢查元組上的約束條件是否被滿(mǎn)足,若不滿(mǎn)足則唄拒絕執(zhí)行

  3. 完整性約束命名句子
    ①完整性約束命名句子

CONSTRAINT <完整性約束條件命名> <完整約束條件>
# 完整性約束條件包括: NOT NULL, UNIQUE, PRIMARY KEY, FOREEIGN KEY, CHAECK 短語(yǔ)等

②修改完整性約束條件:使用ALTER TABLE 語(yǔ)句

  1. 斷言:通過(guò)聲明性斷言(declarative asssrtions)來(lái)制定更具有一般性的約束, 可以定義設(shè)計(jì)多個(gè)表或聚集操作的比較復(fù)雜的完整性約束, 斷言創(chuàng)建后任何涉及關(guān)系的操作都會(huì)觸發(fā)DBMS對(duì)斷言的檢查
#創(chuàng)建斷言
CREATE ASSERTION <斷言名> <CHECK 子句>
#刪除斷言
DROP ASSERTION <斷言名>

觸發(fā)器(須細(xì)看P168)

觸發(fā)器又叫做事件-條件-動(dòng)作(event-condition-action)規(guī)則, 是用戶(hù)定義在關(guān)系表上的一類(lèi)由事件驅(qū)動(dòng)的特殊過(guò)程, 當(dāng)特定的系統(tǒng)事件(如表的增刪改查操作,事物的結(jié)束)發(fā)生時(shí),對(duì)規(guī)則的條件進(jìn)行檢查,若成立則執(zhí)行

  1. 定義觸發(fā)器
CREATE TRIGGER <觸發(fā)器名>  #每當(dāng)觸發(fā)事件發(fā)生時(shí),該觸發(fā)器被激活
    {BEFORE|AFTER} <觸發(fā)事件> ON <表名> #指明觸發(fā)器激活時(shí)是在觸發(fā)器事件前或后
    REFERENCING NEW | OLD ROW AS <變量>  #REFERENCING 指出引用的變量
    FOR EACH {ROW|STATEMENT}  #定義觸發(fā)器的類(lèi)型,指明動(dòng)作體的頻率
    [WHEN <觸發(fā)器條件>] <觸發(fā)動(dòng)作體>  #僅當(dāng)觸發(fā)條件為真時(shí)才執(zhí)行觸發(fā)動(dòng)作體
  1. 激活觸發(fā)器: 觸發(fā)器的執(zhí)行是由觸發(fā)事件激活并由數(shù)據(jù)庫(kù)服務(wù)器自動(dòng)執(zhí)行, 激活應(yīng)遵循如下執(zhí)行順序
    ①執(zhí)行該表上的BEFORE觸發(fā)器
    ②激活觸發(fā)器的SQL語(yǔ)句
    ③執(zhí)行該表上的AFTER觸發(fā)器

  2. 刪除觸發(fā)器

DROP TRIGGER <觸發(fā)器名> ON <表名>;

第六章 關(guān)系數(shù)據(jù)理論

一個(gè)好的關(guān)系模式應(yīng)當(dāng)不會(huì)發(fā)生插入異常,刪除異常和更新異常,數(shù)據(jù)冗余應(yīng)盡可能少.

  1. 數(shù)據(jù)依賴(lài)是一個(gè)關(guān)系內(nèi)部屬性與屬性之間的約束關(guān)系,這種關(guān)系是通過(guò)屬性間的相等是否體現(xiàn)出來(lái)的數(shù)據(jù)相關(guān)聯(lián)系;其中最重要的是函數(shù)依賴(lài)多值依賴(lài)
  2. 規(guī)范化: 一個(gè)低一級(jí)范式的關(guān)系模式通過(guò)模式分解可以轉(zhuǎn)換為若干個(gè)高一級(jí)范式的關(guān)系模式的集合,這個(gè)過(guò)程就是規(guī)范化.
  3. 1NF:第一范式,每一個(gè)分量必須是不可分的數(shù)據(jù)項(xiàng). (缺點(diǎn):數(shù)據(jù)冗余,插入異常,刪除異常,更新異常)
  4. 2NF:第二范式,首先屬于1NF,且每一個(gè)非主屬性完全函數(shù)依賴(lài)與任何一個(gè)候選碼(缺點(diǎn):插入異常,刪除異常,修改復(fù)雜)
  5. 3NF:第三范式,首先屬于2NF,且不存在傳遞依賴(lài)(并不能完全消除各種異常情況和數(shù)據(jù)冗余)
  6. BCNF:修正第三范式,(基本排除了任何屬性對(duì)碼的傳遞依賴(lài)和部分依賴(lài))
    BCNF其性質(zhì)有三:
    ①所有非主屬性對(duì)每一個(gè)碼都是完全函數(shù)依賴(lài)關(guān)系
    ②所有主屬性對(duì)每一個(gè)不包含它的碼也是完全函數(shù)依賴(lài)
    ③沒(méi)有任何屬性完全函數(shù)依賴(lài)于非碼的任何一組屬性
  7. 4NF:第四范式,不允許有非平凡且非函數(shù)依賴(lài)的多值依賴(lài)②允許的非平凡多值依賴(lài)是函數(shù)依賴(lài)
    規(guī)范化的基本步驟

數(shù)據(jù)依賴(lài)的公理系統(tǒng)

  1. Armstrong公理系統(tǒng):公理系統(tǒng)是模式分解算法的理論基礎(chǔ),Armstrong是一個(gè)有效且完備的公理系統(tǒng).

設(shè)U為屬性集總體,F是U上的一組函數(shù)依賴(lài),于是有關(guān)系模式R<U, F>.對(duì)于R<U, F>來(lái)說(shuō)有以下的推理規(guī)則:

  • 自反律: 若Y?X?U,則X->Y為F所蘊(yùn)含
  • 增廣律: 若X->Y為F所蘊(yùn)含,且Z?U, 則XZ->YZ為F所蘊(yùn)含
  • 傳遞律: 若X->Y及Y->Z為F所蘊(yùn)含,則X->Z為F所蘊(yùn)含
    由三條規(guī)律推出以下三條推理規(guī)則:
  • 合并規(guī)則:由X->Y, X->Z,有X->YZ
  • 偽傳遞規(guī)則:由X->Y, WY->Z,有XW->Z
  • 分解規(guī)則:由X->Y及Z?Y,有X->Z
  1. 閉包F+:在關(guān)系模式R<U,F>中為F所邏輯蘊(yùn)含的函數(shù)依賴(lài)的全體叫作F的閉包,即為F+.

  2. X關(guān)于函數(shù)依賴(lài)集F的閉包XF+
    定義:設(shè)F為屬性集U上的一組函數(shù)依賴(lài),X?U,XF+={A|X->A能由F根據(jù)Armstrong公理導(dǎo)出},XF+稱(chēng)為屬性集X關(guān)于函數(shù)依賴(lài)集F的閉包

  3. 最小依賴(lài)集:又稱(chēng)最小覆蓋,滿(mǎn)足以下條件

①F中任一函數(shù)依賴(lài)的右部只含有一個(gè)屬性
②F中不存在這樣的函數(shù)依賴(lài)X->A,使得F與F-{X->A}等價(jià)
③F中不存在這樣的函數(shù)依賴(lài)X->A,X有真子集Z使得F-{X->A}∪{Z->A}與F等價(jià)

模式分解定義:分解具有無(wú)損連接性 保持函數(shù)依賴(lài) 既要保持函數(shù)依賴(lài),又要具有無(wú)損連接性

  1. 關(guān)于模式分解的幾個(gè)重要事實(shí)是:
    ①若要求分解保持函數(shù)依賴(lài),那一定可以達(dá)到3NF,不一定達(dá)到BCNF
    ①若要求分解保持函數(shù)依賴(lài),又具有無(wú)損連接性,可以達(dá)到3NF,不一定達(dá)到BCNF
    ①若要求分解具有無(wú)損連接性,那一定可以達(dá)到4NF

  2. 損聯(lián)接性分解: 分解后的關(guān)系自然連接后完全等于分解前的關(guān)系,則這個(gè)分解相對(duì)于F是無(wú)損聯(lián)接分解。判斷分解無(wú)損聯(lián)接性的算法(二種)

  • 表格法
  • 設(shè)R的分解為ρ={R1,R2},F為R所滿(mǎn)足的函數(shù)依賴(lài)集,則分解ρ具有無(wú)損聯(lián)接性的充分必要條件是:R1∩R2→(R1-R2) 或者 R1∩R2→(R2-R1)
  1. 保持函數(shù)依賴(lài)的分解: Let F’ = F1U…FiU .. UFn , 若F與F’等價(jià),即F’ + = F + ,則保持函數(shù)依賴(lài)。判斷方法:F所有原函數(shù)依賴(lài)可以由F’的函數(shù)依賴(lài)邏輯導(dǎo)出

第七章 數(shù)據(jù)庫(kù)設(shè)計(jì)概述

  1. 數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的開(kāi)發(fā)也是一項(xiàng)軟件工程,稱(chēng)為數(shù)據(jù)庫(kù)工程,數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)也有生存期的概念,通常包括六個(gè)階段:
  • 需求分析階段:需求收集,分析,處理->DD(數(shù)據(jù)字典)和DFD(數(shù)據(jù)流圖)
  • 概念設(shè)計(jì)階段:設(shè)計(jì)概念結(jié)構(gòu)->E-R圖
  • 邏輯設(shè)計(jì)階段:設(shè)計(jì)邏輯結(jié)構(gòu)和數(shù)據(jù)模型
  • 物理設(shè)計(jì)階段:關(guān)系模式存取方法(B+樹(shù),hash索引,聚簇存取),設(shè)計(jì)物理文件存儲(chǔ)結(jié)構(gòu)
  • 實(shí)現(xiàn)階段:物理實(shí)現(xiàn),實(shí)驗(yàn)性運(yùn)行
  • 運(yùn)行維護(hù)階:使用,維護(hù)數(shù)據(jù)庫(kù)
  1. 概念設(shè)計(jì)的主要步驟:
    ①進(jìn)行數(shù)據(jù)抽象,設(shè)計(jì)局部概念模式
    ②將局部概念模式綜合成全局概念模式
    ③評(píng)審

  2. 采用ER方法進(jìn)行數(shù)據(jù)庫(kù)概念設(shè)計(jì)分成三步進(jìn)行:
    ①首先設(shè)計(jì)局部ER模式
    ②然后把各局部ER模式綜合成全局ER模式
    ③最后對(duì)全局ER模式進(jìn)行優(yōu)化

  3. 邏輯結(jié)構(gòu)設(shè)計(jì):把E-R圖轉(zhuǎn)換為與選用DBMS所支持的數(shù)據(jù)模型相符合的邏輯結(jié)構(gòu)

  4. 數(shù)據(jù)模型優(yōu)化:其結(jié)果不唯一,方法為:
    ①確定數(shù)據(jù)依賴(lài)
    ②消除冗余關(guān)系
    ③確定關(guān)系模式處于第幾范式
    ④根據(jù)需求分析確定哪種模式合適應(yīng)用環(huán)境(并不是規(guī)范化程度越高的關(guān)系越優(yōu))

  5. E-R圖向關(guān)系轉(zhuǎn)換的原則:

  • 一個(gè)實(shí)體型轉(zhuǎn)換為一個(gè)關(guān)系模式。(屬性,碼)
  • 1:1聯(lián)系可轉(zhuǎn)為獨(dú)立關(guān)系模式,也可與其一合并;(若合并,聯(lián)系的屬性也一同合并)
  • 1:n聯(lián)系可轉(zhuǎn)為獨(dú)立關(guān)系模式,亦可與n端合并;(若合并,聯(lián)系的屬性也一同合并)
  • m:n聯(lián)系應(yīng)轉(zhuǎn)換為一個(gè)獨(dú)立關(guān)系模式;(碼:各實(shí)體碼組合,聯(lián)系的屬性也在此獨(dú)立關(guān)系中)
  • 三個(gè)或三個(gè)以上實(shí)體間的多元聯(lián)系應(yīng)轉(zhuǎn)為一個(gè)關(guān)系模式 ;
  • 具有相同碼的關(guān)系可合并

第八章 SQL編程

主語(yǔ)言為C,其格式為: EXEC SQL <SQL語(yǔ)句>
主語(yǔ)言為C,其格式為: # SQL {<SQL語(yǔ)句>}
建立嵌入式SQL的連接語(yǔ)法:`EXEC SQL CONNECT TO target [AS connection-name][USER user-name];(備注:target是要連接的數(shù)據(jù)庫(kù)服務(wù)器)

  1. 存儲(chǔ)過(guò)程
    ①創(chuàng)建存儲(chǔ)過(guò)程:
CREATE OR REPLACE PROCEDURE 過(guò)程名 ([參數(shù)1,參數(shù)2,...])
    AS <過(guò)程化SQL塊>;

②執(zhí)行存儲(chǔ)過(guò)程:

CALL/PERFORM PROCEDURE 過(guò)程名 ([參數(shù)1,參數(shù)2,...]);

③修改存儲(chǔ)過(guò)程:

ALTER PROCEDURE 過(guò)程名1 RENAME TO 過(guò)程名2;

④刪除存儲(chǔ)過(guò)程:

DROP PROCEDURE 過(guò)程名;
  1. ODBC: 由用戶(hù)應(yīng)用程序+ODBC驅(qū)動(dòng)程序管理器+數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序+數(shù)據(jù)源構(gòu)成
    其工作流程:
  • 配置數(shù)據(jù)源
  • 初始化環(huán)境
  • 建立連接
  • 分配語(yǔ)句句柄
  • 執(zhí)行SQL語(yǔ)句
  • 結(jié)果處理集
  • 終止處理

第九章 查詢(xún)優(yōu)化

步驟為:

  • 查詢(xún)分析:語(yǔ)法,詞法
  • 查詢(xún)檢查:語(yǔ)義,權(quán)限,安全性檢查
  • 查詢(xún)優(yōu)化:代數(shù)優(yōu)化,物理優(yōu)化
  • 查詢(xún)執(zhí)行:代碼生成
  1. 查詢(xún)優(yōu)化的目的就是為了系統(tǒng)在執(zhí)行時(shí)既省時(shí)間又能提高效率,在關(guān)系代數(shù)運(yùn)算中,通常是先進(jìn)行笛卡爾積或聯(lián)接運(yùn)算,再進(jìn)行選擇和投影,恰當(dāng)?shù)匕才胚x擇、投影和聯(lián)接的順序,就可實(shí)現(xiàn)查詢(xún)優(yōu)化。優(yōu)化的策略主要有以下幾點(diǎn):
  • 在關(guān)系代數(shù)表達(dá)式中盡可能早地執(zhí)行選擇操作(早做選擇).
  • 把笛卡爾積和隨后的選擇操作合并成連接運(yùn)算 (盡可能做自然連接或等值連接,不做笛卡爾積).
  • 同時(shí)計(jì)算一連串的選擇和投影操作,使操作對(duì)象盡可能變小。
  • 連接多個(gè)對(duì)象時(shí),先做連接結(jié)果小的連接。
  • 計(jì)算表達(dá)式之前先估計(jì)一下怎么計(jì)算合算

第十章 數(shù)據(jù)庫(kù)恢復(fù)技術(shù)

  1. 事務(wù)是數(shù)據(jù)庫(kù)的邏輯工作單位,其特點(diǎn):原子性、一致性、隔離性和持續(xù)性
    定義事務(wù)的語(yǔ)句一般有三條:BEGIN TRANSATION; COMMIT; ROLLBACK;
    事務(wù)開(kāi)始通常由BEGIN TRANSACTION, COMMIT或ROLLBACK結(jié)束,commit提交事務(wù)的所有操作,rollback表示回滾,即事務(wù)運(yùn)行中發(fā)生了故障,系統(tǒng)將事務(wù)中對(duì)數(shù)據(jù)庫(kù)的所有已完成的操作全部撤銷(xiāo),回滾到事務(wù)開(kāi)始的狀態(tài)
    ②COMMIT:
  2. 故障類(lèi)型:事務(wù)故障、系統(tǒng)故障和介質(zhì)故障
  3. 恢復(fù)中最經(jīng)常使用的技術(shù):數(shù)據(jù)庫(kù)轉(zhuǎn)儲(chǔ)和登記日志文件
  4. 恢復(fù)的基本原理:利用存儲(chǔ)的后備副本、日志文件或數(shù)據(jù)庫(kù)鏡像中的冗余數(shù)據(jù)來(lái)重建數(shù)據(jù)庫(kù)
  5. 常用恢復(fù)技術(shù)
  • 事務(wù)故障的恢復(fù):UNDO
  • 系統(tǒng)故障的恢復(fù):未提交的事務(wù)做UNDO,已提交的做REDO
  • 介質(zhì)故障的恢復(fù):重裝備份并恢復(fù)到一致性狀態(tài) + REDO
  1. 提高恢復(fù)效率的技術(shù)
  • 檢查點(diǎn)技術(shù)
    ①可以提高系統(tǒng)故障的恢復(fù)效率
    ②可以在一定程度上提高利用動(dòng)態(tài)轉(zhuǎn)儲(chǔ)備份進(jìn)行介質(zhì)故障恢復(fù)的效率

  • 鏡像技術(shù)
    鏡像技術(shù)可以改善介質(zhì)故障的恢復(fù)效率

第十一章 并發(fā)控制

  1. 數(shù)據(jù)庫(kù)的并發(fā)控制以事務(wù)為單位,每一時(shí)刻只有一個(gè)事務(wù)在運(yùn)行(在單處理機(jī)系統(tǒng)中,事務(wù)的并行執(zhí)行實(shí)際上是并行操作輪流交叉運(yùn)行)
  2. 數(shù)據(jù)庫(kù)的并發(fā)控制通常使用封鎖機(jī)制(也有時(shí)間戳,樂(lè)觀控制法,多本并發(fā)控制等其他方法), 其基本類(lèi)型有兩種排他鎖(又稱(chēng)寫(xiě)鎖, X鎖)共享鎖(又稱(chēng)讀鎖, S鎖)
橫向?yàn)槭聞?wù)T1
縱向?yàn)槭聞?wù)T2
X S -
X N N Y
S N Y Y
- Y Y Y
備注:Y:相容請(qǐng)求,N:不相容請(qǐng)求
  1. 常用的封鎖協(xié)議
    不同級(jí)別的封鎖協(xié)議提供不同的數(shù)據(jù)一致性保證,提供不同的數(shù)據(jù)共享度
名稱(chēng) 定義 優(yōu)點(diǎn) 缺點(diǎn)
一級(jí)鎖協(xié)議 事務(wù)T在修改數(shù)據(jù)R之前必須先加X(jué)鎖,直到事務(wù)結(jié)束才釋放 可防止丟失修改并保證事務(wù)可恢復(fù) 不保證可重復(fù)讀和不讀"臟"數(shù)據(jù)
二級(jí)鎖協(xié)議 在一級(jí)鎖的基礎(chǔ)上,增加事務(wù)T在讀取數(shù)據(jù)R之前必須先加S鎖,讀完后立即釋放 可防止丟失修改和讀"臟"數(shù)據(jù) 不保證可重復(fù)讀
三級(jí)鎖協(xié)議 在一級(jí)鎖的基礎(chǔ)上,增加事務(wù)T在讀取數(shù)據(jù)R之前必須先加S鎖,直到事務(wù)結(jié)束才釋放 可防止丟失修改和讀"臟"數(shù)據(jù) -
  1. 并發(fā)控制機(jī)制調(diào)度并發(fā)事務(wù)操作是否正確的判別準(zhǔn)則是可串行性
  • 并發(fā)操作的正確性則通常由兩段鎖協(xié)議(簡(jiǎn)稱(chēng)2PL,①獲得封鎖,在對(duì)任何數(shù)據(jù)讀寫(xiě)之前要先申請(qǐng)并獲得對(duì)該數(shù)據(jù)的封鎖②釋放封鎖,釋放封鎖之后,事務(wù)不再申請(qǐng)和獲得任何其他鎖)來(lái)保證。
  • 兩段鎖協(xié)議是可串行化調(diào)度的充分條件,但不是必要條件
  1. 對(duì)數(shù)據(jù)對(duì)象施加封鎖,帶來(lái)問(wèn)題
  • 活鎖:解決方法先來(lái)先服務(wù)
  • 死鎖:預(yù)防方法 一次封鎖法 順序封鎖法
  1. 死鎖的診斷與解除:超時(shí)法和等待圖法
  2. 封鎖粒度: 封鎖的粒度越大->數(shù)據(jù)庫(kù)所能封鎖的數(shù)據(jù)單元越少,并發(fā)度越小,系統(tǒng)開(kāi)銷(xiāo)小; 粒度越小,則相反.多粒度封鎖分為
  • 顯式封鎖: 直接加到數(shù)據(jù)對(duì)象上的封鎖
  • 隱式封鎖: 由于其上級(jí)結(jié)點(diǎn)加鎖而使該數(shù)據(jù)對(duì)象加上了鎖
  1. 意向鎖(intention lock)
  • 目的:提高對(duì)某個(gè)數(shù)據(jù)對(duì)象加鎖時(shí)系統(tǒng)的檢查效率
  • IS,IX,SIX鎖
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容