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