書名: 數(shù)據(jù)庫系統(tǒng)原理及MySQL應(yīng)用教程(第2版)作者名: 李輝等編著本章字?jǐn)?shù): 2630字更新時間: 2020-10-15 17:32:28
2.2 數(shù)據(jù)模型
2.2.1 數(shù)據(jù)模型的概念
在現(xiàn)實(shí)世界中,人們對模型并不陌生。比如一張圖、一組建筑沙盤、一架飛機(jī)航模,一眼看上去,就會使人聯(lián)想到真實(shí)生活中對應(yīng)的事物。模型是對現(xiàn)實(shí)世界中某個對象特征的模擬和抽象。
數(shù)據(jù)模型(Data Model)也是一種模型,它是對現(xiàn)實(shí)世界中數(shù)據(jù)特征及數(shù)據(jù)之間聯(lián)系的抽象。也就是說,數(shù)據(jù)模型用來描述數(shù)據(jù)組成、數(shù)據(jù)關(guān)系、數(shù)據(jù)約束的抽象結(jié)構(gòu)及其說明和對數(shù)據(jù)進(jìn)行操作。由于計算機(jī)不可能直接處理現(xiàn)實(shí)世界中的具體事物,所以現(xiàn)實(shí)世界中的事物必須先轉(zhuǎn)換成計算機(jī)能夠處理的數(shù)據(jù),即數(shù)字化,把具體的人、物、活動、概念等用數(shù)據(jù)模型來抽象表示和處理。所以數(shù)據(jù)模型是實(shí)現(xiàn)數(shù)據(jù)抽象的主要工具。
數(shù)據(jù)模型是數(shù)據(jù)庫系統(tǒng)的核心和基礎(chǔ),決定了數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu)、數(shù)據(jù)定義語言和數(shù)據(jù)操作語言、數(shù)據(jù)庫設(shè)計方法、數(shù)據(jù)庫管理系統(tǒng)軟件的設(shè)計和實(shí)現(xiàn)。它也是數(shù)據(jù)庫系統(tǒng)中用于信息表示和提供操作手段的形式化工具。
數(shù)據(jù)模型應(yīng)滿足三個方面的要求:一是能比較真實(shí)地模擬現(xiàn)實(shí)世界;二是容易為人所理解;三是便于在計算機(jī)上實(shí)現(xiàn)。
數(shù)據(jù)模型是現(xiàn)實(shí)世界數(shù)據(jù)特征的抽象,用于描述一組數(shù)據(jù)的概念和定義。數(shù)據(jù)模型是數(shù)據(jù)庫中數(shù)據(jù)的存儲方式,是數(shù)據(jù)庫系統(tǒng)的基礎(chǔ)。在數(shù)據(jù)庫中,數(shù)據(jù)的物理結(jié)構(gòu)又稱數(shù)據(jù)的存儲結(jié)構(gòu),就是數(shù)據(jù)元素在計算機(jī)存儲器中的表示及其配置;數(shù)據(jù)的邏輯結(jié)構(gòu)則是指數(shù)據(jù)元素之間的邏輯關(guān)系,它是數(shù)據(jù)在用戶或程序員面前的表現(xiàn)形式,數(shù)據(jù)的存儲結(jié)構(gòu)不一定與邏輯結(jié)構(gòu)一致。
2.2.2 數(shù)據(jù)處理三層抽象描述
不同的數(shù)據(jù)模型是提供給模型化數(shù)據(jù)和信息的不同工具。一種數(shù)據(jù)模型要很好地滿足上述提到的三個方面的要求在目前尚很困難,在數(shù)據(jù)庫系統(tǒng)中針對不同的使用對象和應(yīng)用目的,通常采用逐步抽象的方法,在不同層次采用不同的數(shù)據(jù)模型。一般可分為概念層、邏輯層、物理層。
1.概念層
概念層是數(shù)據(jù)抽象級別的最高層,其目的是按用戶的觀點(diǎn)來對現(xiàn)實(shí)世界建模。概念層的數(shù)據(jù)模型稱為概念數(shù)據(jù)模型,簡稱概念模型。概念模型獨(dú)立于任何DBMS,但容易向DBMS所支持的邏輯模型轉(zhuǎn)換。
常用的概念模型有實(shí)體-聯(lián)系模型(Entity-Relationship Model,E-R模型)。
2.邏輯層
邏輯層是數(shù)據(jù)抽象的中間層,描述數(shù)據(jù)庫數(shù)據(jù)整體的邏輯結(jié)構(gòu)。這一層的數(shù)據(jù)抽象稱為邏輯數(shù)據(jù)模型,簡稱數(shù)據(jù)模型。它是用戶通過DBMS看到的現(xiàn)實(shí)世界,是基于計算機(jī)系統(tǒng)的觀點(diǎn)來對數(shù)據(jù)進(jìn)行建模和表示。因此,它既要考慮用戶容易理解,又要考慮便于DBMS實(shí)現(xiàn)。不同的DBMS提供不同的邏輯數(shù)據(jù)模型
常見的數(shù)據(jù)模型有層次模型(Hierarchical Model)、網(wǎng)狀模型(Network Model)、關(guān)系模型(Relation Model)和面向?qū)ο竽P停∣bject Oriented Model)。
3.物理層
物理層是數(shù)據(jù)抽象的最底層,用來描述數(shù)據(jù)物理存儲結(jié)構(gòu)和存儲方法。這一層的數(shù)據(jù)抽象稱為物理數(shù)據(jù)模型,它不但由DBMS的設(shè)計決定,而且與操作系統(tǒng)、計算機(jī)硬件密切相關(guān)。物理數(shù)據(jù)結(jié)構(gòu)一般都向用戶屏蔽,用戶不必了解其細(xì)節(jié)。
2.2.3 數(shù)據(jù)模型的要素
一般地講,數(shù)據(jù)模型是嚴(yán)格定義的一組概念的集合。這些概念精確地描述了系統(tǒng)的靜態(tài)特征、動態(tài)特征和完整性約束條件。因此數(shù)據(jù)模型通常由數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和完整性約束三部分組成。
1.?dāng)?shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)結(jié)構(gòu)描述數(shù)據(jù)庫的組成對象以及對象之間的聯(lián)系。描述的內(nèi)容有兩類:一類是與對象的類型、內(nèi)容、性質(zhì)有關(guān)的,例如網(wǎng)狀模型中的數(shù)據(jù)項(xiàng)、記錄,關(guān)系模型中的域、屬性、關(guān)系等;另一類是與數(shù)據(jù)之間聯(lián)系有關(guān)的對象,例如網(wǎng)狀模型中的系型。
數(shù)據(jù)結(jié)構(gòu)是刻畫一個數(shù)據(jù)模型性質(zhì)最重要的方面。因此,在數(shù)據(jù)庫系統(tǒng)中,人們通常按照其數(shù)據(jù)結(jié)構(gòu)的類型來命名數(shù)據(jù)模型。例如,層次結(jié)構(gòu)、網(wǎng)狀結(jié)構(gòu)和關(guān)系結(jié)構(gòu)的數(shù)據(jù)模型分別命名為層次模型、網(wǎng)狀模型和關(guān)系模型。總之,數(shù)據(jù)結(jié)構(gòu)是所描述的對象類型的集合,是對系統(tǒng)靜態(tài)特性的描述。
● 數(shù)據(jù)結(jié)構(gòu)是描述數(shù)據(jù)模型最重要的方面,通常按數(shù)據(jù)結(jié)構(gòu)的類型來命名數(shù)據(jù)模型。例如,層次結(jié)構(gòu)即樹結(jié)構(gòu)的數(shù)據(jù)模型叫作層次模型,網(wǎng)狀結(jié)構(gòu)即圖結(jié)構(gòu)的數(shù)據(jù)模型叫作網(wǎng)狀模型,關(guān)系結(jié)構(gòu)即表結(jié)構(gòu)的數(shù)據(jù)模型叫作關(guān)系模型。
● 數(shù)據(jù)對象類型的集合包括與數(shù)據(jù)類型、性質(zhì)及數(shù)據(jù)之間聯(lián)系有關(guān)的對象,如關(guān)系型中的域、屬性、關(guān)系、各種鍵等。
● 表示數(shù)據(jù)之間的聯(lián)系有隱式的和顯式的兩類。隱式聯(lián)系是指通過數(shù)據(jù)本身關(guān)聯(lián)相對位置順序表明聯(lián)系;顯式聯(lián)系是指通過附加指針表明聯(lián)系或直接表示。
2.?dāng)?shù)據(jù)操作
數(shù)據(jù)操作是指對數(shù)據(jù)庫中各種對象(型)的實(shí)例(值)允許執(zhí)行的操作的集合,包括操作及有關(guān)的操作規(guī)則。數(shù)據(jù)庫主要有檢索和更新(包括插入、刪除、修改)兩大類操作。數(shù)據(jù)模型必須定義這些操作的確切含義、操作符號、操作規(guī)則(如優(yōu)先級)以及實(shí)現(xiàn)操作的語言。數(shù)據(jù)操作是對系統(tǒng)動態(tài)特性的描述。
3.?dāng)?shù)據(jù)的完整性約束條件
數(shù)據(jù)的完整性約束條件是一組完整性規(guī)則。完整性規(guī)則主要描述數(shù)據(jù)結(jié)構(gòu)中數(shù)據(jù)之間的語義聯(lián)系、數(shù)據(jù)之間的制約和依存關(guān)系,以及數(shù)據(jù)動態(tài)變化規(guī)則。數(shù)據(jù)約束主要用于保證數(shù)據(jù)的完整性、有效性和相容性。
數(shù)據(jù)模型應(yīng)該反映和規(guī)定本數(shù)據(jù)模型必須遵守的基本的通用的完整性約束條件。例如,在關(guān)系模型中,任何關(guān)系必須滿足實(shí)體完整性和參照完整性兩個條件(在關(guān)系數(shù)據(jù)庫和數(shù)據(jù)庫完整性等有關(guān)章節(jié)中將詳細(xì)討論這兩個完整性約束條件)。此外,數(shù)據(jù)模型還應(yīng)該提供定義完整性約束條件的機(jī)制,以反映具體應(yīng)用所涉及的數(shù)據(jù)必須遵守的特定的語義約束條件。例如,在某大學(xué)的數(shù)據(jù)庫中規(guī)定學(xué)生的成績?nèi)绻?門以上不及格將不能授予學(xué)士學(xué)位,教授的退休年齡是65周歲,男職工的退休年齡是60周歲等。
2.3.4 數(shù)據(jù)模型與數(shù)據(jù)模式的區(qū)別
在第1章,我們講過數(shù)據(jù)模式(Data Schema),它是以一定的數(shù)據(jù)模型對一個單位的數(shù)據(jù)的類型、結(jié)構(gòu)及其相互間的關(guān)系所進(jìn)行的描述。數(shù)據(jù)模式有型與值之分,型是指框架,而值是指框架中的實(shí)例。例如,學(xué)生記錄的型為(姓名、性別、出生年月、籍貫、所在系別、入學(xué)時間),而(李一明,女,2000-10-25,江蘇,計算機(jī)系,2017)是上述框架的一個值。
數(shù)據(jù)模型和數(shù)據(jù)模式的主要區(qū)別在于數(shù)據(jù)模型是描述現(xiàn)實(shí)世界數(shù)據(jù)的手段和工具。數(shù)據(jù)模式是利用這個手段和工具對相互間的關(guān)系所進(jìn)行的描述,是關(guān)于型的描述,它與DBMS和OS硬件無關(guān)。
數(shù)據(jù)模型和數(shù)據(jù)模式都分了三個層次,其對應(yīng)關(guān)系如下。
① 概念模式:是用邏輯數(shù)據(jù)模型對一個單位的數(shù)據(jù)的描述。
② 外模式:外模式也稱子模式或用戶模式,是與應(yīng)用程序?qū)?yīng)的數(shù)據(jù)庫視圖,是數(shù)據(jù)庫的一個子集,是用邏輯模型對用戶所用到的那部分?jǐn)?shù)據(jù)的描述。
③ 內(nèi)模式:是數(shù)據(jù)物理結(jié)構(gòu)和存儲方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫內(nèi)部表示的方式。內(nèi)模式也稱存儲模式。
概念模式、外模式和內(nèi)模式都存于數(shù)據(jù)目錄中,是數(shù)據(jù)目錄的基本內(nèi)容。DBMS通過數(shù)據(jù)目錄管理和訪問數(shù)據(jù)模式。一般數(shù)據(jù)庫系統(tǒng)中用戶只能看到外模式。
- C語言程序設(shè)計案例教程
- Learning Cython Programming
- ASP.NET Core 5.0開發(fā)入門與實(shí)戰(zhàn)
- 零基礎(chǔ)學(xué)Java程序設(shè)計
- 快人一步:系統(tǒng)性能提高之道
- Java系統(tǒng)化項(xiàng)目開發(fā)教程
- Extending Puppet(Second Edition)
- RealSenseTM互動開發(fā)實(shí)戰(zhàn)
- C/C++數(shù)據(jù)結(jié)構(gòu)與算法速學(xué)速用大辭典
- Python機(jī)器學(xué)習(xí)之金融風(fēng)險管理
- Kubernetes進(jìn)階實(shí)戰(zhàn)
- 軟件測試技術(shù)
- Groovy 2 Cookbook
- 原型設(shè)計:打造成功產(chǎn)品的實(shí)用方法及實(shí)踐
- Google Maps JavaScript API Cookbook