2.3.2 數(shù)據(jù)模型的基本概念
1.模型的概念
對現(xiàn)實(shí)世界事物特征的模擬和抽象就是這個事物的模型。在數(shù)據(jù)庫中數(shù)據(jù)模型是抽象的表示和處理現(xiàn)實(shí)世界中數(shù)據(jù)的工具。
模型應(yīng)當(dāng)滿足以下要求:一是真實(shí)地反映現(xiàn)實(shí)世界;二是容易被人理解;三是便于在計(jì)算機(jī)上實(shí)現(xiàn)等。信息采用逐步抽象的方法,把數(shù)據(jù)模型劃分為兩類,以人的觀點(diǎn)模擬現(xiàn)實(shí)世界的模型叫做概念模型(或稱信息模型) ,以計(jì)算機(jī)系統(tǒng)的觀點(diǎn)模擬現(xiàn)實(shí)世界的模型叫做數(shù)據(jù)模型。
2.概念模型
概念模型就是概念層次的數(shù)據(jù)模型。它獨(dú)立于任何數(shù)據(jù)庫管理系統(tǒng),但是又很容易向數(shù)據(jù)庫管理系統(tǒng)支持的邏輯數(shù)據(jù)模型轉(zhuǎn)換。
(l)基本術(shù)語
實(shí)體:客觀存在,并且可以互相區(qū)別的事物。它可以是具體的物件,也可以是抽象的概念,還可以是某種聯(lián)系。
屬性:實(shí)體具有的每一個特性都稱為一個屬性。屬性有“型” 和“值” 的概念,屬性的名稱(說明) 就是屬性的“型”;對型的具體賦值就是屬性的“值”。
碼:在眾多屬性中能夠惟一標(biāo)識(確定) 實(shí)體的屬性或?qū)傩越M的稱為實(shí)體的碼。
域:屬性的取值范圍稱為該屬性的域。
實(shí)體型:用實(shí)體名及描述它的各屬性名,可以刻畫出全部同質(zhì)實(shí)體的共同特征和性質(zhì),它被稱為實(shí)體型。
實(shí)體集:某個實(shí)體型下的全部實(shí)體,叫做實(shí)體集。
聯(lián)系:一個實(shí)體集內(nèi)部各實(shí)體之間的相互聯(lián)系,叫做實(shí)體內(nèi)。
(2)實(shí)體集內(nèi)部的聯(lián)系。在一個實(shí)體集內(nèi)部也存在著一對一、一對多和多對多的聯(lián)系。
3.數(shù)據(jù)模型
它分為邏輯數(shù)據(jù)模型和物理數(shù)據(jù)模型兩類。
邏輯數(shù)據(jù)模型:是用戶通過數(shù)據(jù)庫管理系統(tǒng)看到的現(xiàn)實(shí)世界,它描述了數(shù)據(jù)庫數(shù)據(jù)的整體結(jié)構(gòu)。邏輯模型通常由數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和數(shù)據(jù)完整性約束三部分概念組成。數(shù)據(jù)結(jié)構(gòu)是對系統(tǒng)靜態(tài)特性的描述,人們一般以數(shù)據(jù)結(jié)構(gòu)的類型來命名數(shù)據(jù)模型,如層次模型、網(wǎng)狀模型、關(guān)系模型、面向?qū)ο竽P偷取?BR> 物理數(shù)據(jù)模型:是用來描述數(shù)據(jù)的物理存儲結(jié)構(gòu)和存儲方法的。它不但受數(shù)據(jù)庫管理系統(tǒng)控制,而且與計(jì)算機(jī)存儲器、操作系統(tǒng)密切相關(guān)。
(l)層次模型。層次數(shù)據(jù)庫的特點(diǎn)是實(shí)體之間按層次關(guān)系部定義。實(shí)體用記錄(類型) 表示,實(shí)體的屬性對應(yīng)記錄的數(shù)據(jù)項(xiàng);實(shí)體之間的聯(lián)系用有向連線表示。
層次模型以每個實(shí)體為結(jié)點(diǎn),上層結(jié)點(diǎn)叫做父結(jié)點(diǎn),下層結(jié)點(diǎn)叫做子結(jié)點(diǎn)。層次模型像一棵倒置的樹,最上層的結(jié)點(diǎn)沒有雙親,稱為根結(jié)點(diǎn);最下層的結(jié)點(diǎn)沒有子女,稱為葉結(jié)點(diǎn)。所以層次模型是一種以記錄類型為結(jié)點(diǎn)的有向樹結(jié)構(gòu)。
(2)網(wǎng)狀模型。由于層次模型還不能很好地表達(dá)實(shí)體間的復(fù)雜關(guān)系(多對多聯(lián)系) ,于是又產(chǎn)生了網(wǎng)狀模型,它很好地解決了實(shí)體間復(fù)雜關(guān)系的表達(dá)問題,但是它也有致命的弱點(diǎn),即當(dāng)需求擴(kuò)展時,對原有數(shù)據(jù)結(jié)構(gòu)及應(yīng)用程序的修改會產(chǎn)生嚴(yán)重的后果。
(3)關(guān)系模型。關(guān)系模型以人們經(jīng)常使用的表格形式作為基本的存儲結(jié)構(gòu),通過相同關(guān)鍵字段來實(shí)現(xiàn)表格間的數(shù)據(jù)聯(lián)系。
(4)面向?qū)ο竽P汀2煌趯哟文P?、網(wǎng)狀模型、關(guān)系模型這些傳統(tǒng)的數(shù)據(jù)模型,面向?qū)ο髷?shù)據(jù)模型是非傳統(tǒng)的數(shù)據(jù)模型。將面向?qū)ο蟪绦蛟O(shè)計(jì)方法與數(shù)據(jù)庫技術(shù)相結(jié)合就產(chǎn)生了面向?qū)ο髷?shù)據(jù)庫系統(tǒng)。
2.3.3 關(guān)系模型與關(guān)系數(shù)據(jù)庫
1.關(guān)系模型
關(guān)系模型是一種新的數(shù)據(jù)模型。它建立在集合論和謂詞演算公式的基礎(chǔ)上。它提供的邏輯結(jié)構(gòu)簡單,數(shù)據(jù)獨(dú)立性強(qiáng),存取具有對稱性、操縱靈活。
在數(shù)據(jù)庫中的數(shù)據(jù)結(jié)構(gòu)如果依照關(guān)系模型定義,就是關(guān)系數(shù)據(jù)庫系統(tǒng)。關(guān)系數(shù)據(jù)庫系統(tǒng)由許多不同的關(guān)系構(gòu)成,其中每個關(guān)系就是一個實(shí)體,可以用一張二維表表示。
關(guān)系二維表中的術(shù)語解釋如下:
關(guān)系(Relation):一張二維表對應(yīng)一個關(guān)系。
屬性(Attribute):表中每一列叫做一個屬性,屬性有名和值的區(qū)別。
元組(Topl):由屬性值組成的每一行叫做一個元組。
框架(rramework):由屬性名組成的表頭稱為框架(關(guān)系型)。
分量:表中的每一個屬性值。
域(Domain):每個屬性的取值范圍。
候選碼(Candidate Key):可以惟一確定的一個元組的屬性或?qū)傩越M(可簡稱碼)。
主碼(Primary Key):一個關(guān)系中往往會有多個候選碼,可以指定一個為主碼。
主屬性(Primary Attribute):可以作為候選碼的屬性也叫主屬性。
非主屬性(Non-key Attribute):不能作為候選碼的屬性叫做非主屬性。
關(guān)系模式:對關(guān)系的描述稱為關(guān)系模式,常常記做:
關(guān)系名(屬性1,屬性2,屬性3,……,屬性n)
在關(guān)系模型中,不但實(shí)體用關(guān)系表示,而且實(shí)體之間的聯(lián)系也用關(guān)系來表示。
關(guān)系模型要求關(guān)系必須是規(guī)范化的,即要求每個關(guān)系必須滿足一定的條件,其中最基本的一條就是,關(guān)系中每個分量必須是不可再分的基本項(xiàng)。
作為一個關(guān)系模型的基本約束條件,起碼必須具備以下幾條:
表格中每一數(shù)據(jù)項(xiàng)不可再分,是基本項(xiàng)。
每一列數(shù)據(jù)有相同的類型,叫做屬性。各列都有惟一的屬性名和不同的屬性值,列數(shù)可根據(jù)需要而設(shè)定。
每列的順序是任意的。
每一行數(shù)據(jù)是一個實(shí)體諸多屬性值的集合,叫做元組。一個表格中不允許有完全相同的行出現(xiàn)。
各行順序可以是任意的。
2.關(guān)系操作
關(guān)系數(shù)據(jù)模型的理論基礎(chǔ)是集合論,每一個關(guān)系就是一個笛卡爾積的子集。
(1)傳統(tǒng)集合運(yùn)算。傳統(tǒng)集合運(yùn)算有并、交、差三種。
(2)專門的關(guān)系運(yùn)算。專門的關(guān)系運(yùn)算主要有選擇(篩選)、投影和連接三種。選擇運(yùn)算是對關(guān)系表中元組(行) 的操作,操作結(jié)果是找出滿足條件的元組。其中,
投影運(yùn)算是對關(guān)系表中屬性(列) 的操作,操作結(jié)果是找出關(guān)系中指定屬性全部值的子集。
選擇運(yùn)算和投影運(yùn)算可以同時用一條命令來實(shí)現(xiàn)。
連接運(yùn)算是對兩個關(guān)系的運(yùn)算,操作結(jié)果是找出滿足連接條件的所有元組,并且拼接成一個新的關(guān)系。完善的關(guān)系數(shù)據(jù)庫管理系統(tǒng)總是以數(shù)據(jù)操縱語言及結(jié)構(gòu)化查詢語言(SQL),來實(shí)現(xiàn)各種關(guān)系運(yùn)算。
2.3.4 Vsual Foxpr數(shù)據(jù)庫管理系統(tǒng)
1.VFP的基本概念
(l)數(shù)據(jù)表。數(shù)據(jù)表簡稱為表,是VFP中最重要的操作對象。一個表就是一個關(guān)系,它總是以文件的形式存放在計(jì)算機(jī)的外存儲器中。表文件的存取名稱就是關(guān)系名,文件的擴(kuò)展名是DBF.
(2)數(shù)據(jù)庫。在VFP中一張二維表稱為一個數(shù)據(jù)表(或者簡稱表)。在關(guān)系數(shù)據(jù)庫中,可以包含若干個表(以及視圖) .數(shù)據(jù)庫也可作為一個文件存放在計(jì)算機(jī)外存儲器中,其擴(kuò)展名是DBC.
(3)索引。索引實(shí)際上是對數(shù)據(jù)表的排序,但是它不改變數(shù)據(jù)表中數(shù)據(jù)的物理順序,而是另外建立一個索引對應(yīng)列表。
(4)關(guān)鍵字。關(guān)系中的碼在數(shù)據(jù)表中一般叫做關(guān)鍵字,主碼叫做主關(guān)鍵字。因?yàn)樵跀?shù)據(jù)表中,屬性叫做字段,所以關(guān)鍵字就是能夠惟一標(biāo)識一條記錄的字段或字段組合。如果一個字段不能成為當(dāng)前表的關(guān)鍵字,但卻是另一個數(shù)據(jù)表的關(guān)鍵字,那么這個字段就稱為外來關(guān)鍵字。
(5)視圖。視圖是一種特殊類型的表,它往往由一個或多個表(或視圖) 中的部分字段或部分記錄組成。但是視圖并不是一個完整的數(shù)據(jù)集合,只是在數(shù)據(jù)庫中存放了相應(yīng)的關(guān)系。
(6)存儲過程。存儲過程實(shí)際上是封裝在數(shù)據(jù)庫中的一個命令(程序) 文件。其中可以包含系統(tǒng)為實(shí)現(xiàn)數(shù)據(jù)庫中數(shù)據(jù)的保護(hù)、安全、鏈接、查詢、視圖及關(guān)聯(lián)等功能,而自動或人為設(shè)計(jì)的若干程序過程段及函數(shù)等。
1.模型的概念
對現(xiàn)實(shí)世界事物特征的模擬和抽象就是這個事物的模型。在數(shù)據(jù)庫中數(shù)據(jù)模型是抽象的表示和處理現(xiàn)實(shí)世界中數(shù)據(jù)的工具。
模型應(yīng)當(dāng)滿足以下要求:一是真實(shí)地反映現(xiàn)實(shí)世界;二是容易被人理解;三是便于在計(jì)算機(jī)上實(shí)現(xiàn)等。信息采用逐步抽象的方法,把數(shù)據(jù)模型劃分為兩類,以人的觀點(diǎn)模擬現(xiàn)實(shí)世界的模型叫做概念模型(或稱信息模型) ,以計(jì)算機(jī)系統(tǒng)的觀點(diǎn)模擬現(xiàn)實(shí)世界的模型叫做數(shù)據(jù)模型。
2.概念模型
概念模型就是概念層次的數(shù)據(jù)模型。它獨(dú)立于任何數(shù)據(jù)庫管理系統(tǒng),但是又很容易向數(shù)據(jù)庫管理系統(tǒng)支持的邏輯數(shù)據(jù)模型轉(zhuǎn)換。
(l)基本術(shù)語
實(shí)體:客觀存在,并且可以互相區(qū)別的事物。它可以是具體的物件,也可以是抽象的概念,還可以是某種聯(lián)系。
屬性:實(shí)體具有的每一個特性都稱為一個屬性。屬性有“型” 和“值” 的概念,屬性的名稱(說明) 就是屬性的“型”;對型的具體賦值就是屬性的“值”。
碼:在眾多屬性中能夠惟一標(biāo)識(確定) 實(shí)體的屬性或?qū)傩越M的稱為實(shí)體的碼。
域:屬性的取值范圍稱為該屬性的域。
實(shí)體型:用實(shí)體名及描述它的各屬性名,可以刻畫出全部同質(zhì)實(shí)體的共同特征和性質(zhì),它被稱為實(shí)體型。
實(shí)體集:某個實(shí)體型下的全部實(shí)體,叫做實(shí)體集。
聯(lián)系:一個實(shí)體集內(nèi)部各實(shí)體之間的相互聯(lián)系,叫做實(shí)體內(nèi)。
(2)實(shí)體集內(nèi)部的聯(lián)系。在一個實(shí)體集內(nèi)部也存在著一對一、一對多和多對多的聯(lián)系。
3.數(shù)據(jù)模型
它分為邏輯數(shù)據(jù)模型和物理數(shù)據(jù)模型兩類。
邏輯數(shù)據(jù)模型:是用戶通過數(shù)據(jù)庫管理系統(tǒng)看到的現(xiàn)實(shí)世界,它描述了數(shù)據(jù)庫數(shù)據(jù)的整體結(jié)構(gòu)。邏輯模型通常由數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和數(shù)據(jù)完整性約束三部分概念組成。數(shù)據(jù)結(jié)構(gòu)是對系統(tǒng)靜態(tài)特性的描述,人們一般以數(shù)據(jù)結(jié)構(gòu)的類型來命名數(shù)據(jù)模型,如層次模型、網(wǎng)狀模型、關(guān)系模型、面向?qū)ο竽P偷取?BR> 物理數(shù)據(jù)模型:是用來描述數(shù)據(jù)的物理存儲結(jié)構(gòu)和存儲方法的。它不但受數(shù)據(jù)庫管理系統(tǒng)控制,而且與計(jì)算機(jī)存儲器、操作系統(tǒng)密切相關(guān)。
(l)層次模型。層次數(shù)據(jù)庫的特點(diǎn)是實(shí)體之間按層次關(guān)系部定義。實(shí)體用記錄(類型) 表示,實(shí)體的屬性對應(yīng)記錄的數(shù)據(jù)項(xiàng);實(shí)體之間的聯(lián)系用有向連線表示。
層次模型以每個實(shí)體為結(jié)點(diǎn),上層結(jié)點(diǎn)叫做父結(jié)點(diǎn),下層結(jié)點(diǎn)叫做子結(jié)點(diǎn)。層次模型像一棵倒置的樹,最上層的結(jié)點(diǎn)沒有雙親,稱為根結(jié)點(diǎn);最下層的結(jié)點(diǎn)沒有子女,稱為葉結(jié)點(diǎn)。所以層次模型是一種以記錄類型為結(jié)點(diǎn)的有向樹結(jié)構(gòu)。
(2)網(wǎng)狀模型。由于層次模型還不能很好地表達(dá)實(shí)體間的復(fù)雜關(guān)系(多對多聯(lián)系) ,于是又產(chǎn)生了網(wǎng)狀模型,它很好地解決了實(shí)體間復(fù)雜關(guān)系的表達(dá)問題,但是它也有致命的弱點(diǎn),即當(dāng)需求擴(kuò)展時,對原有數(shù)據(jù)結(jié)構(gòu)及應(yīng)用程序的修改會產(chǎn)生嚴(yán)重的后果。
(3)關(guān)系模型。關(guān)系模型以人們經(jīng)常使用的表格形式作為基本的存儲結(jié)構(gòu),通過相同關(guān)鍵字段來實(shí)現(xiàn)表格間的數(shù)據(jù)聯(lián)系。
(4)面向?qū)ο竽P汀2煌趯哟文P?、網(wǎng)狀模型、關(guān)系模型這些傳統(tǒng)的數(shù)據(jù)模型,面向?qū)ο髷?shù)據(jù)模型是非傳統(tǒng)的數(shù)據(jù)模型。將面向?qū)ο蟪绦蛟O(shè)計(jì)方法與數(shù)據(jù)庫技術(shù)相結(jié)合就產(chǎn)生了面向?qū)ο髷?shù)據(jù)庫系統(tǒng)。
2.3.3 關(guān)系模型與關(guān)系數(shù)據(jù)庫
1.關(guān)系模型
關(guān)系模型是一種新的數(shù)據(jù)模型。它建立在集合論和謂詞演算公式的基礎(chǔ)上。它提供的邏輯結(jié)構(gòu)簡單,數(shù)據(jù)獨(dú)立性強(qiáng),存取具有對稱性、操縱靈活。
在數(shù)據(jù)庫中的數(shù)據(jù)結(jié)構(gòu)如果依照關(guān)系模型定義,就是關(guān)系數(shù)據(jù)庫系統(tǒng)。關(guān)系數(shù)據(jù)庫系統(tǒng)由許多不同的關(guān)系構(gòu)成,其中每個關(guān)系就是一個實(shí)體,可以用一張二維表表示。
關(guān)系二維表中的術(shù)語解釋如下:
關(guān)系(Relation):一張二維表對應(yīng)一個關(guān)系。
屬性(Attribute):表中每一列叫做一個屬性,屬性有名和值的區(qū)別。
元組(Topl):由屬性值組成的每一行叫做一個元組。
框架(rramework):由屬性名組成的表頭稱為框架(關(guān)系型)。
分量:表中的每一個屬性值。
域(Domain):每個屬性的取值范圍。
候選碼(Candidate Key):可以惟一確定的一個元組的屬性或?qū)傩越M(可簡稱碼)。
主碼(Primary Key):一個關(guān)系中往往會有多個候選碼,可以指定一個為主碼。
主屬性(Primary Attribute):可以作為候選碼的屬性也叫主屬性。
非主屬性(Non-key Attribute):不能作為候選碼的屬性叫做非主屬性。
關(guān)系模式:對關(guān)系的描述稱為關(guān)系模式,常常記做:
關(guān)系名(屬性1,屬性2,屬性3,……,屬性n)
在關(guān)系模型中,不但實(shí)體用關(guān)系表示,而且實(shí)體之間的聯(lián)系也用關(guān)系來表示。
關(guān)系模型要求關(guān)系必須是規(guī)范化的,即要求每個關(guān)系必須滿足一定的條件,其中最基本的一條就是,關(guān)系中每個分量必須是不可再分的基本項(xiàng)。
作為一個關(guān)系模型的基本約束條件,起碼必須具備以下幾條:
表格中每一數(shù)據(jù)項(xiàng)不可再分,是基本項(xiàng)。
每一列數(shù)據(jù)有相同的類型,叫做屬性。各列都有惟一的屬性名和不同的屬性值,列數(shù)可根據(jù)需要而設(shè)定。
每列的順序是任意的。
每一行數(shù)據(jù)是一個實(shí)體諸多屬性值的集合,叫做元組。一個表格中不允許有完全相同的行出現(xiàn)。
各行順序可以是任意的。
2.關(guān)系操作
關(guān)系數(shù)據(jù)模型的理論基礎(chǔ)是集合論,每一個關(guān)系就是一個笛卡爾積的子集。
(1)傳統(tǒng)集合運(yùn)算。傳統(tǒng)集合運(yùn)算有并、交、差三種。
(2)專門的關(guān)系運(yùn)算。專門的關(guān)系運(yùn)算主要有選擇(篩選)、投影和連接三種。選擇運(yùn)算是對關(guān)系表中元組(行) 的操作,操作結(jié)果是找出滿足條件的元組。其中,
投影運(yùn)算是對關(guān)系表中屬性(列) 的操作,操作結(jié)果是找出關(guān)系中指定屬性全部值的子集。
選擇運(yùn)算和投影運(yùn)算可以同時用一條命令來實(shí)現(xiàn)。
連接運(yùn)算是對兩個關(guān)系的運(yùn)算,操作結(jié)果是找出滿足連接條件的所有元組,并且拼接成一個新的關(guān)系。完善的關(guān)系數(shù)據(jù)庫管理系統(tǒng)總是以數(shù)據(jù)操縱語言及結(jié)構(gòu)化查詢語言(SQL),來實(shí)現(xiàn)各種關(guān)系運(yùn)算。
2.3.4 Vsual Foxpr數(shù)據(jù)庫管理系統(tǒng)
1.VFP的基本概念
(l)數(shù)據(jù)表。數(shù)據(jù)表簡稱為表,是VFP中最重要的操作對象。一個表就是一個關(guān)系,它總是以文件的形式存放在計(jì)算機(jī)的外存儲器中。表文件的存取名稱就是關(guān)系名,文件的擴(kuò)展名是DBF.
(2)數(shù)據(jù)庫。在VFP中一張二維表稱為一個數(shù)據(jù)表(或者簡稱表)。在關(guān)系數(shù)據(jù)庫中,可以包含若干個表(以及視圖) .數(shù)據(jù)庫也可作為一個文件存放在計(jì)算機(jī)外存儲器中,其擴(kuò)展名是DBC.
(3)索引。索引實(shí)際上是對數(shù)據(jù)表的排序,但是它不改變數(shù)據(jù)表中數(shù)據(jù)的物理順序,而是另外建立一個索引對應(yīng)列表。
(4)關(guān)鍵字。關(guān)系中的碼在數(shù)據(jù)表中一般叫做關(guān)鍵字,主碼叫做主關(guān)鍵字。因?yàn)樵跀?shù)據(jù)表中,屬性叫做字段,所以關(guān)鍵字就是能夠惟一標(biāo)識一條記錄的字段或字段組合。如果一個字段不能成為當(dāng)前表的關(guān)鍵字,但卻是另一個數(shù)據(jù)表的關(guān)鍵字,那么這個字段就稱為外來關(guān)鍵字。
(5)視圖。視圖是一種特殊類型的表,它往往由一個或多個表(或視圖) 中的部分字段或部分記錄組成。但是視圖并不是一個完整的數(shù)據(jù)集合,只是在數(shù)據(jù)庫中存放了相應(yīng)的關(guān)系。
(6)存儲過程。存儲過程實(shí)際上是封裝在數(shù)據(jù)庫中的一個命令(程序) 文件。其中可以包含系統(tǒng)為實(shí)現(xiàn)數(shù)據(jù)庫中數(shù)據(jù)的保護(hù)、安全、鏈接、查詢、視圖及關(guān)聯(lián)等功能,而自動或人為設(shè)計(jì)的若干程序過程段及函數(shù)等。