數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式結(jié)構(gòu)是指數(shù)據(jù)庫(kù)系統(tǒng)由外模式、模式和內(nèi)模式三級(jí)構(gòu)成。模式也稱邏輯模式,是所有用戶的公共數(shù)據(jù)視圖;外模式也稱用戶模式,是數(shù)據(jù)庫(kù)用戶的數(shù)據(jù)視圖,是與某應(yīng)用有關(guān)的數(shù)據(jù)的邏輯表示;內(nèi)模式也稱存儲(chǔ)模式是數(shù)據(jù)在數(shù)據(jù)庫(kù)內(nèi)部的組織方式。
本教程操作環(huán)境:windows7系統(tǒng)、mysql8版本、Dell G3電腦。
數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式結(jié)構(gòu):
數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式結(jié)構(gòu)是指數(shù)據(jù)庫(kù)系統(tǒng)是由外模式、模式和內(nèi)模式三級(jí)構(gòu)成,如圖:
①模式(schema):
模式也稱邏輯模式,是數(shù)據(jù)庫(kù)中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是所有用戶的公共數(shù)據(jù)視圖。它是數(shù)據(jù)庫(kù)系統(tǒng)模式結(jié)構(gòu)的中間層,既不涉及數(shù)據(jù)的物理存儲(chǔ)細(xì)節(jié),右與具體的應(yīng)用程序、所使用的應(yīng)用開發(fā)工具及高級(jí)程序設(shè)計(jì)語言無關(guān)。
模式實(shí)際上是數(shù)據(jù)庫(kù)數(shù)據(jù)在邏輯上的視圖。一個(gè)數(shù)據(jù)庫(kù)只有一個(gè)模式。數(shù)據(jù)庫(kù)模式以某一種數(shù)據(jù)模型為基礎(chǔ),同意綜合地考慮了所有用戶的需求,并將這些需求有機(jī)地結(jié)合成一個(gè)邏輯整體。定義模式時(shí)不僅要定義數(shù)據(jù)的邏輯結(jié)構(gòu),例如數(shù)據(jù)記錄由哪些數(shù)據(jù)項(xiàng)構(gòu)成,數(shù)據(jù)項(xiàng)的名字、類型、取值范圍等;而且要定義數(shù)據(jù)之間的聯(lián)系,定義與數(shù)據(jù)有關(guān)的安全性、完整性要求。
數(shù)據(jù)庫(kù)管理系統(tǒng)提供模式數(shù)據(jù)定義語言(模式DDL)來嚴(yán)格地定義模式。
②外模式(external schema):
外模式也稱子模式(subschema)或用戶模式,它是數(shù)據(jù)庫(kù)用固話(包括應(yīng)用程序員和最終用戶)能夠看見和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)庫(kù)用戶的數(shù)據(jù)視圖,是與某一應(yīng)用有關(guān)的數(shù)據(jù)的邏輯表示。
外模式通常是模式的子集。一個(gè)數(shù)據(jù)庫(kù)可以有多個(gè)外模式。由于它是各個(gè)用戶的數(shù)據(jù)視圖,如果不同的用戶在應(yīng)用需求、看待數(shù)據(jù)的方式、對(duì)數(shù)據(jù)保密的要求等方面存在差異,則其外模式描述就是不同的。即使對(duì)模式中同一數(shù)據(jù),在外模式的結(jié)構(gòu)、類型、長(zhǎng)度、保密等級(jí)等都可以不同。另一方面,同一外模式也可以為某一用戶的多個(gè)應(yīng)用系統(tǒng)所使用,但一個(gè)應(yīng)用程序只能使用一個(gè)外模式。
外模式是保證數(shù)據(jù)庫(kù)安全性的一個(gè)有力措施。每個(gè)用戶只能看見和訪問所對(duì)應(yīng)的外模式中的數(shù)據(jù),數(shù)據(jù)庫(kù)中的其余數(shù)據(jù)是不可見的。
③內(nèi)模式(internal schema):
內(nèi)模式也稱存儲(chǔ)模式(storage schema),一個(gè)數(shù)據(jù)庫(kù)只有一個(gè)內(nèi)模式。它是數(shù)據(jù)物理存儲(chǔ)和存儲(chǔ)方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫(kù)內(nèi)部的組織方式。例如,記錄的存儲(chǔ)方式是堆存儲(chǔ)還是按照某個(gè)(些)屬性值的升(降)序存儲(chǔ),或按照屬性值聚簇(cluster)存儲(chǔ);索引按照什么方式組織,是B+樹索引還是hash索引;數(shù)據(jù)是否壓縮存儲(chǔ),是否加密;數(shù)據(jù)的存儲(chǔ)記錄結(jié)構(gòu)有何規(guī)定,如定長(zhǎng)結(jié)構(gòu)還是變長(zhǎng)結(jié)構(gòu),一個(gè)記錄不能跨物理頁(yè)存儲(chǔ);等等。
(推薦教程:mysql視頻教程)