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

第一章 緒論

  1. 數(shù)據(jù)管理技術(shù)的發(fā)展階段:人工管理階段吵取、文件系統(tǒng)階段泥彤、數(shù)據(jù)庫階段嫂粟,各階段主要特點
  2. 名詞基本概念
  • 數(shù)據(jù):描述事務(wù)的符號記錄稱為數(shù)據(jù)
  • DB:DataBase數(shù)據(jù)庫踩衩,是長期存儲在計算機(jī)內(nèi)柴罐、有組織的徽缚、可共享的大量數(shù)據(jù)集合。有永久存儲 有組織 可共享三個基本特點
  • DBMS:數(shù)據(jù)庫管理系統(tǒng)
  • DBS:數(shù)據(jù)庫系統(tǒng)革屠,由DB+DBMS+應(yīng)用程序+數(shù)據(jù)庫管理員(DBA)組成的存儲凿试、管理、處理和維護(hù)的數(shù)據(jù)的系統(tǒng)似芝。
  1. 數(shù)據(jù)管理技術(shù)的發(fā)展階段:人工管理階段那婉、文件系統(tǒng)階段、數(shù)據(jù)庫階段党瓮,其中文件階段到數(shù)據(jù)庫階段是質(zhì)的飛躍详炬。


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

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

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

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

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

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

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

第二章

關(guān)系模型

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

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

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

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

關(guān)系的完整性

關(guān)系模型有三類:實體完整性拆融,參照完整性蠢琳,用戶定義的完整性。前兩個必須滿足镜豹,稱為關(guān)系的兩個不變性

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

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

是一種抽象的查詢語言趟脂,是對關(guān)系的運算來表達(dá)查詢

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

注:前四個為集合運算泰讽,后四個為關(guān)系運算

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

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

數(shù)據(jù)查詢

其一般格式:

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

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

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

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

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

視圖

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

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

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

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

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

  1. 常用存取控制方法
  • 自主存取控制(Discretionary Access Control 萤厅,簡稱DAC)

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

  • 強(qiáng)制存取控制(Mandatory Access Control橄抹,簡稱 MAC)

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

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

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

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

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

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

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

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

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

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

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

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

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

  2. 刪除觸發(fā)器

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

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

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

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

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

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

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

  • 自反律: 若Y?X?U,則X->Y為F所蘊含
  • 增廣律: 若X->Y為F所蘊含,且Z?U, 則XZ->YZ為F所蘊含
  • 傳遞律: 若X->Y及Y->Z為F所蘊含,則X->Z為F所蘊含
    由三條規(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所邏輯蘊含的函數(shù)依賴的全體叫作F的閉包,即為F+.

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

  3. 最小依賴集:又稱最小覆蓋,滿足以下條件

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

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

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

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

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

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

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

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

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

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

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

  • 一個實體型轉(zhuǎn)換為一個關(guān)系模式愧杯。(屬性,碼)
  • 1:1聯(lián)系可轉(zhuǎn)為獨立關(guān)系模式鞋既,也可與其一合并力九;(若合并,聯(lián)系的屬性也一同合并)
  • 1:n聯(lián)系可轉(zhuǎn)為獨立關(guān)系模式邑闺,亦可與n端合并跌前;(若合并,聯(lián)系的屬性也一同合并)
  • m:n聯(lián)系應(yīng)轉(zhuǎn)換為一個獨立關(guān)系模式陡舅;(碼:各實體碼組合抵乓,聯(lián)系的屬性也在此獨立關(guān)系中)
  • 三個或三個以上實體間的多元聯(lián)系應(yīng)轉(zhuǎn)為一個關(guān)系模式 ;
  • 具有相同碼的關(guān)系可合并

第八章 SQL編程

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

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

②執(zhí)行存儲過程:

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

③修改存儲過程:

ALTER PROCEDURE 過程名1 RENAME TO 過程名2;

④刪除存儲過程:

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

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

步驟為:

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

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

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

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

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

  1. 數(shù)據(jù)庫的并發(fā)控制以事務(wù)為單位,每一時刻只有一個事務(wù)在運行(在單處理機(jī)系統(tǒng)中,事務(wù)的并行執(zhí)行實際上是并行操作輪流交叉運行)
  2. 數(shù)據(jù)庫的并發(fā)控制通常使用封鎖機(jī)制(也有時間戳,樂觀控制法,多本并發(fā)控制等其他方法), 其基本類型有兩種排他鎖(又稱寫鎖, X鎖)共享鎖(又稱讀鎖, S鎖)
橫向為事務(wù)T1
縱向為事務(wù)T2
X S -
X N N Y
S N Y Y
- Y Y Y
備注:Y:相容請求,N:不相容請求
  1. 常用的封鎖協(xié)議
    不同級別的封鎖協(xié)議提供不同的數(shù)據(jù)一致性保證酪夷,提供不同的數(shù)據(jù)共享度
名稱 定義 優(yōu)點 缺點
一級鎖協(xié)議 事務(wù)T在修改數(shù)據(jù)R之前必須先加X鎖,直到事務(wù)結(jié)束才釋放 可防止丟失修改并保證事務(wù)可恢復(fù) 不保證可重復(fù)讀和不讀"臟"數(shù)據(jù)
二級鎖協(xié)議 在一級鎖的基礎(chǔ)上,增加事務(wù)T在讀取數(shù)據(jù)R之前必須先加S鎖,讀完后立即釋放 可防止丟失修改和讀"臟"數(shù)據(jù) 不保證可重復(fù)讀
三級鎖協(xié)議 在一級鎖的基礎(chǔ)上,增加事務(wù)T在讀取數(shù)據(jù)R之前必須先加S鎖,直到事務(wù)結(jié)束才釋放 可防止丟失修改和讀"臟"數(shù)據(jù) -
  1. 并發(fā)控制機(jī)制調(diào)度并發(fā)事務(wù)操作是否正確的判別準(zhǔn)則是可串行性
  • 并發(fā)操作的正確性則通常由兩段鎖協(xié)議(簡稱2PL,①獲得封鎖,在對任何數(shù)據(jù)讀寫之前要先申請并獲得對該數(shù)據(jù)的封鎖②釋放封鎖,釋放封鎖之后,事務(wù)不再申請和獲得任何其他鎖)來保證榴啸。
  • 兩段鎖協(xié)議是可串行化調(diào)度的充分條件,但不是必要條件
  1. 對數(shù)據(jù)對象施加封鎖晚岭,帶來問題
  • 活鎖:解決方法先來先服務(wù)
  • 死鎖:預(yù)防方法 一次封鎖法 順序封鎖法
  1. 死鎖的診斷與解除:超時法和等待圖法
  2. 封鎖粒度: 封鎖的粒度越大->數(shù)據(jù)庫所能封鎖的數(shù)據(jù)單元越少鸥印,并發(fā)度越小,系統(tǒng)開銷小; 粒度越小,則相反.多粒度封鎖分為
  • 顯式封鎖: 直接加到數(shù)據(jù)對象上的封鎖
  • 隱式封鎖: 由于其上級結(jié)點加鎖而使該數(shù)據(jù)對象加上了鎖
  1. 意向鎖(intention lock)
  • 目的:提高對某個數(shù)據(jù)對象加鎖時系統(tǒng)的檢查效率
  • IS,IX,SIX鎖
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末库说,一起剝皮案震驚了整個濱河市狂鞋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌潜的,老刑警劉巖骚揍,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異啰挪,居然都是意外死亡疏咐,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門脐供,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浑塞,“玉大人,你說我怎么就攤上這事政己∽煤荆” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵歇由,是天一觀的道長卵牍。 經(jīng)常有香客問我,道長沦泌,這世上最難降的妖魔是什么糊昙? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮谢谦,結(jié)果婚禮上释牺,老公的妹妹穿的比我還像新娘。我一直安慰自己回挽,他們只是感情好没咙,可當(dāng)我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著千劈,像睡著了一般祭刚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上墙牌,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天涡驮,我揣著相機(jī)與錄音,去河邊找鬼喜滨。 笑死捉捅,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鸿市。 我是一名探鬼主播锯梁,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼即碗,長吁一口氣:“原來是場噩夢啊……” “哼焰情!你這毒婦竟也來了陌凳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤内舟,失蹤者是張志新(化名)和其女友劉穎合敦,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體验游,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡充岛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了亦鳞。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片街夭。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡镰惦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蒜魄,到底是詐尸還是另有隱情,我是刑警寧澤场躯,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布谈为,位于F島的核電站,受9級特大地震影響踢关,放射性物質(zhì)發(fā)生泄漏伞鲫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一签舞、第九天 我趴在偏房一處隱蔽的房頂上張望秕脓。 院中可真熱鬧,春花似錦儒搭、人聲如沸撒会。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诵肛。三九已至,卻和暖如春默穴,著一層夾襖步出監(jiān)牢的瞬間怔檩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工蓄诽, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留薛训,地道東北人。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓仑氛,卻偏偏與公主長得像乙埃,于是被迫代替她去往敵國和親闸英。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,781評論 2 354

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