目錄
數據庫發展
數據庫發展過程:
三個時期比較:
基本概念
數據模型:
- 三個要求:
- 能比較真實地模擬現實社會
- 容易為人所理解
- 便於在計算機上實現
- 兩類:
- 概念模型:
- 也稱信息模型,它是按用戶的觀點來對數據和信息建模,重要用於數據庫設計
- 邏輯模型 / 物理模型:
- 邏輯模型包括:
- 層次模型(hierarchical)
- 網狀模型(NetWork Model)
- 關系模型(Relational Model)
- 面向對象模型(Object Oriented Model)
- 對象關系模型(Object Relational Model)
- 物理模型:
- 是對數據最底層的抽象,它描述數據在系統內部的表示方式和存取方式,在磁盤或磁帶上的存儲方式和存取方法,是面向計算機系統的
- 邏輯模型包括:
- 概念模型:
四個基本概念:
- 數據(Data):
- 定義:
- 數據的定義描述事物的符號記錄數據的種類文本、圖形、圖像、音頻、視頻、學生的檔案記錄、貨物的運輸情況等數據的特點數據與其語義是不可分的
- 定義:
- 數據庫(Database):
- 定義:
- 數據庫(Database,簡稱DB)是長期儲存在計算機內、有組織的、可共享的大量數據的集合
- 各種人員數據視圖:
- 數據庫結構圖:
- 基本特征
- 數據按一定的數據模型組織、描述和儲存
- 可為各種用戶共享
- 冗余度較小
- 數據獨立性較高
- 易擴展
- 定義:
- 數據庫管理系統(DBMS):
- 定義:
- DBMS(Database Management System )位於用戶與操作系統之間的一層數據管理軟件.是基礎軟件,是一個大型復雜的軟件系統
- 用途:
- 科學地組織和存儲數據、高效地獲取和維護數據
- 數據控制功能:
- 數據的安全性(Security)保護:保護數據,以防止不合法的使用造成的數據的泄密和破壞.
- 數據的完整性(Integrity)檢查:將數據控制在有效范圍內,或保證數據之間滿足一定關系
- 並發(Concurrency)控制:對多用戶的並發操作加以控制和協調,防止相互干擾而得到錯誤的結果
- 數據庫恢復(Recovery):將數據庫從錯誤狀態恢復到某一已知的正確狀態
- 主要功能:
- 數據定義(Definition):
- 數據模式定義(為數據庫構造數據框架)
- 數據存取的物理結構(為數據模式構造有效的物理存取方法與手段)
- 數據操縱(Manipulation):
- 提供數據查詢、插入、修改及刪除的功能具有簡單算術運算及統計等能力
- 還可以與某些過程性語言結合,進行過程性操作
- 數據控制(Control):
- 數據的完整性、安全性定義與檢查數據庫的並發控制與故障恢復
- 數據服務(Service):
- 拷貝、轉儲、重組、性能檢測、分析……
- 數據定義(Definition):
- 定義:
- 數據庫系統(DBS):
- 定義:
- 數據庫系統(Database System,簡稱DBS)在計算機系統中引入數據庫后的系統構成
- 組成:
- 數據庫
- 數據庫管理系統
- 應用系統
- 數據庫管理員
- 特點:
- 數據結構化
- 數據的共享性高,冗余度低,易擴充
- 數據獨立性高
- 數據由DBMS統一管理和控制
- 定義:
數據獨立性:
- 兩個獨立性:
- 物理獨立性:指用戶的應用程序與存儲在磁盤上的數據庫中數據是相互獨立的.當數據的物理存儲改變了,應用程序不用改變
- 邏輯獨立性:指用戶的應用程序與數據庫的邏輯結構是相互獨立的.數據的邏輯結構改變了,用戶程序也可以不變
- 說明:
- 物理獨立性與邏輯獨立性保證了數據獨立性也是由DBMS的二級映像功能來保證的
信息世界基本概念:
- 實體(Entity) 客觀存在並可相互區別的事物稱為實體.可以是具體的人、事、物或抽象的概念
- 屬性(Attribute) 實體所具有的某一特性稱為屬性.一個實體可以由若干個屬性來刻畫
- 碼(Key) 唯一標識實體的屬性集稱為碼
- 域(Domain) 屬性的取值范圍稱為該屬性的域
- 實體型(Entity Type) 用實體名及其屬性名集合來抽象和刻畫同類實體稱為實體型
- 實體集(Entity Set) 同一類型實體的集合稱為實體集
- 聯系(Relationship)現實世界中事物內部以及事物之間的聯系在信息世界中反映為實體內部的聯系和實體之間的聯系
- 說明:
- 實體內部的聯系通常是指組成實體的各屬性之間的聯系
- 實體之間的聯系通常是指不同實體集之間的聯系
- 兩個實體型:
- 一對一聯系(1:1):
- 定義:如果對於實體集A中的每一個實體,實體集B中至多有一個(也可以沒有)實體與之聯系,反之亦然,則稱實體集A與實體集B具有一對一聯系,記為1:1
- 實例:一個班級只有一個正班長,一個班長只在一個班中任職
- 一對多聯系(1:n):
- 定義:如果對於實體集A中的每一個實體,實體集B中有n個實體(n≥0)與之聯系,反之,對於實體集B中的每一個實體,實體集A中至多只有一個實體與之聯系,則稱實體集A與實體集B有一對多聯系,記為1:n
- 實例:一個班級中有若干名學生,每個學生只在一個班級中學習
- 多對多聯系(m:n):
- 定義:如果對於實體集A中的每一個實體,實體集B中有n個實體(n≥0)與之聯系,反之,對於實體集B中的每一個實體,實體集A中也有m個實體(m≥0)與之聯系,則稱實體集A與實體B具有多對多聯系,記為m:n
- 實例:課程與學生之間的聯系:一門課程同時有若干個學生選修,一個學生可以同時選修多門課程
- 圖釋:
- 一對一聯系(1:1):
- 兩個以上實體型(兩個以上實體型之間一對多聯系):
- 定義:若實體集E1,E2,...,En存在聯系,對於實體集Ej(j=1,2,...,i-1,i+1,...,n)中的給定實體,最多只和Ei中的一個實體相聯系,則我們說Ei與E1,E2,...,Ei-1,Ei+1,...,En之間的聯系是一對多的
- 優點:減少沉余,減少維護和修改表的時間
- 圖釋:
- 說明:
數據庫管理員(DBA)具體職責:
- 決定數據庫中的信息內容和結構
- 決定數據庫的存儲結構和存取策略
- 定義數據的安全性要求和完整性約束條件
- 監控數據庫的使用和運行
- 周期性轉儲數據庫
- 數據文件
- 日志文件
- 系統故障恢復
- 介質故障恢復
- 監視審計文件
- 周期性轉儲數據庫
- 數據庫的改進和重組
- 性能監控和調優定期對數據庫進行重組織,以提高系統的性能需求增加和改變時,數據庫須需要重構造
關系數據庫理論
關系模式(五元組):
- 格式:
- R(U,D,DOM.F)
- 解釋:
- 關系R,它是符號化的元組語義
- 一組屬性U
- 屬性住中屬性來自域D
- 屬性到域的映射DOM
- 屬性組U上的一組數據依賴F(如函數依賴(Functional Dependency,FD),多值依賴(Multivalued Dependency,MVD))
相關概念:
- 函數依賴:
- 定義:
- 設R(U)是屬性集U上的關系模式.X,Y是U的子集.若R(U)的任意一個可能的關系r,r中不可能存在兩個元組在X上的屬性住相等,而在Y上的屬性值不等,則X函數確定Y或Y依賴於X,記做X→Y,若X→Y,Y→X,記做X←→Y(非主屬性中某屬性值唯一)
- 分類:
- 非平凡函數依賴:X→Y,但X不包含Y,則稱X→Y非平凡函數依賴(例子 (Sno,Cno)→Grade )
- 平凡函數依賴:X→Y,且X包含Y則稱X→Y平凡函數依賴(例子 (Sno,Cno)→Cno )
- 完全函數依賴:X→Y且對X的任何一個真子集X',都有X'→Y不成立,則稱Y對X完全函數依賴(例子 (Sno,Cno)→Grade )
- 部分函數依賴:X→Y,但Y不完全依賴於X,則稱Y對X部分函數依賴(例子 (Sno,Cno)→Sdept [由Sno便可推出Sdept] )
- 傳遞函數依賴:在R(U)中,如果X→Y,(X不包含Y),Y→X不成立,Y→Z,Z不屬於Y,則稱Z對X傳遞函數依賴,記做X→Z(例子 Sno→Sdept, Sdept→Mname成立,所以Sno→Mname)
- 定義:
- 多值依賴:
- 定義:
- 形式1:設R(U)是屬性集U上的一個關系模式.X,Y,Z是U的子集,並且Z=U-X-Y,感謝模式R(U)中多值依賴X→→Y成立,當且僅當對R(U),的任一關系r,給定的一對(x,z)值,有一組Y的值,這組值僅僅決定於x值而與z值無關
- 形式2:在R(U)的任一關系r中,如果存在元組t,s使得t[X]=s[X],那么必然存在元組w,v屬於r,(w,v可以與s,t相同),使得w[X]=v[X]=t[X],而w[Z]=v[Z]=t[Z],v[Y]=s[Y],v[Z]=t[Z](交換s,t元組的Y值所得的兩個新元組必在r中)則Y多值依賴與X記做X→→Y,這里X,Y是U的子集,Z=U-X-Y
- 平凡多值依賴:
- 若X→→Y,而Z=φ,即Z為空,則稱X→→Y為平凡多值依賴
- 多值依賴性質:
- 多值依賴具有對稱性.即若X→→Y,則X→→Z其中Z=U-X-Y
- 多值依賴具有傳遞性,即若X→→Y,X→→Z,則X→→Z - Y,X→→Y - Z
- 函數依賴可以看做多只依賴的特殊情況,即若X→Y則X→→Y.這是因為當X→Y時,對X的每一個值x,Y有一個確定的值y與之對應,所以X→→Y
- 若X→→Y,X→→Z,則X→→YZ
- 若X→→Y,X→→Z,則X→→Y∩Z
- 多值依賴與函數依賴的區別:
- 多只依賴的有效性與屬性集的范圍有關
- 若X→→Y在U上成立則在W(U包含W, W包含XY)上一定成立,反之則不然,即X→→Y在W(U包含W)上成立,在U上並不一定成立,這是因為多只依賴的定義中不僅涉及屬性組X和Y,而且涉及U中的其余屬性Z
- 一般得在R(U)上若有X→→Y在W(U包含W)上成立,則稱X→→Y為R(U)的嵌入型多值依賴
- 但是在關系模式R(U)中函數依賴X→Y的有效性僅決定於X,Y這兩個屬性集的值.只要在R(U)的任何一個關系r中,元組在X和Y上的值滿足函數依賴的定義,則函數依賴X→Y在任何屬性集W(U包含W, W包含XY)上成立
- 若函數依賴X→Y在R(U)上成立,則對任何Y的子集Y'具有X→Y'成立,而多值依賴X→→Y若在R(U)上成立,卻不能保證對於任何一個Y' 即Y的子集的X→→Y'都成立
- 定義:
- 碼:
- 設K為R<U,F>中的屬性組合,若K完全依賴於U則K為R的候選碼(Candidate key),若候選碼多於一個,則選定一個為主碼(Primary key)
- 包含在任何一個候選碼中的屬性,稱為主屬性(Primary attribute).不包含在任何碼中的屬性稱為非主屬性(Nonprime attribute)或非碼屬性(Non-key attribute).最簡單的情況,單個屬性是碼.最極端的情況,整個屬性組都是碼,稱為全碼(All-key)
關系模式存在問題:
- 數據庫沉余太大
- 更新異常(Update Anmalies)
- 插入一次(Insertion Anomalies)
- 刪除異常(Deletion Anomalies)
規范化(范式):
- 第一范式:
- 定義:每一個分類必須是一個不可分的數據項,則屬於第一范式規范
- 第二范式:
- 定義:若R屬於第一范式,且每個非主屬性完全依賴於碼,則屬於第二范式規范
- 第三范式:
- 定義:關系模型R<U,F>中若不存在這樣的碼X,屬性Y即非主屬性Z(Z不包含於Y),使得X→Y, Y→Z,X→Z成立,Y→X不成立,則稱R<U,F>屬於第三范式
- BCNF范式:
- 定義:關系模式R<U,F>屬於第一范式,若X→Y且X不包含Y時,X必包含有碼,則R<U,F>屬於BCNF范式,也就是說關系模式R<U,F>中,若,每一個覺得因素都包含碼,則R<U,F>屬於BCNF范式
- 要求:
- 所有的非主屬性對每一個碼都是完全函數依賴
- 所有的主屬性對每一個不包含它的碼,也是完全函數依賴
- 沒有任何屬性完全函數依賴於非碼屬性的任何一組屬性
- 第四范式:
- 定義:關系模式R<U,F>屬於第一范式,如果對於R的每個平凡多只依賴XY(X不包含Y),X都含有碼,則R<U,F>屬於第四范式
- 范式包含關系:
- 范式規范化過程:
關系模型
解釋:
從用戶角度看關系模型中數據的邏輯結構是一張二維表,它由行和列組成
相關概念:
- 元組(Tuple):表中的一行即為一個元組
- 關系(Relation):
- 定義:一個關系對應通常說的一張表
- 要求:滿足一定的規范條件(最基本的規范條件:關系的每一個分量必須是一個不可分的數據項, 不允許表中還有表)
- 屬性(Attribute):表中的一列即為一個屬性,給每一個屬性起一個名稱即屬性名
- 主碼(Key):表中的某個屬性組,它可以唯一確定一個元組
- 域(Domain):屬性的取值范圍
- 分量:元組中的一個屬性值
- 關系模式:對關系的描述 關系名(屬性1,屬性2,…,屬性n)
完整性約束:
- 關系的完整性約束條件
- 實體完整性參照完整性
- 用戶定義的完整性
優點:
- 建立在嚴格的數學概念的基礎上
- 概念單一:
- 實體和各類聯系都用關系來表示
- 對數據的檢索結果也是關系
- 關系模型的存取路徑對用戶透明:
- 具有更高的數據獨立性,更好的安全保密性
- 簡化了程序員的工作和數據庫開發建立的工作
缺點:
- 存取路徑對用戶透明導致查詢效率往往不如非關系數據模型
- 為提高性能,必須對用戶的查詢請求進行優化增加了開發DBMS的難度
系統結構解釋:
- 從數據庫管理系統角度看數據庫系統通常采用三級模式結構,是數據庫系統內部的系統結構
- 從數據庫最終用戶角度看(數據庫系統外部的體系結構),數據庫系統的結構分為:
- 單用戶結構主從式結構
- 分布式結構
- 客戶/服務器
- 瀏覽器/應用服務器/數據庫服務器多層結構等
實例(Instance):
- 模式的一個具體值
- 反映數據庫某一時刻的狀態
- 同一個模式可以有很多實例
- 實例隨數據庫中的數據的更新而變動
模式(Schema):
- 解釋:
- 數據庫中全體數據的邏輯結構和特征的描述
- 反映的是數據的結構及其聯系
- 所有用戶的公共數據視圖,綜合了所有用戶的需求
- 說明:
- 一個數據庫只有一個模式(也稱邏輯模式)
- 地位:
- 是數據庫系統模式結構的中間層
- 特點:
- 與數據的物理存儲細節和硬件環境無關
- 與具體的應用程序、開發工具及高級程序設計語言無關
- 定義:
- 數據的邏輯結構(數據項的名字、類型、取值范圍等)
- 數據之間的聯系
- 數據有關的安全性、完整性要求
外模式(External Schema):
- 說明:
- 數據庫用戶(包括應用程序員和最終用戶)使用的局部數據的邏輯結構和特征的描述
- 數據庫用戶的數據視圖,是與某一應用有關的數據的邏輯表示
- 地位:
- 介於模式與應用之間
- 模式與外模式的關系:一對多
- 外模式通常是模式的子集
- 一個數據庫可以有多個外模式.反映了不同的用戶的應用需求、看待數據的方式、對數據保密的要求
- 對模式中同一數據,在外模式中的結構、類型、長度、保密級別等都可以不同
- 外模式與應用的關系:一對多
- 同一外模式也可以為某一用戶的多個應用系統所使用
- 但一個應用程序只能使用一個外模式
- 用途:
- 保證數據庫安全性的一個有力措施
- 每個用戶只能看見和訪問所對應的外模式中的數據
內模式(Internal Schema):
- 說明:
- 內模式(也稱存儲模式)
- 是數據物理結構和存儲方式的描述
- 一個數據庫只有一個內模式
- 是數據在數據庫內部的表示方式:
- 記錄的存儲方式(順序存儲,按照B樹結構存儲,按hash方法存儲)
- 索引的組織方式
- 數據是否壓縮存儲
- 數據是否加密
- 數據存儲記錄結構的規定
三級模式結構:
- 組成:
- 內模式(Internal Schema)
- 模式(Schema)
- 外模式(External Schema)
- 圖片:
- 說明:
- 同一個模式可以有任意多個外模式
- 每一個外模式,數據庫系統都有一個外模式/模式映象,定義外模式與模式之間的對應關系
二級映象:
- 作用:
- 二級映象在DBMS內部實現這三個抽象層次的聯系和轉換
- 說明:
- 映象定義通常包含在各自外模式的描述中
- 外模式/模式映像:
- 作用:
- 保證數據的邏輯獨立性
- 說明:
- 外模式描述的是數據的局部邏輯結構
- 模式描述的是數據的全局邏輯結構
- 當模式改變時,數據庫管理員修改有關的外模式/模式映象,使外模式保持不變應用程序是依據數據的外模式編寫的,從而應用程序不必修改,保證了數據與程序的邏輯獨立性,簡稱數據的邏輯獨立性
- 作用:
- 模式/內模式映像:
- 作用:
- 保證數據的物理獨立性
- 說明:
- 當數據庫的存儲結構改變了(例如選用了另一種存儲結構),數據庫管理員修改模式/內模式映象,使模式保持不變應用程序不受影響.保證了數據與程序的物理獨立性,簡稱數據的物理獨立性
- 作用:
SQL概述
SQL的特點:
- 綜合統一:
- 集數據定義語言(DDL),數據操縱語言(DML),數據控制語言(DCL)功能於一體
- 可以獨立完成數據庫生命周期中的全部活動:
- 定義關系模式,插入數據,建立數據庫;
- 對數據庫中的數據進行查詢和更新;
- 數據庫重構和維護
- 數據庫安全性、完整性控制等
- 用戶數據庫投入運行后,可根據需要隨時逐步修改模式,不影響數據的運行
- 數據操作符統一
- 高度非過程化:
- 非關系數據模型的數據操縱語言“面向過程”,必須指定存取路徑
- SQL只要提出“做什么”,無須了解存取路徑
- 存取路徑的選擇以及SQL的操作過程由系統自動完成
- 面向集合的操作方式:
- 非關系數據模型采用面向記錄的操作方式,操作對象是一條記錄
- SQL采用集合操作方式:
- 操作對象、查找結果可以是元組的集合
- 一次插入、刪除、更新操作的對象可以是元組的集合
- 以同一種語法結構提供多種使用方式:
- SQL是獨立的語言:能夠獨立地用於聯機交互的使用方式
- SQL又是嵌入式語言:SQL能夠嵌入到高級語言(例如C,C++,Java)程序中,供程序員設計程序時使用
- 語言簡潔,易學易用:
- SQL功能極強,完成核心功能只用了9個動詞
SQL的數據定義功能:
三個基本概念:
- 基本表:
- 本身獨立存在的表
- SQL中一個關系就對應一個基本表
- 一個(或多個)基本表對應一個存儲文件
- 一個表可以帶若干索引
- 存儲文件:
- 邏輯結構組成了關系數據庫的內模式
- 物理結構是任意的,對用戶透明
- 視圖:
- 從一個或幾個基本表導出的表
- 數據庫中只存放視圖的定義而不存放視圖對應的數據
- 視圖是一個虛表
- 用戶可以在視圖上再定義視圖
SQL支持關系數據庫三級模式結構:
標識符:
- 定義:
- 由用戶定義的可識別的字符序列
- 規則:
- 第一個字符必須是字母或下划線(_)或@或#;
- 后續字符可以是:字母、數字、_、#、$、@等;
- 注意:
- 不能使用SQL中的關鍵字和運算符,不允許嵌入空格或其他特殊字符