數(shù)據(jù)庫(kù)筆記(薩師煊版)
數(shù)據(jù)庫(kù)技術(shù)總結(jié)數(shù)據(jù)(Data):是數(shù)據(jù)庫(kù)中存儲(chǔ)的基本對(duì)象數(shù)據(jù)的定義:描述事物的符號(hào)記錄數(shù)據(jù)的種類:文字、圖形、圖象、聲音等數(shù)據(jù)的特點(diǎn):數(shù)據(jù)與其語義是不可分的數(shù)據(jù)庫(kù)(Database,簡(jiǎn)稱DB) :是長(zhǎng)
數(shù)據(jù)庫(kù)技術(shù)總結(jié)
數(shù)據(jù)(Data):是數(shù)據(jù)庫(kù)中存儲(chǔ)的基本對(duì)象
數(shù)據(jù)的定義:描述事物的符號(hào)記錄
數(shù)據(jù)的種類:文字、圖形、圖象、聲音等
數(shù)據(jù)的特點(diǎn):數(shù)據(jù)與其語義是不可分的
數(shù)據(jù)庫(kù)(Database,簡(jiǎn)稱DB) :是長(zhǎng)期儲(chǔ)存在計(jì)算機(jī)內(nèi)、有組織的、可共享的大量數(shù)據(jù)集合 數(shù)據(jù)庫(kù)的特征:
? 數(shù)據(jù)按一定的數(shù)據(jù)模型組織、描述和儲(chǔ)存
? 可為各種用戶共享
? 冗余度較小
? 數(shù)據(jù)獨(dú)立性較高
? 易擴(kuò)展
數(shù)據(jù)庫(kù)管理系統(tǒng)(Database Management System,簡(jiǎn)稱DBMS ):是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件。
DBMS 的用途:科學(xué)地組織和存儲(chǔ)數(shù)據(jù)、高效地獲取和維護(hù)數(shù)據(jù)
DBMS 的主要功能:
數(shù)據(jù)庫(kù)的運(yùn)行管理
保證數(shù)據(jù)的安全性、完整性、 多用戶對(duì)數(shù)據(jù)的并發(fā)使用 發(fā)生故障后的系統(tǒng)恢復(fù)
? 數(shù)據(jù)庫(kù)的建立和維護(hù)功能(實(shí)用程序)
數(shù)據(jù)庫(kù)數(shù)據(jù)批量裝載
數(shù)據(jù)庫(kù)轉(zhuǎn)儲(chǔ)
介質(zhì)故障恢復(fù)
數(shù)據(jù)庫(kù)的重組織
,性能監(jiān)視等
數(shù)據(jù)庫(kù)系統(tǒng)(Database System,簡(jiǎn)稱DBS )是指在計(jì)算機(jī)系統(tǒng)中引入數(shù)據(jù)庫(kù)后的系統(tǒng)構(gòu)成。
? 數(shù)據(jù)庫(kù)系統(tǒng)的構(gòu)成
? 由數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系統(tǒng)(及其開發(fā)工具)、應(yīng)用系統(tǒng)、數(shù)據(jù)庫(kù)管理員(和用戶)構(gòu)
成。
? 數(shù)據(jù)管理
? 對(duì)數(shù)據(jù)進(jìn)行分類、組織、編碼、存儲(chǔ)、檢索和維護(hù),是數(shù)據(jù)處理的中心問題
數(shù)據(jù)模型這個(gè)工具來抽象、表示和處理現(xiàn)實(shí)世界中的數(shù)據(jù)和信息。
? 數(shù)據(jù)模型應(yīng)滿足三方面要求
? 能比較真實(shí)地模擬現(xiàn)實(shí)世界
? 容易為人所理解
? 便于在計(jì)算機(jī)上實(shí)現(xiàn)
? 數(shù)據(jù)模型分成兩個(gè)不同的層次
(1) 概念模型 也稱信息模型,它是按用戶的觀點(diǎn)來對(duì)數(shù)據(jù)和信息建模。
(2) 數(shù)據(jù)模型 主要包括網(wǎng)狀模型、層次模型、關(guān)系模型等,它是按計(jì)算機(jī)系統(tǒng)的觀點(diǎn)對(duì)數(shù)據(jù)建模。
? 客觀對(duì)象的抽象過程---兩步抽象
? 現(xiàn)實(shí)世界中的客觀對(duì)象抽象為概念模型;
? 把概念模型轉(zhuǎn)換為某一DBMS 支持的數(shù)據(jù)模型。
? 數(shù)據(jù)結(jié)構(gòu)
? 對(duì)象類型的集合
數(shù)據(jù)結(jié)構(gòu)是對(duì)系統(tǒng)靜態(tài)特性的描述
? 兩類對(duì)象
? 與數(shù)據(jù)類型、內(nèi)容、性質(zhì)有關(guān)的對(duì)象
? 與數(shù)據(jù)之間聯(lián)系有關(guān)的對(duì)象
? 數(shù)據(jù)操作
? 對(duì)數(shù)據(jù)庫(kù)中各種對(duì)象(型)的實(shí)例(值)允許執(zhí)行的操作及有關(guān)的操作規(guī)則
? 數(shù)據(jù)操作的類型
? 檢索
? 更新(包括插入、刪除、修改)
,? 數(shù)據(jù)模型對(duì)操作的定義
? 操作的確切含義
? 操作符號(hào)
? 操作規(guī)則(如優(yōu)先級(jí))
? 實(shí)現(xiàn)操作的語言
? 數(shù)據(jù)操作是對(duì)系統(tǒng)動(dòng)態(tài)特性的描述。
? 數(shù)據(jù)模型對(duì)約束條件的定義
? 反映和規(guī)定本數(shù)據(jù)模型必須遵守的基本的通用的完整性約束條件。
提供定義完整性約束條件的機(jī)制,以反映具體應(yīng)用所涉及的數(shù)據(jù)必須遵守的特定的語義約束條件。
信息世界中的基本概念
(1) 實(shí)體(Entity )
客觀存在并可相互區(qū)別的事物稱為實(shí)體。
(2) 屬性(Attribute )
實(shí)體所具有的某一特性稱為屬性。
一個(gè)實(shí)體可以由若干個(gè)屬性來刻畫。
(3) 碼(Key )
唯一標(biāo)識(shí)實(shí)體的屬性集稱為碼。
(4) 域(Domain )
屬性的取值范圍稱為該屬性的域。
(5) 實(shí)體型(Entity Type)
用實(shí)體名及其屬性名集合來抽象和刻畫
同類實(shí)體稱為實(shí)體型
(6) 實(shí)體集(Entity Set)
同型實(shí)體的集合稱為實(shí)體集
聯(lián)系(Relationship )
現(xiàn)實(shí)世界中事物內(nèi)部以及事物之間的聯(lián)系在信息世界
中反映為實(shí)體內(nèi)部的聯(lián)系和實(shí)體之間的聯(lián)系
實(shí)體型間聯(lián)系
,兩個(gè)實(shí)體型 一對(duì)一聯(lián)系(1:1)
三個(gè)實(shí)體型 一對(duì)多聯(lián)系(1:n)
一個(gè)實(shí)體型 多對(duì)多聯(lián)系(m:n)
兩個(gè)實(shí)體型間的聯(lián)系
? 一對(duì)一聯(lián)系
? 如果對(duì)于實(shí)體集A 中的每一個(gè)實(shí)體,實(shí)體集B 中至多有一個(gè)實(shí)體與之聯(lián)系,反之亦然,
則稱實(shí)體集A 與實(shí)體集B 具有一對(duì)一聯(lián)系。記為1:1。
? 一對(duì)多聯(lián)系
? 如果對(duì)于實(shí)體集A 中的每一個(gè)實(shí)體,實(shí)體集B 中有n 個(gè)實(shí)體(n ?0)與之聯(lián)系,反之,
對(duì)于實(shí)體集B 中的每一個(gè)實(shí)體,實(shí)體集A 中至多只有一個(gè)實(shí)體與之聯(lián)系,則稱實(shí)體集A 與實(shí)體集B 有一對(duì)多聯(lián)系
記為1:n
? 多對(duì)多聯(lián)系(m:n)
? 如果對(duì)于實(shí)體集A 中的每一個(gè)實(shí)體,實(shí)體集B 中有n 個(gè)實(shí)體(n ?0)與之聯(lián)系,反之,
對(duì)于實(shí)體集B 中的每一個(gè)實(shí)體,實(shí)體集A 中也有m 個(gè)實(shí)體(m ?0)與之聯(lián)系,則稱實(shí)體集A 與實(shí)體B 具有多對(duì)多聯(lián)系。記為m:n
概念模型的表示方法
? 實(shí)體-聯(lián)系方法(E-R方法)
? 用E-R 圖來描述現(xiàn)實(shí)世界的概念模型
? E-R 方法也稱為E-R 模型
常用數(shù)據(jù)模型
? 非關(guān)系模型
? 層次模型(Hierarchical Model)
? 網(wǎng)狀模型(Network Model )
? 數(shù)據(jù)結(jié)構(gòu):以基本層次聯(lián)系為基本單位
基本層次聯(lián)系:兩個(gè)記錄以及它們之間的一對(duì)多(包括一對(duì)一) 的聯(lián)系
? 關(guān)系模型(Relational Model)
? 數(shù)據(jù)結(jié)構(gòu):表
,? 面向?qū)ο竽P?Object Oriented Model)
? 數(shù)據(jù)結(jié)構(gòu):對(duì)象
? 層次模型
滿足下面兩個(gè)條件的基本層次聯(lián)系的集合為層次模型。
1. 有且只有一個(gè)結(jié)點(diǎn)沒有雙親結(jié)點(diǎn),這個(gè)結(jié)點(diǎn)稱為根 結(jié)點(diǎn)
2. 根以外的其它結(jié)點(diǎn)有且只有一個(gè)雙親結(jié)點(diǎn)
? 表示方法
實(shí)體型:用記錄類型描述。
每個(gè)結(jié)點(diǎn)表示一個(gè)記錄類型。
屬性:用字段描述。每個(gè)記錄類型可包含若干個(gè)字段。 聯(lián)系:用結(jié)點(diǎn)之間的連線表示記錄(類)型之間的 一對(duì)多的聯(lián)系
網(wǎng)狀數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)
? 網(wǎng)狀模型
滿足下面兩個(gè)條件的基本層次聯(lián)系的集合為網(wǎng)狀模型。
1. 允許一個(gè)以上的結(jié)點(diǎn)無雙親;
2. 一個(gè)結(jié)點(diǎn)可以有多于一個(gè)的雙親。
? 表示方法(與層次數(shù)據(jù)模型相同)
實(shí)體型:用記錄類型描述。
每個(gè)結(jié)點(diǎn)表示一個(gè)記錄類型。 屬性:用字段描述。
每個(gè)記錄類型可包含若干個(gè)字段。 聯(lián)系:用結(jié)點(diǎn)之間的連線表示記錄(類)型之 間的一對(duì)多的父子聯(lián)系。
關(guān)系模型的基本概念
? 關(guān)系(Relation )
一個(gè)關(guān)系對(duì)應(yīng)通常說的一張表。
? 元組(Tuple )
,表中的一行即為一個(gè)元組。
? 屬性(Attribute )
表中的一列即為一個(gè)屬性,給每一個(gè)屬性起一個(gè)名稱即屬性名。
? 關(guān)系必須是規(guī)范化的,滿足一定的規(guī)范條件
最基本的規(guī)范條件:關(guān)系的每一個(gè)分量必須是一個(gè)不
可分的數(shù)據(jù)項(xiàng)。
? 查詢、插入、刪除、更新
? ? 存取路徑對(duì)用戶隱蔽,用戶只要指出“干什么”,不必詳細(xì)說明“怎么干” 關(guān)系模型的完整性約束
? 實(shí)體完整性
? 參照完整性
? 用戶定義的完整性
關(guān)系數(shù)據(jù)模型的存儲(chǔ)結(jié)構(gòu)
? 表以文件形式存儲(chǔ)
? 有的DBMS 一個(gè)表對(duì)應(yīng)一個(gè)操作系統(tǒng)文件
? 有的DBMS 自己設(shè)計(jì)文件結(jié)構(gòu)
關(guān)系模型的優(yōu)缺點(diǎn)
? 優(yōu)點(diǎn)
? 建立在嚴(yán)格的數(shù)學(xué)概念的基礎(chǔ)上
? 概念單一。數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)單、清晰,用戶易懂易用
? 實(shí)體和各類聯(lián)系都用關(guān)系來表示。
? 對(duì)數(shù)據(jù)的檢索結(jié)果也是關(guān)系。
? 關(guān)系模型的存取路徑對(duì)用戶透明
? 具有更高的數(shù)據(jù)獨(dú)立性,更好的安全保密性
? 簡(jiǎn)化了程序員的工作和數(shù)據(jù)庫(kù)開發(fā)建立的工作
? 缺點(diǎn)
存取路徑對(duì)用戶透明導(dǎo)致查詢效率往往不如非
,關(guān)系數(shù)據(jù)模型
為提高性能,必須對(duì)用戶的查詢請(qǐng)求進(jìn)行優(yōu)化
增加了開發(fā)數(shù)據(jù)庫(kù)管理系統(tǒng)的難度
數(shù)據(jù)庫(kù)系統(tǒng)外部的體系結(jié)構(gòu)
? 單用戶結(jié)構(gòu)
? 主從式結(jié)構(gòu)
? 分布式結(jié)構(gòu)
? 客戶/服務(wù)器結(jié)構(gòu)
? 瀏覽器/應(yīng)用服務(wù)器/數(shù)據(jù)庫(kù)服務(wù)器結(jié)構(gòu)
分布式結(jié)構(gòu)的數(shù)據(jù)庫(kù)系統(tǒng)
?
? 網(wǎng)絡(luò)中的每個(gè)結(jié)點(diǎn)都可以獨(dú)立處理本地?cái)?shù)據(jù)庫(kù)中的數(shù)據(jù),執(zhí)行局部應(yīng)用 ? 同時(shí)也可以同時(shí)存取和處理多個(gè)異地?cái)?shù)據(jù)庫(kù)中的數(shù)據(jù),執(zhí)行全局應(yīng)用
? 優(yōu)點(diǎn)
? 適應(yīng)了地理上分散的公司、團(tuán)體和組織對(duì)于數(shù)據(jù)庫(kù)應(yīng)用的需求。
? 缺點(diǎn)
? 數(shù)據(jù)的分布存放給數(shù)據(jù)的處理、管理與維護(hù)帶來困難。
? 當(dāng)用戶需要經(jīng)常訪問遠(yuǎn)程數(shù)據(jù)時(shí),系統(tǒng)效率會(huì)明顯地受到網(wǎng)絡(luò)傳輸?shù)闹萍s
數(shù)據(jù)庫(kù)管理員(DBA)
? 決定數(shù)據(jù)庫(kù)中的信息內(nèi)容和結(jié)構(gòu)
? 決定數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)和存取策略
? 定義數(shù)據(jù)的安全性要求和完整性約束條件
關(guān)系數(shù)據(jù)庫(kù)
? 關(guān)系模型的組成
? 關(guān)系數(shù)據(jù)結(jié)構(gòu)
? 關(guān)系操作集合
? 關(guān)系完整性約束
? 1) 常用的關(guān)系操作
,? 查詢
? 選擇、投影、連接、除、并、交、差
? 數(shù)據(jù)更新
? 插入、刪除、修改
? 查詢的表達(dá)能力是其中最主要的部分
? 2) 關(guān)系操作的特點(diǎn)
? 集合操作方式,即操作的對(duì)象和結(jié)果都是集合。
? 非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操作方式:一次一記錄
? 文件系統(tǒng)的數(shù)據(jù)操作方式
? 3) 關(guān)系數(shù)據(jù)語言的種類
? 關(guān)系代數(shù)語言
? 用對(duì)關(guān)系的運(yùn)算來表達(dá)查詢要求
? 4) 關(guān)系數(shù)據(jù)語言的特點(diǎn)
? 關(guān)系語言是一種高度非過程化的語言
? 存取路徑的選擇由DBMS 的優(yōu)化機(jī)制來完成
? 用戶不必用循環(huán)結(jié)構(gòu)就可以完成數(shù)據(jù)操作
? 能夠嵌入高級(jí)語言中使用
? 關(guān)系代數(shù)、元組關(guān)系演算和域關(guān)系演算三種語言在表達(dá)能力上完全等價(jià)
關(guān)系
? ⒈ 域(Domain )
? 2. 笛卡爾積(Cartesian Product)
? 3. 關(guān)系(Relation )
? 域是一組具有相同數(shù)據(jù)類型的值的集合。例:
? 整數(shù)
? 實(shí)數(shù)
? 介于某個(gè)取值范圍的整數(shù)
? 長(zhǎng)度指定長(zhǎng)度的字符串集合
? {?男?,?女?}
? 介于某個(gè)取值范圍的日期
? 笛卡爾積
,給定一組域D 1,D 2,…,Dn ,這些域中可以有相同的。D 1,D 2,…,Dn 的笛卡爾積為: D 1×D 2×…×Dn ={(d 1,d 2,…,dn )|di Di ,i =1,2,…,n }
? 所有域的所有取值的一個(gè)組合
? 不能重復(fù)
? 2) 元組(Tuple )
? 笛卡爾積中每一個(gè)元素(d 1,d 2,…,dn )叫作一個(gè)n 元組(n-tuple )或簡(jiǎn)稱元組。
? 3) 分量(Component )
? 笛卡爾積元素(d 1,d 2,…,dn )中的每一個(gè)值di 叫作一個(gè)分量。
? 4) 基數(shù)(Cardinal number)
? 若Di (i =1,2,…,n )為有限集,其基數(shù)為mi (i =1,2,…,n ),則D 1×D 2×…
×Dn 的基數(shù)M 為:
? 5) 笛卡爾積的表示方法
? 笛卡爾積可表示為一個(gè)二維表。表中的每行對(duì)應(yīng)一個(gè)元組,表中的每列對(duì)應(yīng)一個(gè)域。 關(guān)系(Relation )
1) 關(guān)系
D 1×D 2×…×Dn 的子集叫作在域D 1,D 2,…,Dn 上的關(guān)系,表示為
R (D 1,D 2,…,Dn )
R :關(guān)系名
n :關(guān)系的目或度(Degree )
2) 元組
關(guān)系中的每個(gè)元素是關(guān)系中的元組,通常用t 表示。
3) 單元關(guān)系與二元關(guān)系
當(dāng)n =1時(shí),稱該關(guān)系為單元關(guān)系(Unary relation)。
當(dāng)n =2時(shí),稱該關(guān)系為二元關(guān)系(Binary relation)
4) 關(guān)系的表示
關(guān)系也是一個(gè)二維表,表的每行對(duì)應(yīng)一個(gè)元組,表的每列對(duì)應(yīng)一個(gè)域。
5) 屬性
關(guān)系中不同列可以對(duì)應(yīng)相同的域,為了加以區(qū)分,必須對(duì)每列起一個(gè)名字,稱為屬性(Attribute )。
,n 目關(guān)系必有n 個(gè)屬性。
6) 碼
候選碼(Candidate key)
若關(guān)系中的某一屬性組的值能唯一地標(biāo)識(shí) 一個(gè)元組,則稱該屬性組為候選碼
在最簡(jiǎn)單的情況下,候選碼只包含一個(gè)屬性。 稱為全碼(All-key )
在最極端的情況下,關(guān)系模式的所有屬性組 是這個(gè)關(guān)系模式的候選碼,稱為全碼(All- key ) 主碼
若一個(gè)關(guān)系有多個(gè)候選碼,則選定其中一個(gè) 為主碼(Primary key) 主碼的諸屬性稱為主屬性(Prime attribute)。 不包含在任何侯選碼中的屬性稱為非碼屬性 (Non-key attribute)
7) 三類關(guān)系 基本關(guān)系(基本表或基表)
實(shí)際存在的表,是實(shí)際存儲(chǔ)數(shù)據(jù)的邏輯表示 查詢表
查詢結(jié)果對(duì)應(yīng)的表 視圖表
由基本表或其他視圖表導(dǎo)出的表,是虛表,不對(duì) 應(yīng)實(shí)際存儲(chǔ)的數(shù)據(jù)
基本關(guān)系的性質(zhì)
① 列是同質(zhì)的(Homogeneous )
每一列中的分量是同一類型的數(shù)據(jù),來自同 一個(gè)域
② 不同的列可出自同一個(gè)域
其中的每一列稱為一個(gè)屬性