官术网_书友最值得收藏!

1.1 數據庫及數據庫系統概念

在信息時代,無論是信息系統,還是互聯網服務,它們都需要對各類數據進行存儲、管理、計算、分析等處理。這些數據處理都離不開數據庫及其數據庫管理系統的支持。什么是數據庫?數據庫如何組織、存儲數據?數據庫管理系統如何創建、訪問和管理數據庫?這些都是學習者需要了解與掌握的數據庫領域知識。

1.1.1 數據庫定義

通信技術和計算機技術的結合與發展,滿足了人們對快速獲取、處理以及傳播信息的需求,催生了計算機網絡。

任何信息系統的技術實現,均需要使用具有特定數據模型的數據容器來組織與存儲數據,同時還需要相應系統軟件支持應用程序對數據容器中的數據進行存取訪問操作。在計算機領域中,這類組織與存儲數據的數據容器被稱為“數據庫”。例如,電子商務系統將商品信息、銷售價格信息、銷售服務信息等業務數據分別寫入由多個相關數據表構成的數據庫中進行數據存儲。當客戶訪問電子商務系統時,系統按照客戶的需求將商品的信息從數據庫中提取出來,呈現在電子商務網站頁面中。客戶想要購買商品,可以在電子商務系統中填寫訂單信息,并支付貨款,這樣便可完成線上購物活動。在電子商務系統中,所有業務數據處理都依賴數據庫的支持。同樣,各個機構的辦公管理系統、財務管理系統、人力資源管理系統、薪酬管理系統等業務信息系統也需要數據庫來實現數據管理。因此,數據庫是信息系統最重要的組成部分。

一些學者對數據庫(Database)給出了更專業的定義。

定義1:數據庫是一種電子文件柜,用戶可以對文件柜中的數據進行新增、檢索、更新、刪除等操作。

定義2:數據庫是以一定方式存儲數據的倉庫,它能為多個用戶所共享訪問。

定義3:數據庫是依照某種數據模型組織起來,并存放在存儲器中的數據集合。這種數據集合具有如下特點:盡量不重復存儲數據,以優化方式為用戶存取數據提供服務,其數據結構獨立于使用它的應用程序,其數據的增、刪、改、查由底層系統軟件進行統一管理與控制。

綜上所述,我們可以將數據庫理解為一種依照特定數據模型,組織、存儲和管理數據的文件集合。在信息系統中,數據庫的基本作用是組織與存儲系統數據,并為系統軟件從中存取數據提供支持。與計算機系統中的普通數據文件有明顯不同,數據庫文件具有如下特點:

1)數據一般不重復存儲。

2)可支持多個應用程序并發訪問。

3)數據結構獨立于訪問它的應用程序。

4)對數據的增、刪、改、查操作均由數據庫系統軟件進行管理和控制。

1.1.2 數據模型

從數據庫的定義可知,數據庫使用了特定的數據模型來組織與存儲數據,那么數據模型是什么?數據庫一般使用哪種數據模型來組織與存儲數據?這些都是需要深入了解的數據庫基本問題。

1.數據模型是什么

數據模型是一種對事物對象數據特征及其結構的形式化表示,它通常由數據結構、數據操作、數據約束3個部分組成。

1)數據結構。它用于描述事物對象的靜態數據特征,其中包括事物對象的屬性數據、數據類型、數據組織方式等。數據結構是數據模型的基礎,數據操作和數據約束都是基于數據結構進行處理的。

2)數據操作。它用于描述事物對象的動態數據特征,即對事物對象屬性數據可進行的數據操作,如插入、更新、刪除和查詢等。在數據模型中,通常還需定義數據操作語言元素,其中包括操作語句、操作規則及操作結果表示等。

3)數據約束。它用于描述事物對象數據之間的語義聯系,以及數據取值范圍限制等規則,從而確保數據的完整性、一致性和有效性。

例如,在許多高級編程語言中,數據文件就是一種典型的數據模型實例,其數據結構由若干數據記錄行組成,每行數據記錄又由若干數據項組成。在數據文件的編程訪問中,程序可以移動指針來確定數據記錄在文件中的位置,然后對該數據記錄進行讀/寫或刪除處理。

2.經典數據模型

傳統數據庫先后使用了網狀數據模型、層次數據模型、關系數據模型。這些數據模型之間的區別在于數據記錄之間的組織方式不同:層次數據模型以“樹結構”方式來組織數據記錄之間的聯系結構;網狀數據模型以“圖結構”方式來組織數據記錄之間的聯系結構;關系數據模型以“表結構”方式來組織數據記錄之間的聯系結構。

(1)層次數據模型

層次數據模型是數據庫系統早期使用的一種數據模型,其數據結構是一棵包含多個數據節點的“有向樹”。根節點在最上端,其下有多層子節點;最低層節點稱為葉節點。每個數據節點存儲一個數據記錄,數據節點之間通過鏈接指針進行上下聯系。在層次數據模型中訪問數據記錄時,需要使用樹節點遍歷方法在數據節點中檢索數據記錄,并對數據記錄進行存取訪問操作。例如,高校教務系統的層次數據模型如圖1-1所示。

圖1-1 高校教務系統的層次數據模型

層次數據模型特征:該模型將數據節點組織成多叉樹關系的數據結構,程序采用關鍵字檢索算法來遍歷訪問各個數據節點。其優點:數據結構層次清晰,使用鏈接指針可遍歷訪問各個數據節點;數據節點的更新和擴展容易實現;關鍵字檢索算法處理效率高。其缺點:系統數據組織結構局限于有向樹結構,缺乏靈活性;相同數據記錄可能會在多個數據節點中重復存放,數據冗余存放容易導致數據處理存在不一致性問題;層次數據模型不太適合于具有拓撲空間的數據組織。

采用層次數據模型的數據庫軟件產品出現于20世紀60年代末,最具代表性的數據庫軟件產品是IBM公司推出的信息管理系統(Information Management System,IMS)。

(2)網狀數據模型

網狀數據模型也是早期數據庫所使用的數據模型,它允許數據節點之間有多種聯系方式。網狀數據模型的每一個數據節點均代表一個數據記錄,節點之間也使用鏈接指針來聯系。網狀數據模型既可以表示數據節點之間的多種從屬關系,也可以表示數據節點之間的橫向關系。網狀數據模型擴展了層次數據模型的數據記錄聯系方式,其數據記錄檢索處理更方便。例如,高校教務系統的網狀數據模型如圖1-2所示。

圖1-2 高校教務系統的網狀數據模型

網狀數據模型允許數據節點之間不僅有上下層次聯系,也可以有橫向關聯關系。其優點:可以方便地表示數據節點之間的復雜關系,數據冗余小。其缺點:網狀數據模型的節點之間關系較復雜,增加了數據記錄定位和數據記錄查詢的困難;各數據節點還需存放較多鏈接指針,使得數據存儲量增大;數據記錄更新不方便,除了對數據記錄進行數據更新外,還需修改關聯指針。

網狀數據模型的數據庫軟件產品出現于20世紀70年代,使用網狀數據模型的典型數據庫軟件產品有Cullinet軟件公司的IDMS、Honeywell公司的IDSII、Univac公司的DMS1100、HP公司的IMAGE等。

(3)關系數據模型

關系數據模型(簡稱關系模型)是以關系代數理論為基礎,通過二維表結構來組織和存儲數據記錄的數據模型。關系數據模型的每個二維表均具有關系特征,它們又被稱為關系表。在關系數據模型中,多個二維表可通過相同屬性列的一致性約束進行數據關聯。例如,課程目錄系統的關系數據模型如圖1-3所示。

在圖1-3所示的關系數據模型示例中,“教師信息表”“課程信息表”“開課目錄表”均為具有關系特征的二維表。每個二維表均存放其主題的數據,表之間通過具有相同列屬性的數據值進行約束關聯。其中,“開課目錄表”中“工號”屬性列與“教師信息表”中“工號”屬性列的數據必須保持一致。同樣,“開課目錄表”中“課程號”屬性列的數據也要與“課程信息表”中“課程號”屬性列的數據匹配一致。

圖1-3 課程目錄系統的關系數據模型

關系數據模型的優點:數據結構簡單、數據操作靈活;支持關系與集合運算操作;支持廣泛使用的結構化查詢語言(Structured Query Language,SQL);容易實現與應用程序的數據獨立性。其缺點:局限于結構化數據組織與存儲;支持的數據類型較簡單;難以滿足非結構化數據和復雜數據存儲與訪問處理需求。

關系數據模型具有結構簡單、訪問方便、編程靈活等特點,其數據操作語言為非過程化語言,具有集合處理能力,并能實現數據對象的定義、操縱、控制的一體化處理。因此,關系數據模型是數據庫領域中使用最廣泛的數據模型。目前,大部分數據庫系統都是采用關系數據模型實現的關系數據庫系統,如Oracle數據庫系統、IBM DB2數據庫系統、SQL Server數據庫系統、MySQL數據庫系統等。基于關系數據模型的關系數據庫適合結構化數據管理,并且關系數據庫技術已發展了幾十年,其技術非常成熟,因此,關系數據庫在各行各業的信息系統中得到了十分廣泛的應用。

隨著互聯網應用和大數據應用的發展,針對大量的、復雜的、不同類型的應用數據存儲管理問題,傳統關系數據模型存在局限,無法高效處理非結構化、半結構化數據。為此,NoSQL數據庫采用了不同數據模型分別對各類數據進行存儲管理,如面向對象數據模型、鍵值存儲數據模型、列存儲數據模型、文檔存儲數據模型、事件存儲數據模型、內容存儲數據模型、圖結構數據模型、時間序列數據模型、資源描述框架存儲數據模型、搜索引擎數據模型、多值數據模型、XML數據模型、導航數據模型等。這些數據模型的存儲原理將會在第7章進行介紹。此外,另一種融合關系數據庫特點和NoSQL數據庫特點的新型數據庫(NewSQL數據庫)技術也開始在互聯網與大數據領域得到應用。NewSQL數據庫不再采用單一數據模型進行數據管理,而是采用支持多種數據模型的DBMS來管理數據庫。它既實現了結構化數據管理,也實現了非結構化數據處理。不過NewSQL數據庫仍在發展過程中,它所采用的多模型數據庫技術還有待持續完善。

1.1.3 數據庫系統

數據庫系統(Database System)是一種基于數據庫、數據庫管理系統進行數據管理的軟件系統。當數據庫系統在應用領域實現數據存儲、數據處理、數據檢索、數據分析等功能服務時,該系統稱為數據庫應用系統(Database Application System)。數據庫應用系統由用戶、數據庫應用程序、數據庫管理系統和數據庫四個部分組成,如圖1-4所示。

圖1-4 數據庫應用系統組成

1.用戶

在數據庫應用系統中,用戶就是數據庫的使用者,一般分為最終用戶和數據庫管理員(Database Administrator,DBA)兩類。最終用戶通過數據庫應用程序實現業務數據處理和信息服務。DBA是專門進行數據庫管理與運行維護的系統用戶,該用戶通過使用DBMS軟件管理工具對數據庫進行創建、管理和維護,從而為數據庫系統的正常運行提供支持與保障。

2.數據庫應用程序

數據庫應用程序是一種在DBMS支持下對數據庫進行訪問和處理的應用軟件程序。它們以窗口或頁面等表單形式讓用戶讀取、更新、查詢或統計數據庫信息,從而實現業務數據處理與信息服務。數據庫應用程序本身不能直接存取數據庫信息,必須基于DBMS軟件提供的接口和運行環境才能訪問數據庫。具體來講,數據庫應用程序需要使用DBMS提供的驅動程序及應用程序編程接口(Application Programming Interface,API)連接數據庫,并提交SQL語句到DBMS服務器執行,才能實現數據庫操作。在高級語言程序(如Java、C++、C#、Python等)設計的數據庫訪問程序中,通常使用標準接口(如ODBC或JDBC)對數據庫實現基本操作。

3.數據庫管理系統

數據庫管理系統(Database Management System,DBMS)是一類用于創建、操縱、運行和管理數據庫的系統軟件。數據庫管理系統與操作系統一樣都屬于基礎系統軟件,它對支撐數據管理及其信息化應用至關重要。無論是應用程序,還是數據庫管理工具,都需要借助DBMS實現對數據庫的存取訪問。DBMS的基本功能就是實現數據庫創建、維護、管理,以及數據庫存取訪問。

4.數據庫

在數據庫系統中,數據庫是存放系統各類數據的容器。該容器按照一定的數據模型來組織與存儲數據。目前,在數據庫應用系統中,使用最多的數據庫依然是關系數據庫。這類數據庫采用關系數據模型實現數據組織與存儲。例如,使用關系數據庫進行成績管理,其數據庫由COURSE關系表、GRADE關系表和STUDENT關系表組成,各關系表之間的聯系如圖1-5所示。

圖1-5 成績管理關系數據庫關系表之間的聯系

在圖1-5所示的成績管理關系數據庫示例中,COURSE表、GRADE表和STUDENT表均為關系表,它們之間通過公共列CourseID、StudentID建立了表之間的參照關聯。在成績表(GRADE)中,針對某個學生(StudentID)參加某課程(CourseID)考試,給出具體課程的成績分數(Score)。

在數據庫中,除了存放用戶數據外,還會存放描述數據庫結構的元數據,例如在關系數據庫中,各個關系表的表名稱、列名稱、列數據類型、數據約束規則等都屬于元數據。這些描述數據庫結構的元數據需要存放在數據庫的系統表中。圖1-6給出了關系數據庫存儲的主要數據信息類型。

圖1-6 關系數據庫存儲的主要數據信息類型

在關系數據庫中,數據庫元數據、索引數據、運行狀態數據等存放在系統表中,用戶的應用數據只能存放在用戶表中。

課堂討論:本節重點與難點知識問題

1)如何區分數據庫、數據庫管理系統、數據庫系統、數據庫應用系統?

2)在數據庫中,數據模型有何作用?它有哪些組成部分?

3)在數據庫技術發展階段中,先后采用過哪些數據模型?各有什么特點?

4)為什么需要大力發展自主知識產權的國產數據庫軟件?

5)數據庫系統有哪幾個組成部分?各個部分有何作用?

6)什么是元數據?它是如何產生的?存儲在哪里?

主站蜘蛛池模板: 封开县| 方山县| 稻城县| 福海县| 施秉县| 牡丹江市| 承德县| 中方县| 光山县| 尤溪县| 富裕县| 西峡县| 霍林郭勒市| 拜泉县| 固安县| 江达县| 五原县| 酒泉市| 介休市| 泾源县| 根河市| 容城县| 城固县| 姜堰市| 镇赉县| 莱阳市| 雅江县| 南和县| 沧州市| 中宁县| 大姚县| 山阳县| 格尔木市| 房产| 元江| 亚东县| 仲巴县| 安仁县| 醴陵市| 长葛市| 衢州市|