資料庫系統概念筆記(1)引言(上)

這幾天開始學習資料庫系統概念,這裡用到的書是Abramham Silberschatz(耶魯大學)等著的《資料庫系統概念》(機械工業出版社,第六版),其實也不算有太多自己的東西,只是把學到的東西整理成筆記方便以後查看。

1.1 資料庫系統的應用

資料庫系統的應用十分廣泛:

1.2 資料庫系統的目標

資料庫系統作為商業數據計算機化管理的早期方法而產生,在20世紀60年代,在計算機中保存信息的一種方法是將它們存放在操作系統文件中,為了使用戶可以對信息進行操作,程序員會編寫一些對文件進行操作的應用程序。

但隨著需求的增長,越來越多的文件和應用程序將會被加入到系統中,這裡描述的便是典型的文件處理系統(file-processing system)。資料庫管理系統(DBMS)出現之前,各個組織一般都用這個系統來存儲信息。但它有很多弊端:

這些問題促進了資料庫的發展。

1.3 數據視圖

資料庫系統是一些相互關聯的數據以及一組使得用戶可以訪問和修改這些數據的程序的集合

資料庫系統的一個主要目的是給用戶提供數據的抽象視圖(也就是說系統隱藏關於數據存儲和維護的某些細節)。

1.3.1 數據抽象:一個可用的系統必須能高效地檢索數據,這種高效性的需求促使設計者在資料庫中使用複雜的數據結構來表示數據,由於許多資料庫系統的用戶並未受過計算機專業訓練,系統開發人員通過以下幾個層次上的抽象來對用戶屏蔽複雜性,以簡化用戶與系統的交互。我們可以用電視機來類比,對於一個看電視的人來說,只需要知道怎麼按遙控板操作電視機即可,不需要知道電視機內部的電路結構。

1.3.2 實例和模式:

根據我們前面討論的不同的抽象層次,資料庫系統可以分為幾種不同的模式:

物理模式(physical schema):在物理層描述資料庫的設計;

邏輯模式(logical schema):則在邏輯層描述資料庫的設計;

資料庫在視圖層也可以有幾種模式,有時稱為子模式(subschema),它描述了資料庫的不同視圖。

在這些模式中,因為程序員使用邏輯模式來構造資料庫應用程序,從其對應用程序的效果來看,邏輯模式是目前最重要的一種模式。

物理模式隱藏在邏輯模式之下,並且通常可以在應用程序絲毫不受影響的情況下被輕易地更改。應用程序如果不依賴於物理模式,它們就被稱為是具有物理數據獨立性,因此即使物理模式改變了它們也無需重寫。

1.3.3 數據模型:

資料庫結構的基礎是數據模型(data model)

數據模型是一個描述數據數據聯繫數據語義以及一致性約束的概念工具的集合。數據模型提供了一種描述物理層、邏輯層以及視圖層資料庫設計的方式。

1.4 資料庫語言

資料庫系統提供數據定義語言(data-definition language)來定義資料庫模式,以及數據操縱語言(data-manipulation language)來表達資料庫的查詢和更新。

數據定義語言和數據操縱語言並不是兩種分離的語言,相反地,它們簡單地構成了單一的資料庫語言(如廣泛使用的SQL語言)的不同部分。

接下來我們就來分別說明一下這兩種情況:

1.4.1 數據操縱語言:

數據操縱語言(data-manipulation language,DML)是這樣一種語言,它使用戶可以訪問或操縱那些按照某種適當的數據模型組織起來的數據。有以下訪問類型:

通常有兩類基本的數據操縱語言:

過程化DML(procedural DML)要求用戶指定需要什麼數據以及如何獲得這些數據。

聲明式DML(declarative DML)(也稱非過程化DML)只要求用戶指定需要什麼數據,而不聲明如何獲得這些數據。

通常聲明式DML比過程化DML易學易用。但是由於用戶不必指明如何獲得數據,資料庫系統必須找出一種訪問數據的高效途徑。

查詢(query)是要求對信息進行檢索的語句,DML中涉及信息檢索的部分稱作查詢語言(query language)

(注1:實踐中常把查詢語言和數據操縱語言作為同義詞使用,儘管技術上來說這並不正確)

(注2:SQL是最廣泛使用的查詢語言)

1.4.2 數據定義語言:

資料庫模式是通過一系列定義來說明的,這些定義由一種稱作數據定義語言(Data-Definition Language,DDL)的特殊語言表達。

資料庫系統所使用的存儲結構訪問方式是通過一系列特殊的DDL語句來說明的,這種特殊的DDL稱作數據存儲和定義(data storage and definition)語言。這些語句定義了資料庫模式的實現細節,而這些細節對用戶來說通常是不可見的。

存儲在資料庫中的數據值必須滿足某些一致性約束(consistency constraint)。(如某個大學要求一個系的賬戶餘額必須不能為負值)

DDL以一些指令(語句)作為輸入,生成一些輸出。

DDL的輸出放在數據字典(data dictionary)中,數據字典包括了元數據(metadata),元數據是關於數據的數據。可把數據字典看作一種特殊的表,這種表只能由資料庫系統本身(不是常規的用戶)來訪問和修改。在讀取和修改實際的數據前,資料庫系統先要參考數據字典。


推薦閱讀:

劉寅:TiDB 工具鏈和生態
如何理解並正確使用MySql索引
關係型資料庫的原理
簡析關係型資料庫和非關係型資料庫的比較(下)
資料庫(一)

TAG:資料庫 | SQL | 軟體工程 |