本節目錄
數據庫管理系統是一個由互相關聯的數據的集合和一組用訪問這些數據的程序組成,這個數據集合通常稱作數據庫,其中包含了關於某個企業的信息。DBMS的主要目標就是提供一種可以方便高效的存取數據庫信息的途徑。
設計數據庫的目的是管理大量的信息,對數據的管理既涉及信息存儲結構的定義又涉及信息操作機制的提供,此外數據庫系統還碧璽提供所存儲信息的安全性保證,即使數據被多用戶共享,那麼系統還必須設法避免可能產生的異常結果。
1、數據庫系統的應用
數據庫的應用非常廣泛,比如:企業信息(銷售、會計、人力資源等)、銀行和金融(銀行業、信用卡交易、金融業)、大學(存儲學生信息、課程註冊、成績等)、航空業。
2、數據庫系統的目標
在以前保存信息的方法是將它們存放在操作系統文件中,也就是所謂的文件處理系統。在數據庫出現以前,經常採用這樣的系統來存儲信息。但是這樣的存儲組織信息有很多弊端:數據的冗餘和不一致、數據訪問困難、數據孤立、完整性問題、原子性問題、併發訪問異常、安全性問題。也正是由於這些問題,促進了數據庫系統的發展。
3、數據視圖
數據庫系統是一些相關聯的數據以及一組使得用戶可以訪問和修改這些數據的程序的集合,數據庫系統的一個主要目的是給用戶提供數據的抽象視圖。也就是說系統隱藏關於數據存儲和維護的某些細節。
3.1 數據抽象
一個可用的系統必能高效的檢索數據,設計者在數據庫中使用複雜的數據結構來表示數據。系統開發人員會通過一下幾個層次的抽象來對用戶屏蔽複雜性。以簡化用戶與系統的交互。
物理層:最低層次的抽象,描述數據實際上是怎麼樣存儲的,物理層詳細描述複雜的底層數據結構。
邏輯層:比物理層稍高的抽象描述數據庫中存儲什麼數據以及這些數據間存在什麼關係,這樣邏輯層就通過少量相對簡單的結構描述了整個數據庫。雖然邏輯層的簡單結構的實現可能涉及複雜的物理層,但是邏輯層用戶不必知道這樣的複雜性,這稱作物理數據獨立性。
視圖層:最高層次的抽象,只描述整個數據庫的某個部分,儘管在邏輯層使用了比較簡單的結構,但是一個大型數據庫中所存信息的多樣性,仍存在一定程度的複雜性,數據庫系統的很多用戶不需要關心所有的信息,而只需要訪問數據庫的一部分。視圖層抽象的定義正是爲了使這樣的用戶與系統的交互更簡單,系統可以爲同一數據庫提供多個視圖。
這三層的相互關係如下圖所示:
自己的理解,感覺物理層就像是數據結構的具體實現和內存申請銷燬等,而邏輯層是對數據結構的各種操作,比如插入刪除等。而視圖層就像根據不同權限的用戶只能使用部分數據結構一樣。
3.2 實例和模式
特定時刻存儲在數據庫中的信息和集合稱作數據庫的一個實例。數據庫的總體設計稱作數據庫模式。數據庫模式和實例的概念可以用類的概念來類比理解。
根據前面的不同的抽象層次,數據庫系統可以分爲幾種不同的模式,物理模式在物理層描述數據庫的設計,邏輯模式則在邏輯層描述數據庫的設計,數據庫在視圖層也有幾種模式,有時稱爲子模式,描述了數據庫的不同視圖。程序員使用最多的一般是邏輯模式,一般用來構造數據庫應用程序。
3.3 數據模型
數據庫結構的基礎是數據模型,數據模型是一個描述數據、數據聯繫、數據語義以及一致性約束的概念工具的集合,數據模型提供了一種描述物理層、邏輯層以及視圖層數據庫設計的方式。
數據模型一般分爲四類:
*關係模型,關係模型是基於記錄的模型的一種,基於記錄的模型的名稱的由來是因爲數據庫是由各種固定格式的記錄來構成的。每個表包含各種特定類型的記錄,每個記錄類型定義了固定數目的字段或屬性,表的列對應於記錄類型的模型。
*實體-聯繫模型:實體-聯繫數據模型(E-R)基於對現實世界的這樣一種認識,現實世界是由一組稱作實體的基本對象以及這些對象間的聯繫構成,實體是現實世界中區別於其他對象的一件事情或一個物體。實體-聯繫模型被廣泛用於數據庫設計。
*基於對象的數據模型:面向對象的額數據模型可以看成E-R模型增加了封裝、方法、和對象表示等概念之後的擴展,對象-關係數據模型結合了面向對象的數據模型和關係數據模型的特徵。
*半結構化數據模型:半結構化數據模型允許那些相同類型的數據項含有不同的屬性集的數據定義,可擴展標記語言(XML)被廣泛的用來表示半結構化數據。
在之前還有網狀數據模型和層次數據模型,但是這兩個基本已經很少使用了。
4、數據庫語言
數據庫系統提供數據定義語言來定義數據庫模式,以及數據操縱語言來表達數據庫的查詢和更新,這兩種語言也就是數據庫語言(比如SQL)的不同部分。
4.1 數據操縱語言
數據操縱語言(DML)使得用戶可以訪問和操作那些按照某種適當和數據模型組織起來的數據,一般有以下類型:檢索、插入、刪除、修改。通常有兩類基本的數據操縱語言:過程化DML(要求用戶指定需要什麼數據以及如何獲得這些數據),聲明化DML(只要求用戶指定需要什麼數據,而不聲明如何獲得這些數據)。
4.2 數據定義語言
數據庫是通過一系列定義來說明的,這些定義由一種數據定義語言(DDL)來表達。
數據庫系統所使用的的存儲結構和訪問方式是通過一系列特殊的DDL語句說明的,這種特殊的DDL稱作數據存儲和定義語言。存儲在數據庫中的數據值必須滿足一致性約束。數據庫實現可以以最小代價測試的完整性約束。
*域約束:每個屬性都必須相對應一個所有可能會的取值構成的域。
*參照完整性:一個關係中給定屬性集上的取值也在另一個關係的某一個屬性集的取值中出現。違反參照完整性的處理會被拒絕。
*斷言:一個斷言就是數據庫需要時刻滿足的某一條件,域約束和參數完整性約束是斷言的特殊形式。斷言創建以後,如果有效,以後只有不破壞斷言的數據庫更新才被允許。
*授權:對用戶加以區別,對不同的用戶在數據庫的不同數值上允許不同的訪問類型,最常見的是讀權限、插入權限、更新權限、刪除權限等。
DDL以一些指令作爲輸入,生成一些輸出,DDL的輸出放在數據字典中,數據字典包含了元數據,元數據是關於數據的數據,可以把數據字典看作一種特殊的表,這座鐘表只能由數據庫本身來訪問和修改。在讀取和修改實際數據前,要先參考數據字典。
5、關係數據庫
關係數據庫基於關係模型,使用一系列表來表達數據以及這些數據之間的聯繫。
5.1 表
每個表都有很多列,每個列都有唯一的名字。關係模型是基於記錄的模型的一個實例。基於記錄的模型,之所以有這樣的稱謂,是因爲數據庫的結構是幾種固定格式的記錄。每個表包含一種特定類型的記錄。每種記錄類型定義固定數目的字段或屬性,表的列對應記錄類型的屬性。
5.2 數據操縱語言
SQL查詢語言是非過程化的,它以幾個表作爲輸入,總是返回一個表,下面是一個SQL查詢的例子,它找出歷史系所有教員的名字。
這個查詢制定了從instructor表中要取回的是dept_name爲History的那些行,並且這些行的name屬性要顯示出來。執行這個查詢單額結果是一個表,有一列name和若干行,每一行都是dept_name爲History的一個教員的名字。
查詢可以涉及不止一個表的信息,例如,下面的查詢,將找出與經得預算超過95000元的系相關的所有教員的ID和系名。
5.3 數據定義語言
SQL提供了一個豐富的DDL語言,通過它我們可以定義表、完整性約束、斷言等等,例如下面的語句頂一個department的表。
上面的語句執行結果就是創建了department表,該表有三列,分別是dept_name、building、budget,每個列都有一個與之相關聯的數據類型。
5.4 來自應用程序的數據庫訪問
應用程序在這裏指以嵌入SQL查詢訪問數據庫中的數據這樣的方式與數據庫交互的程序。爲了訪問數據庫,DML語言需要由宿主語言來執行,有兩種途徑可以做到這一點:一種是通過提供應用程序接口(過程集),他可以用來將DML和DDL語句發給數據庫,再取回結果。一種是通過擴展宿主語言的語法,在宿主語言程序中嵌入DML調用,通常用一個特殊字符座位DML調用的開始,並通過預處理器,稱爲DML預編譯器來將DML語句轉爲宿主語言的過程調用。
6、數據庫設計
略
7、數據存儲和查詢
數據庫系統分爲不同的模塊,每個模塊完成整個系統的一個功能,數據庫系統的功能部件大致可分爲存儲管理器和查詢處理部件。
存儲管理和查詢處理都十分重要。
7.1 存儲管理器
存儲管理器是數據庫系統中負責在數據庫中存儲底層數據與應用程序以及向系統提交的查詢之間提供接口的部件。,存儲管理器負責與文件管理器進行交互,原始數據通過操作系統提供的文件系統存儲在磁盤上,存儲管理器將各種DML語句翻譯成爲底層文件系統命令,因此,存儲管理器負責數據庫中數據的存儲、檢索和更新。
存儲管理部件包括:權限及完整性管理器、事務管理器、文件管理器、緩衝區管理器、數據文件、數據字典、索引。
7.2 查詢處理器
查詢處理器組件包括:
*DDL解釋器:解釋DDL語句並將這些定義記錄在數據字典中。
*DML編譯器:將查詢語句中DML語句翻譯成一個執行方案,包括一系列查詢執行引擎能理解的低級指令。一般DML解釋器還進行查詢優化。
*查詢執行引擎:執行由DML編譯器產生的低級指令。
8、事務管理
通常對數據庫的幾個操作合起來形成一個邏輯單元。要麼完成要麼不發生的要求稱爲原子性,正確性的要求稱爲一致性。保持的要求稱爲持久性。
事務是數據庫應用中完成單一邏輯功能的操作集合,每一個事務是一個既有原子性又有一致性的單元。原子性和持久性的保證數據庫自身的職責,確切的說是恢復管理器的職責。數據庫系統要有故障恢復的功能,當多個事務同時對數據庫進行更新時,也要保證數據庫的一致性,併發控制管理器控制併發事務間相互影響,保證數據庫的一致性,事務管理器是包括併發控制管理器和恢復管理器的。
9、數據庫體系結構
數據庫系統的體系結構很大程度上取決於數據庫系統運行的計算機系統,數據庫系統可以是集中式、客戶服務式、也可以針對並行計算機體系結構設計數據庫系統,分佈式數據庫包含地理上分離的多臺計算機。
現在數據庫系統大多用戶並不直接面對數據庫系統,而是通過網絡與其相連,我們可以區分遠程數據庫用戶工作的用戶機和運行數據庫系統的服務器。下圖是數據庫的體系結構。
下圖是兩層和三層體系機構
10、數據挖掘與信息檢索
略
11、特種數據庫
略
12、數據庫用戶和管理員
12.1 數據庫用戶和用戶界面
數據庫系統的用戶可以分爲四種不同類型,系統爲不同類型的用戶設計了不同類型的用戶界面。無經驗用戶、應用程序員、老練的用戶、專門的用戶。
12.2 數據庫管理員
使用DBMS一個主要原因可以對數據和訪問這些數據的程序進行集中控制。對系統進行集中控制的人稱作數據庫管理員。數據庫管理員的作用包括:模式定義、存儲結構以及存取方法的定義、模式及物理組織的修改、數據訪問授權、日常維護。
13、數據庫系統的歷史
略
14、總結
數據庫管理系統、數據模型、數據操縱語言、數據定義語言、數據庫由幾個子系統構成(存儲管理器和查詢管理器)、事務管理。