數(shù)據(jù)庫三級模式/兩級映像

轉(zhuǎn)自:https://blog.csdn.net/u010297957/article/details/50846279

考察數(shù)據(jù)庫的結(jié)構(gòu)可以有多種不同的層次或角度兴想。(這里說的數(shù)據(jù)庫不局限于關(guān)系型數(shù)據(jù)庫)
1. 如果從DBMS角度來看扔茅,數(shù)據(jù)庫通常采用三級模式結(jié)構(gòu),也就是說DBMS內(nèi)部的系統(tǒng)結(jié)構(gòu)是三級模式結(jié)構(gòu)
2. 如果從數(shù)據(jù)庫最終用戶角度來看裕寨,數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu)可分為:單用戶結(jié)構(gòu)、主從式結(jié)構(gòu)派继、分布式結(jié)構(gòu)宾袜、客戶/服務(wù)器、瀏覽器/應(yīng)用服務(wù)器/數(shù)據(jù)庫服務(wù)器多層結(jié)構(gòu)等驾窟。這是數(shù)據(jù)庫系統(tǒng)外部體系結(jié)構(gòu)庆猫。

1. 數(shù)據(jù)庫系統(tǒng)的模式(Schema)

數(shù)據(jù)模型中有“型”和“值”的概念,如:學(xué)生(學(xué)號绅络,性別月培,班級)是“型”,而:張三(20160310001恩急,1杉畜,3年2班)是“值”。

模式(Schema)是數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述衷恭,它僅僅描述型此叠,而并不包括值。模式的值稱為模式的一個實例(Instance)匾荆,同一個模式可以有多個實例拌蜘。

雖然實際的DBMS系統(tǒng)種類很多杆烁,他們支持的數(shù)據(jù)模式不盡相同,使用不同的語言简卧,建立在不同的OS上兔魂,數(shù)據(jù)的存儲結(jié)構(gòu)也各不相同,但他們在體系結(jié)構(gòu)上通常具有相同的特征举娩,即采用三級模式結(jié)構(gòu)并提供兩級影像功能

2. 三級模式

數(shù)據(jù)庫的三級模式結(jié)構(gòu)是指:數(shù)據(jù)庫系統(tǒng)是由外模式析校、模式和內(nèi)模式三級構(gòu)成,如圖:

圖1:數(shù)據(jù)庫三級模式

2.1 模式(Schema)

模式也稱為:邏輯模式铜涉,它是DB中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述智玻,是所有用戶的公共數(shù)據(jù)視圖。模式層是數(shù)據(jù)庫模式結(jié)構(gòu)的中間層芙代,既不涉及到數(shù)據(jù)的物理存儲細節(jié)和硬件環(huán)境吊奢,也與具體的應(yīng)用程序、應(yīng)用開發(fā)工具以及高級程序設(shè)計語言無關(guān)(C纹烹、C++页滚、JAVA等)。

模式就是數(shù)據(jù)庫數(shù)據(jù)在邏輯上的視圖铺呵,且一個數(shù)據(jù)庫只有一個模式裹驰。實際工作中,模式就等同于程序員創(chuàng)建一個具體的數(shù)據(jù)庫的全部操作片挂,如:這是一個MySQL數(shù)據(jù)庫幻林,有2張表,每個表的名字音念,屬性的名字沪饺、類型、取值范圍闷愤,主鍵随闽,外鍵,索引肝谭,其他完整性約束等等。

DBMS提供模式描述語言(模式DDL)來嚴(yán)格地定義模式蛾扇。

2.2 外模式

外模式也稱為:子模式(subschema)/用戶模式攘烛,它是數(shù)據(jù)庫用戶(應(yīng)用程序員、最終用戶)能夠看到的使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述镀首,是數(shù)據(jù)庫的數(shù)據(jù)視圖坟漱,是與某一個應(yīng)用有關(guān)的數(shù)據(jù)的邏輯表示。

外模式通常是模式的子集更哄。一個數(shù)據(jù)庫可以有多個外模式芋齿。同一個外模式可以為某一用戶的多個應(yīng)用系統(tǒng)所使用腥寇,但一個應(yīng)用系統(tǒng)只能使用一個外模式。

外模式是保證數(shù)據(jù)庫安全性的一個有力措施觅捆。每個用戶只能看見和訪問所對應(yīng)的外模式中的數(shù)據(jù)赦役,數(shù)據(jù)庫中的其余數(shù)據(jù)是不可見的。

DBMS提供子模式描述語言(子模式DDL)來嚴(yán)格地定義子模式栅炒。

2.3 內(nèi)模式

內(nèi)模式也稱為:存儲模式(Storage schema)掂摔,一個數(shù)據(jù)庫只有一個內(nèi)模式。它是數(shù)據(jù)庫物理結(jié)構(gòu)和存儲方式的描述赢赊,是數(shù)據(jù)在數(shù)據(jù)庫內(nèi)部的表示方式乙漓。如:記錄的存儲方式是堆存儲,還是按照某些屬性值的升(降)存儲释移,還是按照屬性值聚簇(cluster)存儲叭披;索引按照什么方式組織,是B+樹索引玩讳,還是hash索引等等涩蜘。

DBMS提供內(nèi)模式描述語言(內(nèi)模式DDL/存儲模式DDL)來嚴(yán)格定義內(nèi)模式。

三級模式在關(guān)系型數(shù)據(jù)庫的對應(yīng)實現(xiàn)

三級模式是數(shù)據(jù)庫系統(tǒng)通常采用的結(jié)構(gòu)锋边,但這并不意味著你必須按照三級模式結(jié)構(gòu)設(shè)想的那樣來編程皱坛。這是因為,各種類型數(shù)據(jù)庫(層次豆巨、網(wǎng)狀剩辟、關(guān)系)和各個具體數(shù)據(jù)庫對三級模式的提供的支持是不完善和不一致的。

可以看到三級模式都是DDL(Data Definition language)來定義的往扔,那么在RDBMS中三種模式的定義都包含在可以使用的DDL語句中:

外模式(DDL中的Subschema DDL部分)

在RDBMS中就只有一個視圖(View)來支持

當(dāng)然視圖提供的也只是一定程度的數(shù)據(jù)邏輯獨立性贩猎。因為對于視圖的更新是有條件的,因此當(dāng)應(yīng)用程序有需要修改數(shù)據(jù)的語句時萍膛,仍然不得不去操作基本表吭服。所以如果基本表改變了,那么應(yīng)用程序還是要變…

模式(DDL中的Schema DDL部分)

模式就是基本表蝗罗,但我覺得除了視圖和索引組織方式等等之外都是模式的范圍艇棕。表、字段串塑、索引沼琉、存儲過程、觸發(fā)器等等

內(nèi)模式(DDL中的Storage DDL部分)

內(nèi)模式是存儲文件桩匪,但存儲文件的存儲方式和結(jié)構(gòu)可以被定義打瘪,這一部分能操作的情況比較少,舉一個例子如MySQL中創(chuàng)建table并且制定使用MEMORY引擎、使用hash索引

CREATE TABLE testhash (?

? ? fname VARCHAR(50) NOT NULL,?

? ? lname VARCHAR(50) NOT NULL,?

? ? KEY USING HASH(fname)?

) ENGINE=MEMORY;

3. 二級映像功能和數(shù)據(jù)的獨立性

數(shù)據(jù)庫的3級模式是對數(shù)據(jù)的3個抽象級別闺骚。它使得用戶能夠邏輯地抽象地處理數(shù)據(jù)彩扔,而不必再去關(guān)心數(shù)據(jù)在計算機中的具體表示方式與存儲方式。實際上僻爽,為了能夠?qū)崿F(xiàn)在這3個抽象層次之間的聯(lián)系和轉(zhuǎn)換虫碉,DBMS在這三級模式之間設(shè)計了兩層映像:

外模式/模式映像

模式/內(nèi)模式映像

這兩層映像保證了數(shù)據(jù)庫中的數(shù)據(jù)能夠具有較高的邏輯獨立性和物理獨立性。

3.1 外模式/模式映像

由上可知:一個DB只有一個模式进泼,但可以有多個外模式蔗衡。

所以,對于每一個外模式乳绕,數(shù)據(jù)庫系統(tǒng)都有一個外模式/模式映像绞惦,它定義了這個外模式與模式的對應(yīng)關(guān)系。外模式的描述中通常包含了這些映像的定義洋措。

當(dāng)模式改變時(增加新的關(guān)系济蝉、新的屬性、改變屬性的數(shù)據(jù)類型等)菠发,由數(shù)據(jù)庫管理員對各個外模式/模式映像作相應(yīng)的改變王滤,可以使得外模式保持不變。而又由于應(yīng)用程序應(yīng)該是依據(jù)外模式編寫的滓鸠,從而應(yīng)用程序不必修改雁乡,這就保證了數(shù)據(jù)與程序的邏輯獨立性。

總結(jié):外模式/模式映像保證了當(dāng)模式改變時糜俗,外模式不用變 — 邏輯獨立性踱稍。

3.2 模式/內(nèi)模式映像

由上可知:一個DB只有一個模式,也只有一個內(nèi)模式悠抹,所有模式/內(nèi)模式映像是唯一的珠月,它定義了數(shù)據(jù)全局邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)之間的對應(yīng)關(guān)系。

當(dāng)數(shù)據(jù)庫的存儲結(jié)構(gòu)改變時(例如選用了另一個存儲結(jié)構(gòu))楔敌,由數(shù)據(jù)庫管理員對模式/內(nèi)模式映像作出相應(yīng)的改變啤挎,可以使得模式保持不變,從而應(yīng)用程序也不必改變卵凑。這就保證了數(shù)據(jù)和程序的物理獨立性庆聘。

總結(jié):模式/內(nèi)模式映像保證了當(dāng)內(nèi)模式改變時,模式不用變 — 物理獨立性勺卢。

TIPS

兩級映像只是在系統(tǒng)設(shè)計層面上掏觉,在每一個模式上保證了它底層模式(地基)的穩(wěn)定性。就如描述的那樣:模式變了外模式不用變值漫,內(nèi)模式變了模式不用變。

但是织盼,一定要記住兩級映像僅僅是也只能是在系統(tǒng)理論設(shè)計層面上的保證杨何,如果你應(yīng)用需求本身發(fā)生變化了那可能什么都需要改變酱塔。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市危虱,隨后出現(xiàn)的幾起案子羊娃,更是在濱河造成了極大的恐慌,老刑警劉巖埃跷,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蕊玷,死亡現(xiàn)場離奇詭異,居然都是意外死亡弥雹,警方通過查閱死者的電腦和手機垃帅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來剪勿,“玉大人贸诚,你說我怎么就攤上這事〔藜” “怎么了酱固?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長头朱。 經(jīng)常有香客問我运悲,道長,這世上最難降的妖魔是什么项钮? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任班眯,我火速辦了婚禮,結(jié)果婚禮上寄纵,老公的妹妹穿的比我還像新娘鳖敷。我一直安慰自己,他們只是感情好程拭,可當(dāng)我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布定踱。 她就那樣靜靜地躺著,像睡著了一般恃鞋。 火紅的嫁衣襯著肌膚如雪崖媚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天恤浪,我揣著相機與錄音畅哑,去河邊找鬼。 笑死水由,一個胖子當(dāng)著我的面吹牛荠呐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼泥张,長吁一口氣:“原來是場噩夢啊……” “哼呵恢!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起媚创,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤渗钉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后钞钙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鳄橘,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年芒炼,在試婚紗的時候發(fā)現(xiàn)自己被綠了瘫怜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡焕议,死狀恐怖宝磨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情盅安,我是刑警寧澤唤锉,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站别瞭,受9級特大地震影響窿祥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蝙寨,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一晒衩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧墙歪,春花似錦听系、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽袁勺。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間撒犀,已是汗流浹背钦勘。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工怎炊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留混移,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓冻璃,卻偏偏與公主長得像响谓,于是被迫代替她去往敵國和親损合。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容