資料庫系統概念 CH1
資料:Data,資料是描述人、物體和事件的原始事實。
資料庫:DataBase,相關資料的綜合集合構成資料庫(DB)。
資料庫管理系統:DataBase-Management System, DBMS由一個互相關聯的資料集合和一組用以通路資料的程式組成。
D B M S { 互 相 關 聯 的 數 據 集 合 訪 問 數 據 的 程 序 : 數 據 訪 問 { 增 删 查 改 數 據 管 理 工 具 更 高 效 , 方 便 DBMS\begin{cases} 互相關聯的資料集合\\ 通路資料的程式:資料通路\begin{cases}增\\删\\查\\改\end{cases} \end{cases}\quad 資料管理工具更高效,友善 DBMS⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧互相關聯的資料集合通路資料的程式:資料通路⎩⎪⎪⎪⎨⎪⎪⎪⎧增删查改資料管理工具更高效,友善
1.1 資料庫系統的應用
- 資料庫管理系統包含特定企業的資訊
- 銀行的交易
- 飛機的機票訂購
- 大學
1.2 資料庫系統的目标
1.檔案系統
計算機中儲存資訊的一種方法:存儲在OS的檔案中
- 檔案系統的弊端
-
資料的備援和不一緻性:data redundancy and inconsistency
不同的地方存儲相同資訊,統一資料不同的副本不一緻。
-
資料通路困難:difficulty in accessing data
面對臨時,多邊的需求,可能要不斷編寫新的應用程式。
-
資料孤立:data isolation
分散在不同檔案中,檔案格式不同,編寫新的應用程式來檢索資料比較困難。
-
完整性問題:integrity problem
資料中對某些屬性等具有條件限制,需要在程式中添加這些限制。但若新的限制增加,程式也需要全部修改。
-
原子性問題:atomicity problem
原子性事務:要麼發生,要麼不發生。諸如斷電等故障的發生可能導緻檔案處理系統的原子性難以維持。
-
并發通路異常:concurrent-access anomaly
取款先後順序問題
-
安全性問題:security problem
并不是所有使用者能通路所有資料。但是應用程式的不斷加入使之難以得到保證。
-
2.資料庫的目标
由于上述的檔案系統的弊端,是以資料庫系統不斷發展。資料庫系統給上面的所有問題提供了解決方案。
1.3 資料視圖
資料庫系統隐藏關于資料存儲和維護的某些細節,主要目的是給使用者提供資料的抽象視圖。
1.3.1資料抽象
對于開發者,需要實作資料庫的高效檢索資料,需要使用複雜資料結構
但是使用者不需要,系統開發人員通過下面幾個層次上的抽象來對使用者屏蔽複雜性,簡化使用者與系統的互動。
-
實體層
最低層次抽象:資料怎麼儲存的,主要是底層的資料結構
-
邏輯層
資料庫中存了什麼,資料之間存在什麼關系
-
視圖層
最高層次抽象:屏蔽細節,可了解成可視化資料
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLwkTN1MzNxMjMxATOwEjMwITLldWYtl2LcVmcvR3UlJXd0NWaw9CXyVGdzFWbvw1dhJ3LcdWbp9CXpFnb1lXLuV3cvwVbvNmLlVGdpd2Lc9CX6MHc0RHaiojIsJye.png)
1.3.2 執行個體和模式
模式:資料庫的總體設計
執行個體:特定時刻存儲在資料庫中的資訊集合
上述兩個概念可通過編寫程式的變量來了解,特定時刻變量會有特定值
三種視圖<–>三種模式
{ 物 理 層 − − − 物 理 模 式 , 隐 藏 在 邏 輯 模 式 之 下 , 通 常 可 以 在 應 用 程 序 毫 不 受 影 響 的 情 況 下 被 修 改 : 存 儲 的 磁 盤 位 置 ? 邏 輯 層 − − − 邏 輯 模 式 , 最 重 要 的 一 種 模 式 視 圖 層 − − − 子 模 式 \begin{cases} 實體層---實體模式,隐藏在邏輯模式之下,通常可以在應用程式毫不受影響的情況下被修改:存儲的磁盤位置?\\ 邏輯層---邏輯模式,最重要的一種模式\\ 視圖層---子模式 \end{cases} ⎩⎪⎨⎪⎧實體層−−−實體模式,隐藏在邏輯模式之下,通常可以在應用程式毫不受影響的情況下被修改:存儲的磁盤位置?邏輯層−−−邏輯模式,最重要的一種模式視圖層−−−子模式
應用程式如果不依賴于實體模式,被稱為具有實體資料獨立性
1.3.3 資料模型
資料模型:資料庫的基礎,是一個描述資料,資料聯系,資料語義以及一緻性限制的概念工具的集合。
資料模型的劃分:
- 關系模型 relational model:用表的集合來表示資料和資料之間的關系。使用最廣泛的資料模型。
資料庫系統概念Ch1 - 實體-聯系模型 entity-relationship model:E-R模型基于現實的認識
資料庫系統概念Ch1 - 基于對象的資料模型 object- based data model:E-R模型增加了封裝,方法(函數)和對象的辨別等概念後的擴充
- 半結構化模型 semistructured data model:允許相同類型的資料項含有不同的屬性集的資料定義。XML被廣泛表示
- 網狀資料模型和層次資料模型
1.4 資料庫語言
1.4.1 資料定義語言 Data Dtorage and Definition Language (DDL)
規範符号定義資料庫模式:specification notation for defining the database schema
比如:
create table instructor(
ID char(5),
name varchar(20),
dept_name varchar(20),
salary numeric(8,2))
DDL編譯器産生一系列的表格模闆(table templates)存儲在資料字典 data dictionary【檢索或者修改會使用資料字典】中。
資料字典包含中繼資料 data metadata【描述資料本身的資料】,中繼資料包含下面内容:
- 資料庫模式
-
完整性限制
主鍵
- 授權
1.4.2 資料操作語言
1. DML
資料操縱語言Data-Manipulation Language DML:使得使用者可以通路或者操縱組織起來的資料。有以下的通路類型:
- 對存儲在資料庫中的資訊進行檢索
- 向資料庫中插入新資訊
- 向資料庫中删除資訊
- 修改資料庫中的資訊
DML的類型有兩種:
- 過程化DML procedural DML:要求使用者指定需要什麼資料以及如何獲得這些資料
- 聲明式DML declarative DML:隻要求使用者指定需要什麼資料而不需要指定如何獲得資料
聲明式DML比過程化DML更容易學習,使用。由于聲明式DML不指定如何擷取資料,是以資料庫自己必須找到一種擷取資料的高效途徑。
查詢 query:要求對資訊進行檢索的語句。DML中這部分語言稱為查詢語言 query language,SQL就是一種廣泛使用的查詢語言。
2.SQL
SQL可被嵌入更進階的語言中,如JAVA, C++等
應用程式也可使用ODBC/JDBC提供的接口,這些接口允許SQL查詢語句
1.5 資料庫設計
1.5.1設計過程
資料庫設計是一個怎樣的過程?
業務需求–抽取–>管理資料的要求–>選擇資料模型–>選擇資料庫概念模式
設 計 { 邏 輯 設 計 : 數 據 庫 模 式 的 選 擇 { B u s i n e s s : 幾 個 屬 性 應 該 被 記 錄 C o m p u t e r S c i e n c e d e c i s i o n { 我 們 應 該 有 什 麼 樣 的 關 系 表 格 屬 性 應 該 怎 麼 分 布 在 相 關 聯 的 表 格 中 物 理 設 計 : 數 據 庫 在 物 理 層 次 { 文 件 組 織 内 部 存 儲 結 構 設計\begin{cases} 邏輯設計:資料庫模式的選擇\begin{cases}Business:幾個屬性應該被記錄\\Computer Science decision\begin{cases}我們應該有什麼樣的關系表格\\屬性應該怎麼分布在相關聯的表格中\end{cases}\end{cases}\\ 實體設計:資料庫在實體層次\begin{cases}檔案組織\\内部存儲結構\end{cases} \end{cases} 設計⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧邏輯設計:資料庫模式的選擇⎩⎪⎨⎪⎧Business:幾個屬性應該被記錄ComputerSciencedecision{我們應該有什麼樣的關系表格屬性應該怎麼分布在相關聯的表格中實體設計:資料庫在實體層次{檔案組織内部存儲結構
一種不好的設計:
使設計更優的方法:
-
實體關系模型
• 将企業模組化為實體和關系的集合
• 由實體關系圖以圖形方式表示
-
歸一化理論
• 将糟糕的設計形式化,并對其進行測試
1.5.2實體-聯系模型
1.實體與屬性
實體用屬性描述,多個屬性組成一個實體。
同一類型實體的集合稱為實體集。
聯系是幾個實體之間的關聯。比如下面的member關聯。
UML圖可以表示E-R。如上,
- 實體集用矩形框表示,實體名在頭部,屬性名放在列中
- 聯系集用菱形表示,聯系名放在菱形内部
E-R能表示映射基數【通過某個聯系集能與一實體進行關聯的實體數目】等關系
1.5.3 規範化
參考上述的不好設計的例子即可。
需要額外提取出一個表格,抽取重複資訊。
1.6 資料存儲和查詢
資料庫的功能部件:
-
存儲管理器
資料的組織必須滿足使資料在磁盤和主存中的移動最小化
-
查詢處理部件
提高性能,在視圖的層次上工作。
1.6.1 存儲管理器storage manager
存儲管理器是一個在底層資料和應用程式之間提供接口的程式子產品。
原始資料存儲在OS提供檔案系統的磁盤上。存儲管理器将各種DML語言翻譯成底層檔案系統指令。
存 儲 管 理 器 的 任 務 { I n t e r a c t i o n w i t h t h e O S f i l e m a n a g e r 數 據 的 存 儲 , 檢 索 , 更 新 存儲管理器的任務\begin{cases}Interaction\, with\, the\, OS\, file\, manager\\資料的存儲,檢索,更新\end{cases} 存儲管理器的任務{InteractionwiththeOSfilemanager資料的存儲,檢索,更新
存儲管理器中就包含資料字典。
1.6.2 查詢管理器Query Processing
查詢管理器由下面幾個部分組成:
查 詢 管 理 器 { D D L 解 釋 器 : 解 釋 D D L 語 句 , 并 記 錄 在 數 據 字 典 中 D M L 編 譯 器 : D M L 語 句 翻 譯 成 執 行 方 案 查詢管理器\begin{cases}DDL解釋器:解釋DDL語句,并記錄在資料字典中\\DML編譯器:DML語句翻譯成執行方案\end{cases} 查詢管理器{DDL解釋器:解釋DDL語句,并記錄在資料字典中DML編譯器:DML語句翻譯成執行方案
查詢管理器提供查詢優化:
1.7 事務管理Transaction Management
事務:資料庫應用中完成單一邏輯功能的操作集合。
每一個事物是既有原子性又具有一緻性的單元。【想象銀行轉賬和12306購票的例子,轉賬的時候斷電……多人的購票……】
事務管理器包含兩個部分:
- 并發控制管理器
- 恢複管理器