參考教材:《數(shù)據(jù)庫系統(tǒng)概念》(本科教學(xué)版)第一章
文件處理系統(tǒng)弊端:
數(shù)據(jù)的冗余和不一致
數(shù)據(jù)訪問困難
數(shù)據(jù)孤立
完整性問題(涉及約束)
原子性問題(原子操作)
并發(fā)訪問異常
安全性問題
數(shù)據(jù)庫系統(tǒng)(DataBase System)=數(shù)據(jù)的集合(數(shù)據(jù)庫)+訪問數(shù)據(jù)的程序
安全存和,完整纯衍,多用戶并發(fā)使用升敲,故障后系統(tǒng)恢復(fù)
一些操作:批量轉(zhuǎn)載源譬,轉(zhuǎn)儲(靜態(tài)轰绵,動態(tài)倦春,海量涩拙,增量)蚊丐,介質(zhì)故障恢復(fù)飘蚯,重組織馍迄,性能監(jiān)視
DBMS數(shù)據(jù)庫管理系統(tǒng)
數(shù)據(jù)抽象(簡化用戶與系統(tǒng)的交互)
1.物理層:最低,詳細(xì)描述復(fù)雜的底層數(shù)據(jù)結(jié)構(gòu)局骤,物理上的存儲細(xì)節(jié)(如連續(xù)存儲位置組成的存儲快之類的)
2.邏輯層:描述存儲什么數(shù)據(jù)攀圈,數(shù)據(jù)之間的關(guān)系
3.視圖層:只描述整個數(shù)據(jù)庫的某個部分
DBS體系結(jié)構(gòu):
數(shù)據(jù)庫->內(nèi)模式(存儲模式,自動生成的存儲結(jié)構(gòu))->模式(基本表)->外模式(從模式中抽取部分峦甩,不唯一赘来,直接面向應(yīng)用)->應(yīng)用
外模式/模式映像->邏輯獨立性(模式改變是應(yīng)用程序無需改變)
模式/內(nèi)模式映像->物理獨立性
數(shù)據(jù)庫實例:特定時刻存儲在數(shù)據(jù)庫中的信息的集合(變化頻繁)
數(shù)據(jù)庫模式:數(shù)據(jù)庫的總體設(shè)計(不怎么變)
數(shù)據(jù)模型(描述數(shù)據(jù),數(shù)據(jù)聯(lián)系凯傲,數(shù)據(jù)語義犬辰,一致性工具的概念工具的集合):
三要素:數(shù)據(jù)結(jié)構(gòu)(靜態(tài)特性),數(shù)據(jù)操作(動態(tài)特性)冰单,數(shù)據(jù)上的約束
1.關(guān)系模型(relation model):表幌缝,固定格式的記錄(字段固定)
2.實體-聯(lián)系模型(entity-relationship model):E-R
3.基于對象的數(shù)據(jù)模型(object-based data model):面向?qū)ο螅珽-R模型增加了封裝诫欠,方法涵卵,對象標(biāo)識等概念后的擴(kuò)展
4.半結(jié)構(gòu)化數(shù)據(jù)模型(semistructured data model):相同類型的數(shù)據(jù)項含有不同的屬性集的數(shù)據(jù)定義(一般用XML來表示)
5.網(wǎng)狀數(shù)據(jù)模型,層次數(shù)據(jù)模型…(舊荒叼,復(fù)雜)
數(shù)據(jù)庫語言
1.數(shù)據(jù)庫操作語言(Data-Manipilation Language轿偎,DML):表達(dá)數(shù)據(jù)庫的查詢與更新
(1):過程化DML(procedural):要求用戶指定需要什么數(shù)據(jù)以及如何獲取這些數(shù)據(jù)
(2):聲明式DML(declarative):只要求指定需要什么數(shù)據(jù)(如sql中的select from)
2.數(shù)據(jù)定義語言(Data-Definition Lang,DDL):定義數(shù)據(jù)庫模式(如sql中的create table)
數(shù)據(jù)庫系統(tǒng)所使用的存儲結(jié)構(gòu)甩挫,訪問方式,一致性約束(域約束domain constraint
椿每,參照完整性referential integrity (例如 course 關(guān)系中的dept_name必須是department關(guān)系中的某一記錄的dept_name)
伊者,斷言assertion(數(shù)據(jù)庫需要時刻滿足的某一條件,前兩個是它的特殊形式)
间护,授權(quán)authorization(讀權(quán)限亦渗,插入權(quán)限,更新權(quán)限汁尺,刪除權(quán)限)
DDL以一些語句作為輸入法精,生成的輸出放在data dictionary,其中包括元數(shù)據(jù)mata data
(關(guān)于數(shù)據(jù)的數(shù)據(jù),表的結(jié)構(gòu)信息如有哪些字段等等)
應(yīng)用程序->宿主語言(c搂蜓,c++狼荞,java...)-(通過接口ODBC,JDBC...或擴(kuò)展宿主語言的語法)->DML,DDL->數(shù)據(jù)庫
擴(kuò)展宿主語言的語法:在宿主語言的程序中嵌入DML調(diào)用。通常用一個特殊字符作為DML調(diào)用的開始帮碰,通過DML預(yù)編譯器相味,將DML語句轉(zhuǎn)變成宿主語言中的過程調(diào)用。
規(guī)范化:生成一個關(guān)系模式集合殉挽,減少冗余丰涉,范式normal form
,函數(shù)依賴functional dependency
存儲管理器:負(fù)責(zé)數(shù)據(jù)庫中數(shù)據(jù)的存儲斯碌,檢索一死,更新
存儲管理部件包括:
1.權(quán)限及完整性管理器authorization and integrity manager
2.事物管理器transaction manager
:保證即使發(fā)生故障數(shù)據(jù)庫也保持在一致狀態(tài),保證并發(fā)事物的執(zhí)行不發(fā)生沖突
3.文件管理器file manager
:管理磁盤存儲空間的分配傻唾,存儲信息的數(shù)據(jù)結(jié)構(gòu)
4.緩沖區(qū)管理器buffer manager
:負(fù)責(zé)將數(shù)據(jù)從磁盤上取到內(nèi)存中(類比兩個校區(qū)用校車運送教師的例子)
存儲管理器實現(xiàn)的幾種數(shù)據(jù)結(jié)構(gòu):
1.數(shù)據(jù)文件data files
:存儲數(shù)據(jù)庫自身
2.數(shù)據(jù)字典data dictionary
:元數(shù)據(jù)
3.索引index
事務(wù)管理
對數(shù)據(jù)庫的幾個操作合起來形成一個邏輯單元
原子性atomicity投慈,一致性consistency,持久性durability策吠,獨立性
事務(wù):完成單一邏輯功能的操作結(jié)合
故障恢復(fù):當(dāng)事務(wù)的某一步發(fā)生故障的時候逛裤,要恢復(fù)的整個事務(wù)執(zhí)行以前的一致狀態(tài)(恢復(fù)管理器)
并發(fā)控制管理器:控制并發(fā)事務(wù)間的互相影響,保證數(shù)據(jù)庫一致性
消除死鎖:當(dāng)事務(wù)通過調(diào)度器授權(quán)鎖競爭資源時猴抹,每個事務(wù)所需要的資源都被另一個事務(wù)占有沒有一個可以執(zhí)行带族,通過刪除一個或多個事務(wù)來解決
查詢處理器
1.DDL 解釋器interpreter
2.DML 編譯器compiler
:將DML語句翻譯為多種可執(zhí)行方案,并選擇代價最小的一種(查詢優(yōu)化)
3.查詢執(zhí)行引擎query evaluation engine
數(shù)據(jù)庫體系結(jié)構(gòu)
客戶/服務(wù)器系統(tǒng)蟀给,并行數(shù)據(jù)庫系統(tǒng)蝙砌,分布式數(shù)據(jù)庫系統(tǒng)
數(shù)據(jù)挖掘data mining
:半自動分析大型數(shù)據(jù)庫并從中找出有用的模式
信息檢索information retrieval
:查詢非結(jié)構(gòu)化的文本數(shù)據(jù)
數(shù)據(jù)庫管理員DBA
數(shù)據(jù)庫系統(tǒng)歷史