數據庫系統概念筆記——第一章 引言

第一章 引言

數據庫管理系統(DataBase Management System, DBMS)由一個互相關聯的數據的集合和一組用以訪問這些數據的程序組成。這個數據集合通常稱作數據庫(database)

==目的:==爲了管理大量的信息。

數據庫系統的應用

  • 企業信息
  • 銀行和金融
  • 大學
  • 航空業
  • 電信業

數據庫系統的目標

文件處理系統(file processing system)是傳統的操作系統支持的,永久記錄被存儲在多個不同文件中。

缺點:

  • 數據的冗餘和不一致(data redundancy and inconsistency)
  • 數據訪問困難(difficult in accessing data)
  • 數據獨立(data isolation)
  • 完整性問題(integrity problem)
  • 原子性問題(atomicity problem)
  • 併發訪問異常(concurrent access anomaly)
  • 安全性問題(security problem)

數據視圖

數據抽象

  • 物理層(physical level): 最低層次的抽象,描述數據實際上是怎樣存儲的。
  • 邏輯層(logical level):比物理層稍高的抽象,描述數據中存儲什麼數據及這些數據間存在什麼關係。
  • 視圖層(view level):最高層次的抽象,只描述整個數據庫的某個部分。

實例和模式

數據庫模式與實例的概念可以通過程序設計語言寫出的程序進行類比理解。數據庫模式對應於程序設計語言中的變量聲明(以及與之關聯的類型的定義)。每個變量在特定的時刻會有特定的值,程序中變量在某一時刻的值對應於數據庫模式的一個實例。

數據庫系統可以分爲幾種不同的模式:

  • 物理模式(physical schema)在物理層描述數據庫的設計
  • 邏輯模式(logical schema)在邏輯層描述數據庫的設計
  • 數據庫在視圖層也有幾種模式,也稱爲子模式(subschema),描述了數據庫的不同視圖。

數據模型

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

數據模型可以分爲四類:

  • 關係模型(relation model):關係模式是基於記錄的模型的一種。
  • 實體-聯繫模型(entity-relationship model):實體-聯繫(E-R)數據模型基於對現實世界的這樣一種認識。
  • 基於對象的數據模型(object based data model)
  • 半結構化數據模型(semistructured data model):半結構化數據模型允許那些相同類型的數據項含有不同屬性集的數據定義。

數據庫語言

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

數據操縱語言

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

  • 對存儲在數據庫中的數據進行檢索
  • 向數據庫中插入新的信息
  • 從數據庫中刪除信息
  • 修改數據庫中存儲的信息

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

  • 過程化DML(procedural DML)要求用戶指定需要什麼數據以及如何獲取這些數據。
  • 生命式DML(declarative DML)要求用戶指定需要什麼數據,而不指明如何獲取這些數據。

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

數據定義語言

數據庫模式是通過一系列定義來說明,這些定義由一種稱作**數據定義語言(data definition language,DDL)**的特殊語言來表達,DDL也可用於定義數據的其他特徵。

數據庫系統所使用的存儲結構和訪問方式是通過一系列特殊的DDL語言來說明的,這種特殊的DDL稱爲數據存儲和定義(data storage and definition)語言。

存儲在數據庫中的數據值必須滿足某些一致性約束(consistency constraint)

  • 域約束(domain constraint):每個屬性必須對應於一個所有可能的取值構成的域。聲明一種屬性屬於某種具體的域就相當於約束它可以取的值。
  • 參考完整性(referential integrity):一個關係中給定屬性集上的取值也在另一關係的某一種屬性集的取值中出現。
  • 斷言(assertion):一個斷言就是數據庫需要時刻滿足的某一條件。域約束和參照完整性約束是斷言的特殊形式。
  • 授權(authorization):常見的權限有讀權限(read authorization)、插入權限(insert authorization)、更新權限(update authorization)和刪除權限(delete authorization)。

關係數據庫

關係數據庫是基於關係模型,使用一系列來表達數據以及這些數據之間的聯繫。

每個表有多個列,每個列有唯一的名字。

在這裏插入圖片描述
關係模型是基於記錄的模型的一個實例,基於記錄的模型,是因爲數據庫的解構是幾種固定格式的記錄。每個記錄包含一種特定類型的記錄。每個記錄類型定義固定數目的字段或屬性。表的列對應記錄類型的屬性。

數據操縱語句

SQL查詢語言是非過程化的,它以幾個表作爲輸入,總是僅返回一個表。
在這裏插入圖片描述
這個查詢指定了從instructor表中要取回的dept_name爲History的那些行,並且那些行的name數據要顯式出來。

數據定義語言

SQL提供了豐富的DDL語言,我們可以定義表、完整性約束,斷言等等。

在這裏插入圖片描述

數據庫設計

數據庫設計的主要內容是數據庫模式的設計。

設計過程

數據設計的初始階段是全面刻畫預期的數據庫用戶的數據需求。

概念設計(conceptual design)階段開發出來人的模式提供給企業的詳細概述。

一個開發完全的概念模式還將指出企業的功能需求,在功能需求說明(specification functional requirement)中,用戶描述數據之上的各種操作。

邏輯設計階段(logical design phrase)設計者將高層的概念模式映射到要使用的數據庫系統的實現數據模型上。

大學機構的數據庫設計

初始的用戶需求說明可以基於與數據庫用戶的交流以及設計者自己對大學結構的分析。主要的特性

  • 大學分爲多個系,每個系由自己唯一的名字(dept_name)來標識,坐落在特定的建築物(building)中,有它的經費預算(budget)
  • 每個繫有一個開設課程列表。每個課程有課程號(course_id)、課程名(title)、系名(dept_name)和學分(credits)和可能先修的要求(prerequisites)。
  • 教師由個人唯一的標識號(ID)來標識,每個教師都有名字(name)、所在系(dept_name)和工資(salary)。
  • 學生由個人唯一的標識號(ID)來標識,每個學生有姓名(name)、主修的系(dept_name)和已修學分數(tot_cred)
  • 大學維護一個教室列表,詳細說明樓名(building)、房間號(room_number)和容量(capacity)
  • 大學維護開設的所有課程的列表,每次開課由課程號(course_id)、開課號(sec_id)、年(year)和學期(semester)來標識,與之關聯的有學期(semester)、年(year)、樓名(building)、房間號(room_number)和時段號(time_slot_id)。
  • 系由一個教學任務列表,說明每位教室的授課情況。
  • 大學有一個所有學生課程註冊的列表,說明每位學生在那些課程在哪次開課中註冊了。

實體-聯繫模型

實體-聯繫(E-R)數據模型使用一組稱作實體的基本對象,以及這些對象間的聯繫。數據庫中的實體通過屬性(attribute)集合描述。

聯繫(relationship)是幾個實體之間的關係。同一類型的所有實體的集合稱作實體集(entity set),同一類型的所有聯繫的集合稱作聯繫集合(relationship set)。

規範化

數據存儲和查詢

存儲管理器

存儲管理器是數據庫系統中負責在數據庫中存儲的底層數據與應用程序以及系統提交的查詢之間提供接管口的部件。存儲管理器負責與文件管理器進行交互。

存儲管理部件包括:

  • 權限及完整性管理器(authorization and integrity manager):檢測是否滿足完整性約束,並檢查試圖訪問數據的用戶的權限。
  • 事務管理器(transaction manager):保證即使發生了故障,數據庫也保持在一致的(正確的)狀態,並保證併發事務的執行不發生衝突。
  • 文件管理器(file manager): 管理磁盤存儲空間的分配,管理用於表示磁盤上所有存儲信息的數據結構。
  • 緩衝區管理器(buffer manager):負責將數據從磁盤讀取到內存中來,並決定哪些數據應被緩衝存儲在內存匯中。

存儲管理實現了幾種數據結構:

  • 數據文件(data files):存儲數據庫本身
  • 數據字典(data dictionary):存儲數據庫的元數據,尤其是數據庫模式
  • 索引(index):提供對數據項的快速訪問

查詢處理器

存儲處理器組件包括:

  • DDL解釋器(DDL interpreter):解釋DDL語句並將這些定義記錄在數據字典中
  • DML編譯器(DML compiler):將查詢語言中的DML語句翻譯爲一個執行方案,包括一系列查詢執行引擎所能理解的低級指令。
  • 查詢執行引擎(query evaluation engine):執行由DML編譯器產生的低級指令

事務管理

事務(transaction)是數據庫應用中完成單一邏輯功能的操作集合,每個事務是一個即具有原子性又具有一致性的單元。原子性和持久性的保證是數據庫系統自身的指責,是恢復管理器(recovery manager)的指責。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章