




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)庫系統(tǒng)與數(shù)據(jù)模型
本章目的在于使讀者對數(shù)據(jù)庫系統(tǒng)的基本知識能有一個(gè)較為全面的熟悉,為今后的學(xué)
習(xí)與工作打下基礎(chǔ)。本章重點(diǎn)介紹了有關(guān)數(shù)據(jù)庫結(jié)構(gòu)與數(shù)據(jù)庫系統(tǒng)組織的基本知識與基本
概念,與常見的三種類型的數(shù)據(jù)庫系統(tǒng)的特點(diǎn)。重點(diǎn)介紹關(guān)系數(shù)據(jù)庫的有關(guān)知識。
1.1數(shù)據(jù)管理技術(shù)進(jìn)展史
隨著生產(chǎn)力的不斷進(jìn)展,社會(huì)的不斷進(jìn)步,人類對信息的依靠程度也在不斷地增加。
數(shù)據(jù)作為表達(dá)信息的一種量化符號,正在成為人們處理信息時(shí)重要的操作對象。所謂數(shù)據(jù)
處理就是對數(shù)據(jù)的收集、整理、存儲、分類、排序、檢索、保護(hù)、加工、統(tǒng)計(jì)與傳輸?shù)纫?/p>
系列工作全部過程的概述。數(shù)據(jù)處理的目的就是使我們能夠從浩瀚的信息數(shù)據(jù)海洋中,提
取出有用的數(shù)據(jù)信息,作為我們工作、生活等各方面的決策根據(jù)。數(shù)據(jù)管理則是指對數(shù)據(jù)
的組織、編碼、分類、存儲、檢索與保護(hù),它是數(shù)據(jù)處理的一個(gè)重要內(nèi)容中心。數(shù)據(jù)處理
工作由來以久,早在1880年美國進(jìn)行人口普查統(tǒng)計(jì)時(shí),就已使用穿孔卡片來存儲人口普查
數(shù)據(jù),并使用機(jī)械設(shè)備來完成對這些普查數(shù)據(jù)所進(jìn)行的處理工作。電子計(jì)算機(jī)的出現(xiàn)與其
后其硬件、軟件的迅速進(jìn)展,加之?dāng)?shù)據(jù)庫理論與技術(shù)的進(jìn)展,為數(shù)據(jù)管理進(jìn)入一個(gè)革命性
階段提供有力的支持。根據(jù)數(shù)據(jù)與應(yīng)用程序相互依靠關(guān)系、數(shù)據(jù)共享與數(shù)據(jù)的操作方式,
數(shù)據(jù)管理的進(jìn)展能夠分為三個(gè)具有代表性的階段,即人工管理階段、文件管理階段與數(shù)據(jù)
庫管理階段。
[1]人工管理階段
這一階段發(fā)生于六十年代往常,由于當(dāng)時(shí)計(jì)算機(jī)硬件與軟件進(jìn)展才剛剛起步,數(shù)據(jù)管
理中全部工作,都務(wù)必要由應(yīng)用程序員自己設(shè)計(jì)程序完成去完成。由于需要與計(jì)算機(jī)硬件
與各外部存儲設(shè)備與輸入輸出設(shè)備直接打交道,程序員們常常需要編制大量重復(fù)的數(shù)據(jù)管
理基本程序。數(shù)據(jù)的邏輯組織與它的物理組織基本上是相同的,因此當(dāng)數(shù)據(jù)的邏輯組織、
物理組織或者存儲設(shè)備發(fā)生變化時(shí),進(jìn)行數(shù)據(jù)管理工作的許多應(yīng)用程序就務(wù)必要進(jìn)行重新
編制。這樣就給數(shù)據(jù)管理的保護(hù)工作帶來許多困難。同時(shí)由于一組數(shù)據(jù)常常只對應(yīng)于一種
應(yīng)用程序,因此很難實(shí)現(xiàn)多個(gè)不一致應(yīng)用程序間的數(shù)據(jù)資源共享。存在著大量重復(fù)數(shù)據(jù),
信息資源浪費(fèi)嚴(yán)重。
[2]文件管理階段
這一階段發(fā)生于六十年代,由于當(dāng)時(shí)計(jì)算機(jī)硬件的進(jìn)展,與系統(tǒng)軟件特別是文件系統(tǒng)
的出現(xiàn)與進(jìn)展,人們開始利用文件系統(tǒng)來幫助完成數(shù)據(jù)管理工作,具體講就是:數(shù)據(jù)以多
種組織結(jié)構(gòu)(如順序文件組織、索引文件文件組織與直接存取文件組織等)的文件形式儲
存在外部存儲設(shè)備上,用戶通過文件系統(tǒng)而無需直接與外部設(shè)備打交道,以此來完成數(shù)據(jù)
的修改、插入、刪除、檢索等管理操作;使用這種管理方式,不僅減輕進(jìn)行數(shù)據(jù)管理的應(yīng)
用程序工作量,更重要地是,當(dāng)數(shù)據(jù)的物理組織或者存儲設(shè)備發(fā)生變化時(shí),數(shù)據(jù)的邏輯組
織能夠不受任何影響,從而保證了基于數(shù)據(jù)邏輯組織所編制的應(yīng)用程序也能夠不受硬件設(shè)
備變化的影響。這樣就使得程序與數(shù)據(jù)之間具有了一定的相互獨(dú)立性。
但由于數(shù)據(jù)文件的邏輯結(jié)構(gòu)完全是根據(jù)應(yīng)用程序的具體要求而設(shè)計(jì),它的管理與保護(hù)
完全是由應(yīng)用程序本身來完成,因此數(shù)據(jù)文件的邏輯結(jié)構(gòu)與應(yīng)用程序密切有關(guān),當(dāng)數(shù)據(jù)的
邏輯結(jié)構(gòu)需要修改時(shí),應(yīng)用程序也就不可避免地需要進(jìn)行修改;同樣當(dāng)應(yīng)用程序需要進(jìn)行
變動(dòng)時(shí),常常又會(huì)要求數(shù)據(jù)的邏輯結(jié)構(gòu)進(jìn)行相應(yīng)的變動(dòng)。在這種情況下,數(shù)據(jù)管理中的保
護(hù)工作量也是較大的。更要緊的是由于使用文件的形式來進(jìn)行數(shù)據(jù)管理工作,常常需要將
一個(gè)完整的、相互關(guān)聯(lián)的數(shù)據(jù)集合,人為地分割成若干相互獨(dú)立的文件,以便通過基于文
件系統(tǒng)的編程來實(shí)現(xiàn)來對它們的管理操作。這樣做同樣會(huì)導(dǎo)致數(shù)據(jù)的過多冗余與增加數(shù)據(jù)
保護(hù)工作的復(fù)雜性。比如人事部門、教務(wù)部門與醫(yī)務(wù)部門對學(xué)生數(shù)據(jù)信息的管理,這三個(gè)
部門中有許多數(shù)據(jù)是相同的,如姓名、年齡、性別等,由因此各部門均是根據(jù)自己的要
求,建立各自的數(shù)據(jù)文件與應(yīng)用程序,這樣不僅造成了大量的相同數(shù)據(jù)重復(fù)存儲,而且在
修改時(shí),常常需要同時(shí)修改三個(gè)文件中的數(shù)據(jù)項(xiàng),如修改學(xué)生年齡,此外若需要增加一個(gè)
描述學(xué)生的數(shù)據(jù)項(xiàng),如通訊地址,那么所有的應(yīng)用程序就務(wù)必都要進(jìn)行相應(yīng)的修改。除此
之外,使用文件系統(tǒng)來幫助進(jìn)行數(shù)據(jù)管理工作,在數(shù)據(jù)的安全與保密等方面,也難以采取
有效的措施加以操縱。
[3]數(shù)據(jù)庫管理階段
1在不斷改進(jìn)與完善文件系統(tǒng)的過程中,從六十年代后期開始,人們逐步研究與進(jìn)展了
以數(shù)據(jù)的統(tǒng)一管理與數(shù)據(jù)共享為要緊特征的數(shù)據(jù)庫系統(tǒng)。即在數(shù)據(jù)在統(tǒng)一操縱之下,為盡
可能多的應(yīng)用與用戶服務(wù),數(shù)據(jù)庫中的數(shù)據(jù)組織結(jié)構(gòu)與數(shù)據(jù)庫的應(yīng)用程序相互間有較大的
相對獨(dú)立性等。與以往前數(shù)據(jù)管理方法與技術(shù)相比,利用數(shù)據(jù)庫系統(tǒng)來進(jìn)行數(shù)據(jù)管理工作
具有下列三個(gè)顯著特點(diǎn):
(1)從整體角度組織數(shù)據(jù)
數(shù)據(jù)庫系統(tǒng)與文件系統(tǒng)的最大差別就在于前者在描述數(shù)據(jù)時(shí),不僅僅是對數(shù)據(jù)本身進(jìn)
行描述,而且對數(shù)據(jù)之間的相互聯(lián)系也進(jìn)行了描述。因此在組織數(shù)據(jù)時(shí)是從一個(gè)相對較高
的整體角度進(jìn)行的,而不是僅僅局限于個(gè)別的數(shù)據(jù)管理應(yīng)用場合。如前面提到的人事部
門、教務(wù)部門與醫(yī)務(wù)部門對學(xué)生數(shù)據(jù)的管理工作,在利用數(shù)據(jù)庫系統(tǒng)來進(jìn)行管理時(shí),若從
整體考慮,其數(shù)據(jù)的組織結(jié)構(gòu)如圖1.1所示。
學(xué)生信息數(shù)據(jù)公用部分
人事部門學(xué)生數(shù)據(jù)專用部分教務(wù)部門學(xué)生數(shù)據(jù)專用部分醫(yī)務(wù)部門學(xué)生數(shù)據(jù)專用部分
圖1.1學(xué)生信息數(shù)據(jù)組織結(jié)構(gòu)
使用這種數(shù)據(jù)組織不僅能夠有效地解決了文件系統(tǒng)的數(shù)據(jù)組織中所存在的數(shù)據(jù)冗余與
數(shù)據(jù)一致性保護(hù)的問題。更要緊的是它能夠使人們從更高的全局角度出發(fā),合理地組織數(shù)
據(jù),從而有利于更大范圍內(nèi)的數(shù)據(jù)資源的共享,提高信息的使用效率。
(2)數(shù)據(jù)可為多個(gè)應(yīng)用服務(wù)
正由于數(shù)據(jù)庫中的數(shù)據(jù)是從整體角度進(jìn)行組織的,因此,數(shù)據(jù)庫中所存儲的數(shù)據(jù)往往
就不僅局限于只為一二個(gè)應(yīng)用提供服務(wù),而是在更大范圍內(nèi)為僅可能多的應(yīng)用提供服務(wù),
如圖1」所示的一個(gè)數(shù)據(jù)庫中所存儲的數(shù)據(jù),就至少能夠?yàn)槿齻€(gè)部門的應(yīng)用提供服務(wù)。而實(shí)
際上如圖1.1所示的數(shù)據(jù)組織結(jié)構(gòu)僅僅只是一個(gè)學(xué)校數(shù)據(jù)管理數(shù)據(jù)庫中的一小部分。與此同
時(shí)由于數(shù)據(jù)庫系統(tǒng)是以多級(層)組織模式對數(shù)據(jù)進(jìn)行組織的,各級(層)模式之間的映
射是由數(shù)據(jù)庫系統(tǒng)自己完成的,這就使得數(shù)據(jù)與程序之間能夠具有較高的物理與邏輯相對
獨(dú)立性。正是這一點(diǎn),給數(shù)據(jù)庫中的數(shù)據(jù)為多個(gè)應(yīng)用提供服務(wù)奠定了基礎(chǔ)。事實(shí)上數(shù)據(jù)庫
的規(guī)模越大,所能夠提供的應(yīng)用服務(wù)就能夠越多,也就越能表達(dá)出數(shù)據(jù)庫在數(shù)據(jù)管理中的
優(yōu)勢。當(dāng)然這只是相對而言,隨著數(shù)據(jù)庫中數(shù)據(jù)規(guī)模的擴(kuò)大,數(shù)據(jù)庫應(yīng)用系統(tǒng)的制作與保
護(hù)的工作也在迅速增加。
(3)有一個(gè)數(shù)據(jù)庫系統(tǒng)的管理軟件
任何數(shù)據(jù)庫系統(tǒng)都包含一個(gè)管理軟件,即數(shù)據(jù)庫系統(tǒng)的管理軟件,通常又稱之?dāng)?shù)據(jù)庫
管理系統(tǒng),它負(fù)責(zé)統(tǒng)一管理數(shù)據(jù)庫系統(tǒng)中所有數(shù)據(jù)資源,是數(shù)據(jù)庫系統(tǒng)與用戶應(yīng)用之間的
接口,通過它,用戶能夠不必要熟悉過多的計(jì)算機(jī)硬件、軟件與數(shù)據(jù)庫本身許多專業(yè)知
識,更不用去熟悉數(shù)據(jù)庫系統(tǒng)是如何完成數(shù)據(jù)管理工作的具體細(xì)節(jié),如文件如何打開、關(guān)
閉、讀、寫等等,就能夠通過編寫一些較為簡單數(shù)據(jù)庫應(yīng)用程序,很方便地完成在較高級
別邏輯組織基礎(chǔ)上的數(shù)據(jù)管理工作。除此之外,數(shù)據(jù)庫管理系統(tǒng)還負(fù)責(zé)完成在對數(shù)據(jù)庫進(jìn)
行并發(fā)訪問時(shí),保證數(shù)據(jù)一致性的并發(fā)操縱工作;保證數(shù)據(jù)安全性的訪問操縱工作;與在
數(shù)據(jù)庫系統(tǒng)出現(xiàn)故障時(shí),提供保證數(shù)據(jù)一致性與完整性的恢復(fù)機(jī)制等諸多數(shù)據(jù)庫系統(tǒng)本身
的各類管理操縱工作。因此這里也能夠看出,數(shù)據(jù)庫管理系統(tǒng)功能的強(qiáng)弱及其各項(xiàng)性能指
標(biāo)的好壞,是衡量數(shù)據(jù)庫系統(tǒng)質(zhì)量的一個(gè)極其重要的因素。
利用數(shù)據(jù)庫系統(tǒng)進(jìn)行數(shù)據(jù)管理工作,不僅能夠保證數(shù)據(jù)的物理組織結(jié)構(gòu)與存儲設(shè)備與
數(shù)據(jù)庫應(yīng)用程序之間保持相互獨(dú)立性;同時(shí)也能夠保證數(shù)據(jù)的邏輯組織結(jié)構(gòu)與數(shù)據(jù)庫應(yīng)用
程序之間保持最大可能的相互獨(dú)立性,即當(dāng)數(shù)據(jù)的邏輯組織結(jié)構(gòu)發(fā)生變化時(shí),數(shù)據(jù)庫應(yīng)用
程序的變動(dòng)被限制在最小的范圍內(nèi)。由此可大大地減少數(shù)據(jù)庫應(yīng)用程序的開發(fā)與保護(hù)的工
作量。
在數(shù)據(jù)庫管理階段,根據(jù)數(shù)據(jù)庫系統(tǒng)本身所支持的數(shù)據(jù)模型的特點(diǎn)及所使用的相應(yīng)數(shù)
據(jù)庫系統(tǒng)技術(shù),能夠認(rèn)為數(shù)據(jù)庫管理到目前為止已進(jìn)展經(jīng)歷了三代,即層次網(wǎng)狀模型代、
關(guān)系模型代與面向?qū)ο竽P痛?/p>
(1)層次網(wǎng)狀模型代:流行于六十至七十年代,在這一代中的數(shù)據(jù)庫系統(tǒng)所支持的數(shù)
據(jù)模型均是層次模型或者網(wǎng)狀模型。世界上第一個(gè)數(shù)據(jù)庫系統(tǒng)是于1964年由美國通用電氣
公司開發(fā)成功的IDS(IntegratedDataStore),它就是基于網(wǎng)狀模型的數(shù)據(jù)庫系統(tǒng)。IBM公
司于六十年代末推出了第一個(gè)商品化的層次數(shù)據(jù)庫系統(tǒng)IMS(InformationManagement
Sytem),它們的出現(xiàn)與應(yīng)用為數(shù)據(jù)庫技術(shù)的進(jìn)展奠定了基礎(chǔ)。
(2)關(guān)系模型代:流行于七十至八十年代,在這一代中的數(shù)據(jù)庫系統(tǒng)所支持的數(shù)據(jù)的
數(shù)據(jù)模型均是關(guān)系模型。以關(guān)系(表)形式組織數(shù)據(jù)。1970年Codd提出了關(guān)系數(shù)據(jù)模型,
由于其具有嚴(yán)格的數(shù)學(xué)基礎(chǔ),抽象級別較高,且簡單清晰,便于懂得應(yīng)用。到了七十年代
末,出現(xiàn)了很多關(guān)系數(shù)據(jù)庫系統(tǒng),其中具有代表性應(yīng)首推IBM公司推出的SQL/DS與DB2兩
個(gè)商品化關(guān)系數(shù)據(jù)庫系統(tǒng)。進(jìn)行八十年代以后,關(guān)系數(shù)據(jù)庫系統(tǒng)已成為數(shù)據(jù)庫系統(tǒng)進(jìn)展的
主流,幾乎所有新推出的數(shù)據(jù)庫系統(tǒng)產(chǎn)品都是關(guān)系型的,它們中不僅有用于大型機(jī)與小型
機(jī)數(shù)據(jù)庫產(chǎn)品,而且有可用于微機(jī)的數(shù)據(jù)庫產(chǎn)品。市場上開始出現(xiàn)關(guān)系數(shù)據(jù)庫的系列產(chǎn)
品,這其中發(fā)行量較大且在我國用得較多的有Oracle、Sybase、Sysbase、Informix、FoxPro
等。隨著微機(jī)與計(jì)算機(jī)網(wǎng)絡(luò)的廣泛普及與應(yīng)用,分布式數(shù)據(jù)庫系統(tǒng)在八十年代后期,開始
得到很大進(jìn)展。其理論與技術(shù)日趨成熟。目前幾乎所有分布式數(shù)據(jù)庫系統(tǒng)均是關(guān)系型的,
而且?guī)缀跛幸o關(guān)系數(shù)據(jù)庫系統(tǒng)均已被擴(kuò)充為分布式數(shù)據(jù)庫系統(tǒng)。
(3)面向?qū)ο蟠洪_始九十年代,在這一代中的數(shù)據(jù)庫系統(tǒng)支持面向?qū)ο蟮臄?shù)據(jù)模
型。它是數(shù)據(jù)庫技術(shù)與面向?qū)ο蟪绦蛟O(shè)計(jì)方法相結(jié)合的產(chǎn)物。作為新一代數(shù)據(jù)庫系統(tǒng),現(xiàn)
在已有了一些商品化系統(tǒng)。但其具體應(yīng)用尚不多。
1.2數(shù)據(jù)庫系統(tǒng)
本節(jié)要緊介紹有關(guān)數(shù)據(jù)庫結(jié)構(gòu)與數(shù)據(jù)庫系統(tǒng)組織的一些基本知識與概念,使讀者對數(shù)
據(jù)庫系統(tǒng)的內(nèi)涵有一個(gè)較為清晰的認(rèn)識。
1.2.1數(shù)據(jù)庫系統(tǒng)概念
由于數(shù)據(jù)庫系統(tǒng)是一個(gè)由許多基本概念、技術(shù)方法與其應(yīng)用對象所構(gòu)成的復(fù)雜的有機(jī)
整體。很難用一兩句話將其描述清晰。但為了使讀者對它有一個(gè)總體的熟悉,首先這里我
們試著給出一個(gè)關(guān)于數(shù)據(jù)庫系統(tǒng)的定義,即數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)庫是一個(gè)已被規(guī)格化與結(jié)
構(gòu)化且相互關(guān)聯(lián)的數(shù)據(jù)集合,這些數(shù)據(jù)中不存在有害的或者無意義的冗余;數(shù)據(jù)的組織與
存儲結(jié)構(gòu)與使用這些數(shù)據(jù)的程序相互獨(dú)立;數(shù)據(jù)庫中的數(shù)據(jù)可同時(shí)為多個(gè)應(yīng)用服務(wù);數(shù)據(jù)
庫中的數(shù)據(jù)定義、輸入、修改與檢索等所有操作均是按一種公用的且可控的方式進(jìn)行。根
據(jù)這一數(shù)據(jù)庫定義與實(shí)際應(yīng)用的具體數(shù)據(jù)庫系統(tǒng)的情況,我們能夠認(rèn)為一個(gè)數(shù)據(jù)庫系統(tǒng)實(shí)
際上是由三部分內(nèi)容構(gòu)成,它們是數(shù)據(jù)庫、多種應(yīng)用與數(shù)據(jù)庫管理系統(tǒng)。這三部分之間的
相互關(guān)系如圖1.2所示。
(1)數(shù)據(jù)庫:相互關(guān)聯(lián)的且具有最小冗余的數(shù)據(jù)在其中按照一定物理組織結(jié)構(gòu)存放,同時(shí)
從用戶與數(shù)據(jù)庫管理系統(tǒng)角度來看,這些數(shù)據(jù)又是按一定邏輯結(jié)構(gòu)組織的。這種物理組織
結(jié)構(gòu)與邏輯組織結(jié)構(gòu)在最大程度上與用戶所編制的應(yīng)用程序相互獨(dú)立。
(2)多種應(yīng)用:數(shù)據(jù)庫中的數(shù)據(jù),在數(shù)據(jù)庫管理系統(tǒng)的操縱與管理之下,能夠同時(shí)為多種不
一致內(nèi)容的應(yīng)用提供服務(wù),即能夠?yàn)槎鄠€(gè)不一致目的用戶服務(wù),各用戶所操作使用的數(shù)據(jù)
能夠是相互交叉的。用戶的操作方式既能夠按以數(shù)據(jù)輸入/輸出與數(shù)據(jù)保護(hù)為主的數(shù)據(jù)流量
較大的批處理方式進(jìn)行;也能夠按以查詢?yōu)橹鞯臄?shù)據(jù)流量較小的聯(lián)機(jī)處理方式進(jìn)行,必要
時(shí)還能夠通過編程來完成對數(shù)據(jù)庫中數(shù)據(jù)的各類操作。
(3)數(shù)據(jù)庫管理系統(tǒng):它一方面負(fù)責(zé)對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行管理與保護(hù);一方面為用戶操作
數(shù)據(jù)庫中的數(shù)據(jù)提供一種公用的操作方法,接收用戶的操作命令,幫助完成有關(guān)的對數(shù)據(jù)
庫的操作并保障數(shù)據(jù)庫的安全。
根據(jù)對數(shù)據(jù)庫的定義與數(shù)據(jù)庫系統(tǒng)基本構(gòu)成及作用的描述,我們認(rèn)為一個(gè)的數(shù)據(jù)庫系
統(tǒng)應(yīng)該具有的下列五個(gè)基本特點(diǎn):
[1]由于數(shù)據(jù)庫系統(tǒng)是從整體角度考慮數(shù)據(jù)的組織,因此它務(wù)必有能力描述能夠反映客觀
事物及其相互聯(lián)系的復(fù)雜數(shù)據(jù)模型,使用它能夠?qū)?shù)據(jù)本身及相互間的各類關(guān)系進(jìn)行充分
描述,這也是人們?yōu)槭裁匆褂脭?shù)據(jù)庫系統(tǒng)來進(jìn)行數(shù)據(jù)管理的要緊原因之一。目前數(shù)據(jù)庫
系統(tǒng)共提供了四種數(shù)據(jù)模型,它們是層次數(shù)據(jù)模型、網(wǎng)狀數(shù)據(jù)模型、關(guān)系數(shù)據(jù)模型與對象
數(shù)據(jù)模型,一種類型數(shù)據(jù)庫系統(tǒng)通常只提供上述其中一種數(shù)據(jù)模型描述方法,即只支持其
中一種數(shù)據(jù)模型的數(shù)據(jù)邏輯組織結(jié)構(gòu)。
用戶1
IA
四戶z]數(shù)據(jù)庫管理系跳}三一"數(shù)據(jù)庫
用戶n
圖1.2數(shù)據(jù)庫系統(tǒng)構(gòu)成
[2]數(shù)據(jù)庫中數(shù)據(jù)的獨(dú)立性。為了說明這一點(diǎn),首先我們介紹兩個(gè)概念,(1)數(shù)據(jù)在物
理存儲設(shè)備上的組織結(jié)構(gòu)被稱之?dāng)?shù)據(jù)的物理組織;(2)數(shù)據(jù)在用戶或者應(yīng)用程序面前所表
現(xiàn)出的組織結(jié)構(gòu)被稱之?dāng)?shù)據(jù)的邏輯組織;一種數(shù)據(jù)的邏輯組織,能夠使用不一致的物理組
織來實(shí)現(xiàn),物理組織的好壞影響著系統(tǒng)的性能與效率。在運(yùn)行階段中,由于性能的要求或
者存儲設(shè)備的改變,從而引起數(shù)據(jù)物理組織的改變,這種改變稱之?dāng)?shù)據(jù)的再組織。用戶在
編制應(yīng)用程序時(shí),則是根據(jù)數(shù)據(jù)的邏輯組織對數(shù)據(jù)進(jìn)行操作的。因此數(shù)據(jù)物理組織的變
化,不可能影響數(shù)據(jù)的邏輯組織,因而也就不可能影響已有的應(yīng)用程序,這種情況就被稱
之?dāng)?shù)據(jù)的物理獨(dú)立性;而數(shù)據(jù)的邏輯獨(dú)立性是指當(dāng)數(shù)據(jù)的邏輯組織發(fā)生變化時(shí),如數(shù)據(jù)模
型中增加了新的記錄類型,某一記錄類型中增加了新的數(shù)據(jù)項(xiàng)等,原有應(yīng)用程序的執(zhí)行不
受影響或者影響最小。數(shù)據(jù)的獨(dú)立性,包含物理與邏輯的獨(dú)立性,都是由數(shù)據(jù)庫管理系統(tǒng)
進(jìn)行保護(hù)的。
[3]數(shù)據(jù)共享,由于數(shù)據(jù)庫是從整體的角度對數(shù)據(jù)進(jìn)行組織的,并在保證數(shù)據(jù)一致性的情
形之下,使數(shù)據(jù)庫中的數(shù)據(jù)為盡可能多的用戶提供應(yīng)用服務(wù)。這些用戶所使用的數(shù)據(jù)能夠
是交叉的,即數(shù)據(jù)能夠共享。假如數(shù)據(jù)不能共享,數(shù)據(jù)庫中則必定會(huì)出現(xiàn)大量的冗余數(shù)
據(jù),這樣不僅造成存儲空間的浪費(fèi),更要緊的是由此可能帶來數(shù)據(jù)不一致的隱患。
[4]數(shù)據(jù)庫系統(tǒng)的安全可靠與完整,一個(gè)數(shù)據(jù)庫系統(tǒng)的可靠性表達(dá)在它的軟件系統(tǒng)運(yùn)行故
障率很小與在數(shù)據(jù)庫系統(tǒng)由于各類意外而出現(xiàn)故障時(shí),數(shù)據(jù)庫中的數(shù)據(jù)的缺失最??;安全
性是指數(shù)據(jù)庫系統(tǒng)對其所存儲的數(shù)據(jù)的保護(hù)能力,能夠有效地防止數(shù)據(jù)有意無意地泄露或
者篡改,操縱數(shù)據(jù)的授權(quán)訪問等。而數(shù)據(jù)庫系統(tǒng)的完整性則是指在多用戶操作數(shù)據(jù)情況
下,數(shù)據(jù)能夠保持一致性。這些特性能夠從下列幾個(gè)方面進(jìn)行說明:
<1)安全性操縱
安全性操縱要緊指的是數(shù)據(jù)庫的保密性。并不是每個(gè)用戶都能夠存取數(shù)據(jù)庫中所有數(shù)
據(jù)的,負(fù)責(zé)人與全體工作人員同意掌握的數(shù)據(jù)范圍顯然是有區(qū)別的,數(shù)據(jù)庫系統(tǒng)把各用戶
存取數(shù)據(jù)的權(quán)利分成若干等級,如教學(xué)人員作為一個(gè)用戶能夠登錄學(xué)生的成績,而學(xué)生作
為一個(gè)用戶則僅能夠查閱成績而無法對它進(jìn)行修改或者刪除。通過對各個(gè)用戶授于不一致
的使用權(quán)限,以確保數(shù)據(jù)庫免遭損害與被非法使用,通常是通過使用口令密碼與數(shù)據(jù)庫中
數(shù)據(jù)訪問授權(quán)等方法對使用者操作數(shù)據(jù)的合法權(quán)進(jìn)行檢驗(yàn),以實(shí)現(xiàn)對數(shù)據(jù)庫中數(shù)據(jù)安全性
的保護(hù)操縱。
〈2〉完整性操縱
所謂完整性包含數(shù)據(jù)的正確性、有效性與相容性。正確的數(shù)據(jù)不一定是有效的。如若
用兩位阿拉伯?dāng)?shù)字來表示月份,在輸入14來代表月份時(shí)顯然是無效的。數(shù)據(jù)庫系統(tǒng)應(yīng)提供
盡可能多的檢驗(yàn)措施,以確保數(shù)據(jù)庫中的數(shù)據(jù)滿足用戶所要求的各類約束要求。
〈3〉并發(fā)操縱
在多用戶操作使用數(shù)據(jù)庫系統(tǒng)的情況下,不一致用戶并行地操作數(shù)據(jù)庫就可能引起對
數(shù)據(jù)庫的干擾,從而使得數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生不一致的問題。如當(dāng)甲用戶從數(shù)據(jù)庫中預(yù)定
了僅剩的一張機(jī)票之后,若在數(shù)據(jù)庫尚來不及將剩余的機(jī)票數(shù)改為零時(shí),乙用戶又請求訂
票時(shí)怎么辦?顯然對這種并發(fā)的操作要采取某種操縱措施,最常用的方法是封鎖技術(shù),以
排除與避免這種錯(cuò)誤的發(fā)生,保證數(shù)據(jù)庫中數(shù)據(jù)的操作能夠正確完成執(zhí)行。
〈4〉故障的發(fā)現(xiàn)與恢復(fù)
由于數(shù)據(jù)庫系統(tǒng)在運(yùn)行過程中很難保證不產(chǎn)生故障、出現(xiàn)意義或者受到破壞,而且往
往這些情況的發(fā)生的時(shí)間都是隨機(jī)的,如斷電、用戶誤操作等,而重建一個(gè)數(shù)據(jù)庫往往要
花費(fèi)很大的精力與代價(jià),有的時(shí)候甚至是不可能的,因此數(shù)據(jù)庫系統(tǒng)應(yīng)提供應(yīng)急保護(hù)設(shè)
施,一旦系統(tǒng)的軟硬件發(fā)生故障或者用戶誤操作導(dǎo)致系統(tǒng)特殊時(shí),系統(tǒng)應(yīng)能夠以盡量小的
代價(jià),盡快地恢復(fù)數(shù)據(jù)庫的內(nèi)容與系統(tǒng)的正常運(yùn)行。
[5]良好的人機(jī)接口與性能,任何數(shù)據(jù)庫系統(tǒng)最終都是要與用戶打交道,系統(tǒng)所具有的各
類功能最終都需要由用戶來進(jìn)行操作使用。簡單易學(xué)、操作簡便與用戶界面友好是任何一
個(gè)數(shù)據(jù)庫系統(tǒng)所務(wù)必的。此外系統(tǒng)的響應(yīng)速度,單位時(shí)間內(nèi)數(shù)據(jù)的吞吐量也是衡量數(shù)據(jù)庫
性能重要指標(biāo)。
1.2.2數(shù)據(jù)庫結(jié)構(gòu)
在上一小節(jié),我們介紹了數(shù)據(jù)庫系統(tǒng)所涉及的三個(gè)基本成分與數(shù)據(jù)庫系統(tǒng)所應(yīng)具有的
五個(gè)特點(diǎn),在這一小節(jié)中,我們將略為詳盡地介紹數(shù)據(jù)庫系統(tǒng)的要緊構(gòu)成之一,數(shù)據(jù)庫的
有關(guān)知識。在數(shù)據(jù)庫技術(shù)中,為了提高數(shù)據(jù)庫中數(shù)據(jù)的邏輯獨(dú)立性與物理獨(dú)立性,使用了
分級(層)方法,將數(shù)據(jù)庫中數(shù)據(jù)的組織結(jié)構(gòu)劃分成多個(gè)級(層)。根據(jù)美國國家標(biāo)準(zhǔn)協(xié)
會(huì)(ANSI)所提出的報(bào)告,數(shù)據(jù)庫的數(shù)據(jù)組織結(jié)構(gòu)能夠分為三個(gè)相互關(guān)聯(lián)的層次,它們分
別是概念層數(shù)據(jù)模式、用戶層數(shù)據(jù)模式與物理層數(shù)據(jù)模式。
【1】概念層數(shù)據(jù)模式,又稱之模式,它是對數(shù)據(jù)庫中數(shù)據(jù)整體邏輯結(jié)構(gòu)的描述,它是對數(shù)
據(jù)庫中所有數(shù)據(jù)項(xiàng)、記錄類型與各記錄類型之間的相互關(guān)系的描述。這里需要說明的是,
這種描述僅僅是一種邏輯組織結(jié)構(gòu)的描述,是面向用戶需要而提出的。而非是真正的數(shù)據(jù)
存儲組織結(jié)構(gòu)。提供這一層次的數(shù)據(jù)模式描述,要緊是為了數(shù)據(jù)庫應(yīng)用系統(tǒng)的設(shè)計(jì)者,在
對與應(yīng)用有關(guān)的所有用戶的需求進(jìn)行統(tǒng)一綜合考慮之后提出的,它能夠從總體上,將這些
需求所涉及到的數(shù)據(jù)及其它們間的相互聯(lián)系,有機(jī)地結(jié)合成為一個(gè)邏輯整體。概念層數(shù)據(jù)
模式的設(shè)計(jì)是數(shù)據(jù)庫設(shè)計(jì)的最基本也是最重要的任務(wù)。
[2]用戶層數(shù)據(jù)模式,又稱之外模式或者子模式,它是對以用戶為對象使用數(shù)據(jù)庫所涉及
到的所有數(shù)據(jù)局部邏輯結(jié)構(gòu)的描述。它是模式一個(gè)子集或者者是一個(gè)映射,一個(gè)數(shù)據(jù)庫只
有一個(gè)模式,但通常都對應(yīng)著多個(gè)子模式。子模式所包含的數(shù)據(jù)之間容許有重疊,也容許
多個(gè)用戶共用同一個(gè)子模式。提供這一層次的數(shù)據(jù)模式描述,有下列優(yōu)點(diǎn):
〈1〉用戶只要按照描述自己所使用數(shù)據(jù)的子模式編寫應(yīng)用程序或者輸入操作命令,就能夠
完成滿足自己要求的數(shù)據(jù)庫操縱工作。而無需熟悉整體數(shù)據(jù)模式或者數(shù)據(jù)的存儲組織結(jié)
構(gòu),從而是用戶接口變得簡單。
(2)保證了數(shù)據(jù)獨(dú)立性。由于用戶的數(shù)據(jù)庫應(yīng)用編程僅僅是根據(jù)子模式的數(shù)據(jù)邏輯結(jié)構(gòu)的
描述,而子模式通常都是模式的一個(gè)真子集,因此若因需要而對模式所描述的數(shù)據(jù)邏輯結(jié)
構(gòu)進(jìn)行部分修改或者擴(kuò)充時(shí),如增加新的數(shù)據(jù)項(xiàng)或者者增加新的記錄類型等,只要不影響
子模式從模式中的原有的映射關(guān)系,那么用戶根據(jù)子模式所開發(fā)的應(yīng)用程序,則就不受模
式變動(dòng)的任何影響。因此提供模式與子模式這兩層數(shù)據(jù)邏輯結(jié)構(gòu)的描述,就能夠較好地保
證數(shù)據(jù)的邏輯獨(dú)立性。
〈3〉數(shù)據(jù)能夠被較好地共享。由于同一模式能夠產(chǎn)生許多不一致的子模式,這些子模式所
描述的數(shù)據(jù)能夠來源于模式所描述的全局?jǐn)?shù)據(jù)邏輯結(jié)構(gòu)中各類數(shù)據(jù)項(xiàng)或者記錄類型,因此
這樣做,這樣就能夠很方便地實(shí)現(xiàn)數(shù)據(jù)的共享,也就大大減少了數(shù)據(jù)可能存在的冗余,從
而有利于保證數(shù)據(jù)的一致性、完整性與正確性。
〈4〉有利于保證數(shù)據(jù)的安全與保密。由于用戶是通過其相應(yīng)的應(yīng)用程序?qū)?shù)據(jù)庫中數(shù)據(jù)進(jìn)
行操作,因此他只能操作其子模式所描述范圍內(nèi)的數(shù)據(jù),而無法接觸到其它用戶及其子模
式所描述的數(shù)據(jù),由此就能夠保證數(shù)據(jù)庫中的數(shù)據(jù)具有較好的安全性。
[3]物理層數(shù)據(jù)模式,又稱之內(nèi)模式或者物理模式。它是對數(shù)據(jù)庫中所有數(shù)據(jù)在物理設(shè)備
上實(shí)際存儲的組織結(jié)構(gòu)的描述。數(shù)據(jù)庫數(shù)據(jù)根據(jù)這一層數(shù)據(jù)模式的描述,被存放到若干按
各類組織方式建立起來的物理文件中,對這些物理文件的所有存取訪問的操縱都是由數(shù)據(jù)
庫管理系統(tǒng)統(tǒng)一操縱的。管理系統(tǒng)負(fù)責(zé)完成從概念層數(shù)據(jù)模式到物理層數(shù)據(jù)模式之間的數(shù)
據(jù)映射,這樣由于所有的數(shù)據(jù)庫應(yīng)用程序或者服務(wù)所涉及到數(shù)據(jù)又都是根據(jù)模式的數(shù)據(jù)描
述得到的,因此當(dāng)數(shù)據(jù)庫數(shù)據(jù)的物理組織結(jié)構(gòu)發(fā)生變化時(shí),概念層數(shù)據(jù)模式描述通常無需
修改,同樣也就保證了與模式有關(guān)聯(lián)的子模式與用戶應(yīng)用程序也無需修改,從而使得數(shù)據(jù)
庫系統(tǒng)中數(shù)據(jù)也具有的物理獨(dú)立性。
存儲模式數(shù)據(jù)
字模前
圖L3數(shù)據(jù)庫結(jié)構(gòu)各模式間關(guān)系
由于一個(gè)數(shù)據(jù)庫是使用上述的三個(gè)層結(jié)構(gòu)方式對其中的數(shù)據(jù)組織進(jìn)行描述的,從而較
好地保證了數(shù)據(jù)的邏輯獨(dú)立性與物理獨(dú)立性,方便了用戶對數(shù)據(jù)庫中數(shù)據(jù)的操作使用,減
少了數(shù)據(jù)冗余。這三層模式之間的相互關(guān)系如圖1.3所示。由于數(shù)據(jù)庫中數(shù)據(jù),實(shí)際上是按
照物理層數(shù)據(jù)模式進(jìn)行存儲的,而概念層數(shù)據(jù)模式與用戶層數(shù)據(jù)模式都只是對物理層數(shù)據(jù)
模式描述的數(shù)據(jù)的一種逐級(層)地邏輯抽象,用戶在對數(shù)據(jù)庫進(jìn)行操作時(shí),都務(wù)必通過
數(shù)據(jù)庫管理系統(tǒng),來完成從用戶層數(shù)據(jù)模式到概念層數(shù)據(jù)模式之間、概念層數(shù)據(jù)模式到物
理層數(shù)據(jù)模式之間這兩種映射,當(dāng)然這兩種映射是由管理系統(tǒng)自動(dòng)完成的,對用戶是透明
的。
目前實(shí)際應(yīng)用的中高檔數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)組織結(jié)構(gòu)基本上是按照上述三層模式標(biāo)準(zhǔn),
來描述數(shù)據(jù)組織的。也有一些中低檔數(shù)據(jù)庫系統(tǒng),為了方便通常用戶的操作使用,對上述
三層模式標(biāo)準(zhǔn)進(jìn)行了一些簡化,它們往往使用一層或者二層模式來描述數(shù)據(jù)組織結(jié)構(gòu),通
常都略去了物理層的數(shù)據(jù)模式描述。
1.2.3數(shù)據(jù)庫系統(tǒng)
數(shù)據(jù)庫系統(tǒng)的核心是數(shù)據(jù)庫管理系統(tǒng)(DataBaseManagementSystem,簡稱DBMS),
在它的操縱與幫助下,用戶能夠建立、使用、修改與保護(hù)數(shù)據(jù)庫中數(shù)據(jù)。數(shù)據(jù)庫管理系統(tǒng)
是建立在操作系統(tǒng)之上的應(yīng)用軟件平臺。它通常具有下列三個(gè)要緊功能:
(1)提供操作數(shù)據(jù)庫的用戶高級接口。具體講就是(A)提供數(shù)據(jù)描述語言,供用戶對整
個(gè)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行各類邏輯與物理組織結(jié)構(gòu)描述,而這些組織結(jié)構(gòu)的具體實(shí)現(xiàn)細(xì)節(jié),
則山DBMS完成,用戶不必關(guān)心。(B)提供數(shù)據(jù)操縱語言,供用戶對數(shù)據(jù)庫中數(shù)據(jù)按照其
定義邏輯組織結(jié)構(gòu)進(jìn)行各類操作,如插入、刪除、修改與查詢等,這些操作的的具體實(shí)現(xiàn)
細(xì)節(jié),則也由DBMS完成,用戶不必關(guān)心。(C)同時(shí)還可能提供其它工具,如用戶界面生
成工具、報(bào)表生成工具等,幫助用戶更加容易地對數(shù)據(jù)庫的操縱進(jìn)行編程。
(2)管理數(shù)據(jù)庫。它要緊包含下列功能:(A)操縱整個(gè)數(shù)據(jù)庫系統(tǒng)的運(yùn)行;(B)操縱
用戶對數(shù)據(jù)庫的并發(fā)性操作;(C)執(zhí)行對數(shù)據(jù)庫中數(shù)據(jù)的安全、保密、有效性與完整性檢
驗(yàn);(D)實(shí)施對數(shù)據(jù)庫中數(shù)據(jù)的檢索、插入、刪除、修改等操作。(E)保護(hù)數(shù)據(jù)庫數(shù)據(jù)
組織結(jié)構(gòu)的完整與一致。
(3)保護(hù)數(shù)據(jù)庫,要緊包含:(A)初始化時(shí)數(shù)據(jù)庫數(shù)據(jù)的裝入:(B)運(yùn)行時(shí)記錄下與
用戶、操作、系統(tǒng)狀態(tài)與結(jié)果等信息的工作日志;(C)監(jiān)視數(shù)據(jù)庫性能;在性能變壞時(shí),
重新組織數(shù)據(jù)庫;(D)在數(shù)據(jù)庫系統(tǒng)的硬件或者軟件發(fā)生故障后,對數(shù)據(jù)庫中受破壞的數(shù)
據(jù)進(jìn)行恢復(fù)。
這一小節(jié),將略為詳盡地介紹與數(shù)據(jù)庫管理軟件有關(guān)的一些基本情況。
(-)數(shù)據(jù)庫系統(tǒng)語言
數(shù)據(jù)庫系統(tǒng)語言是用戶與數(shù)據(jù)庫系統(tǒng)進(jìn)行交互操作的要緊工具,是連接用戶與數(shù)據(jù)庫
系統(tǒng)的橋梁。數(shù)據(jù)庫語言功能的強(qiáng)弱直接影響到用戶使用數(shù)據(jù)庫系統(tǒng)的方便程度。數(shù)據(jù)庫
系統(tǒng)語言通常包含數(shù)據(jù)庫數(shù)據(jù)描述語言DDL(DataDescriptionLanguage)與數(shù)據(jù)庫數(shù)據(jù)操
作語言DML(DataManipulationLanguage)這兩種語言。數(shù)據(jù)描述語言用于描述數(shù)據(jù)庫中
各類模式的定義;而數(shù)據(jù)操作語言則是用于描述對數(shù)據(jù)庫中數(shù)據(jù)所要進(jìn)行的各類操作。這
里我們將概述這兩種語言一些基本功能。
[1]數(shù)據(jù)描述語言
數(shù)據(jù)描述語言是建立與使用數(shù)據(jù)庫的重要工具,它是用于描述數(shù)據(jù)庫各層數(shù)據(jù)模式描
述的語言。數(shù)據(jù)庫管理系統(tǒng)將對用戶用該語言所描述的各層數(shù)據(jù)模式,進(jìn)行編譯,產(chǎn)生可
供數(shù)據(jù)庫系統(tǒng)操作時(shí)所使用的目標(biāo)模式。對應(yīng)著數(shù)據(jù)庫的模式、子模式與內(nèi)模式,數(shù)據(jù)描
述語言又可分為模式描述語言、子模式描述語言與內(nèi)模式描述語言。它們各自的功能如
下:
(1)模式描述語言,它是用來描述數(shù)據(jù)庫概念層數(shù)據(jù)模式的,即用于描述數(shù)據(jù)庫中所有數(shù)
據(jù)與它們間相互關(guān)系的特性。用模式描述語言寫出的數(shù)據(jù)庫全體數(shù)據(jù)的邏輯組織結(jié)構(gòu)的全
部語句的集合,通常就被稱之一個(gè)模式,一個(gè)模式的要緊內(nèi)容有:
①給數(shù)據(jù)庫總體數(shù)據(jù)的邏輯組織結(jié)構(gòu),即模式取名
②描述模式中每個(gè)記錄類型名稱,與其中各數(shù)據(jù)項(xiàng)的名稱、數(shù)據(jù)類型(如字符型、數(shù)字型
等)與數(shù)據(jù)長度等。
③描述模式中各記錄類型之間的相互聯(lián)系,假如存在有相互聯(lián)系的話。
一個(gè)模式僅僅是對數(shù)據(jù)庫概念層邏輯數(shù)據(jù)組織結(jié)構(gòu)的一個(gè)描述,并非是概念層邏輯數(shù)
據(jù)本身。與其它程序語言一樣,模式描述語言也有自己的一套清晰而又嚴(yán)格的語句與語法
規(guī)則。對應(yīng)不一致類型的數(shù)據(jù)庫系統(tǒng),如層次數(shù)據(jù)庫系統(tǒng)與網(wǎng)狀數(shù)據(jù)庫系統(tǒng),它們的模式
描述語言也有很大差別,即使是同一類型數(shù)據(jù)庫系統(tǒng),如關(guān)系數(shù)據(jù)庫系統(tǒng),不一致軟件商
推出的系統(tǒng),其模式描述語言也不盡相同。但有一點(diǎn)是一致的,這就是它們都務(wù)必是可對
上面所說明的,描述一個(gè)模式所需要包含的三個(gè)基本方面進(jìn)行定義說明。
(2)子模式描述語言,它是用來描述數(shù)據(jù)庫用戶層數(shù)據(jù)模式的,即用于描述用戶所使用的
數(shù)據(jù)的邏輯數(shù)據(jù)組織結(jié)構(gòu)的定義。用子模式描述語言寫出的用戶局部數(shù)據(jù)邏輯組織結(jié)構(gòu)的
全部語句的集合,通常就被稱之一個(gè)子模式,一個(gè)子模式的要緊內(nèi)容有:
①給用戶使用數(shù)據(jù)庫所涉及到局部數(shù)據(jù)的邏輯組織結(jié)構(gòu),即子模式取名
②描述子模式中所包含的每個(gè)記錄類型及其中的各數(shù)據(jù)項(xiàng),這些記錄類型的名稱與各數(shù)據(jù)
項(xiàng)的名稱與長度,能夠與模式中的定義是完全不一致的,但這里要緊是描述子模式中的記
錄類型及其數(shù)據(jù)項(xiàng)與模式中記錄類型及其數(shù)據(jù)項(xiàng)之間的對應(yīng)映射關(guān)系,子模式中所描述的
記錄及其中的數(shù)據(jù)項(xiàng)務(wù)必是已在模式中定義過的。
③描述子模式中各記錄類型之間的相互聯(lián)系。這里同樣是描述子模式中的記錄間相互聯(lián)系
與模式中記錄間相互聯(lián)系之間的對應(yīng)映射關(guān)系。子模式中所描述的記錄間相互聯(lián)系務(wù)必是
已在模式中定義過的。
與模式描述語言不一致,子模式描述語言有的時(shí)候與編寫應(yīng)用程序所使用的其它程序
設(shè)計(jì)語言有關(guān),因此根據(jù)子模式描述語言所適用的編寫應(yīng)用程序語言,子模式描述語言也
可分為COBOL子模式描述語言、FORTRAN子模式描述語言與C子模式描述語言等。
(3)內(nèi)模式描述語言,它是用來描述數(shù)據(jù)庫中數(shù)據(jù)在物理存貯介質(zhì)上的組織結(jié)構(gòu)與存放方
式等,它與數(shù)據(jù)庫系統(tǒng)所運(yùn)行的硬件環(huán)境特性有關(guān)。比如,系統(tǒng)建立了什么物理文件?文件
的存貯設(shè)備是什么?文件是以什么樣的組織方式等等,這些都是由內(nèi)模式描述語言來負(fù)責(zé)
描述的。
上述內(nèi)容僅僅是關(guān)于數(shù)據(jù)描述語言中一些最基本的部分。通常各軟件商生產(chǎn)出的數(shù)據(jù)
庫系統(tǒng),往往都要根據(jù)自己的具體實(shí)現(xiàn)情況,提供出相應(yīng)的一整套數(shù)據(jù)描述語言的規(guī)范,
其中也有一些數(shù)據(jù)庫系統(tǒng),對上述的數(shù)據(jù)描述語言的標(biāo)準(zhǔn)進(jìn)行了一些簡化,只給出一種或
者二種描述語言定義,或者干脆將數(shù)據(jù)描述語言與數(shù)據(jù)操作語言歸并到了一起,以方便用
戶使用。如FoxPro數(shù)據(jù)庫系統(tǒng),與目前比較流行的基于SQL的多種數(shù)據(jù)庫系統(tǒng)。
[2]數(shù)據(jù)操作語言
數(shù)據(jù)操縱語言是用戶操縱數(shù)據(jù)庫中數(shù)據(jù)的工具,用戶借助它來實(shí)現(xiàn)從數(shù)據(jù)庫中檢索數(shù)
據(jù)、向數(shù)據(jù)庫中添加數(shù)據(jù)、刪除數(shù)據(jù)庫中沒有保留價(jià)值的數(shù)據(jù)或者修改某些發(fā)生變化的數(shù)
據(jù)等操作。
數(shù)據(jù)操縱語言通常分為兩種類型,即宿主式數(shù)據(jù)操縱語言與自含式數(shù)據(jù)操縱語言。自
含式數(shù)據(jù)操縱語言在數(shù)據(jù)庫系統(tǒng)中可獨(dú)立使用,是一種完整的語言,這類語言使用簡單方
便,很適合于在終端上使用。這類語言的優(yōu)點(diǎn)是系統(tǒng)運(yùn)行效率較高且使用簡單,缺點(diǎn)是它
的應(yīng)用范圍常常受到限制,比如要提取出數(shù)據(jù)庫中的一些數(shù)據(jù)進(jìn)行某種復(fù)雜運(yùn)算處理時(shí),
單靠數(shù)據(jù)庫系統(tǒng)所提供的這類數(shù)據(jù)操縱語言有的時(shí)候就很難做到這一點(diǎn)。自含式數(shù)據(jù)操縱
語言通常包含下列基本操作功能:(A)從數(shù)據(jù)庫中選擇滿足一定要求的記錄或者聯(lián)系;
(B)增加新的記錄或者聯(lián)系到數(shù)據(jù)庫中;(C)修改數(shù)據(jù)庫中的記錄或者聯(lián)系;(D)刪
除數(shù)據(jù)庫中的記錄或者聯(lián)系;
另一種是宿主式數(shù)據(jù)操縱語言,它不能單獨(dú)使用,務(wù)必嵌入到某種程序設(shè)計(jì)語言(如
C,COBOL,FORTRAN)之中方能進(jìn)行數(shù)據(jù)庫操作,這種數(shù)據(jù)操縱語言語句僅負(fù)責(zé)對數(shù)據(jù)
庫中數(shù)據(jù)的操作,其它復(fù)雜的數(shù)據(jù)處理工作均有主語言完成,有的時(shí)候這樣做會(huì)使得用戶
的應(yīng)用程序變得相當(dāng)復(fù)雜。由于這樣的程序既包含了主語言語句,也包含了數(shù)據(jù)操縱語言
語句,也就使得主語言原先的編譯程序便不能完全編譯應(yīng)用程序了,解決這一問題有兩種
辦法:(A)重新設(shè)計(jì)與實(shí)現(xiàn)一個(gè)編譯程序,使之能編譯包含數(shù)據(jù)操縱語言與主語言的所有
語句,這種辦法不大現(xiàn)實(shí)經(jīng)濟(jì);(B)不修改主語言編譯程序,而是設(shè)計(jì)一個(gè)預(yù)編程序來對
應(yīng)用程序中的數(shù)據(jù)操縱語言進(jìn)行預(yù)編譯,將其首先轉(zhuǎn)換成用主語言寫的程序,然后再用主
語言的編譯程序來編譯,以產(chǎn)生最后的目標(biāo)程序。這樣做辦法比較可行,目前已為許多數(shù)
據(jù)庫系統(tǒng)所使用。
實(shí)際上許多數(shù)據(jù)庫系統(tǒng)除了提供上述兩種數(shù)據(jù)操作語言之外,還提供了許多編程工具
與或者編程命令,以便幫助用戶更加容易地編制數(shù)據(jù)庫的應(yīng)用程序,如用戶界面生成工
具、報(bào)表生成工具與數(shù)據(jù)庫API接口等。
(二)數(shù)據(jù)庫系統(tǒng)運(yùn)行管理與操縱軟件
數(shù)據(jù)庫系統(tǒng)運(yùn)行管理與操縱軟件是數(shù)據(jù)庫管理系統(tǒng)軟件的實(shí)際構(gòu)成,它要緊包含語言
編譯處理程序、系統(tǒng)運(yùn)行操縱程序與數(shù)據(jù)庫日常管理程序與數(shù)據(jù)庫工具等多種軟件。下面
將概述這幾種軟件一些基本功能
(1)語言編譯處理程序。它要緊包含:(A)數(shù)據(jù)庫系統(tǒng)中各類數(shù)據(jù)描述語言的編譯處理
程序,它們的作用是將各類使用模式描述語言所定義數(shù)據(jù)模式編譯成DBMS所使用的內(nèi)部定
義目標(biāo)模式。(B)數(shù)據(jù)庫系統(tǒng)各類數(shù)據(jù)操縱語言的處理程序,它們可將應(yīng)用程序中使用數(shù)
據(jù)操縱語言所寫的數(shù)據(jù)操作語句轉(zhuǎn)換成其宿主語言編譯程序所能處理的語句。(C)終端操
作命令解釋程序,它要緊用于解釋終端操作命令的意義,完成相應(yīng)數(shù)據(jù)庫系統(tǒng)命令的執(zhí)行
過程。(D)數(shù)據(jù)庫操縱命令解釋程序,它負(fù)責(zé)解釋執(zhí)行每一條數(shù)據(jù)庫操縱命令。
(2)系統(tǒng)運(yùn)行操縱程序。它要緊包含:(A)數(shù)據(jù)庫系統(tǒng)的總控程序,它用于檢查訪問的
合法性,以決定一個(gè)訪問是否能使用數(shù)據(jù)庫。(B)并發(fā)操縱程序。協(xié)調(diào)多個(gè)應(yīng)用程序?qū)?shù)
據(jù)庫的操作,保證數(shù)據(jù)庫中數(shù)據(jù)的一致性。(C)保密操縱程序。實(shí)現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)的安全
保密操縱。(D)數(shù)據(jù)完整性操縱程序。核對數(shù)據(jù)庫完整性約束條件,以決定對數(shù)據(jù)庫的操
作是否有效。(E)數(shù)據(jù)庫存取訪問程序。實(shí)施對數(shù)據(jù)庫中數(shù)據(jù)的操作,如執(zhí)行檢索、插
入、修改、刪除等操作。(F)通訊操縱程序。實(shí)現(xiàn)用戶程序與DBMS之間的通訊。
(3)數(shù)據(jù)庫日常管理程序。這要緊包含:(A)數(shù)據(jù)裝入程序。實(shí)現(xiàn)將初始數(shù)據(jù)裝入數(shù)據(jù)
庫。(B)系統(tǒng)恢復(fù)程序。當(dāng)軟硬件出現(xiàn)故障時(shí),利用恢復(fù)程序?qū)?shù)據(jù)庫恢復(fù)到正確狀態(tài)。
(C)工作日志程序。負(fù)責(zé)記載進(jìn)入數(shù)據(jù)庫的所有訪問,其內(nèi)容包含用戶名稱、進(jìn)入系統(tǒng)時(shí)
間、進(jìn)行何種操作、數(shù)據(jù)變更情況等等。使每個(gè)用戶每次訪問都留下蹤跡。(D)性能監(jiān)測
程序。監(jiān)測操作執(zhí)行時(shí)間與存貯空間占用情況,為數(shù)據(jù)庫的再組織提供根據(jù)。(E)重新組
織程序。當(dāng)數(shù)據(jù)庫系統(tǒng)性能變壞時(shí),對數(shù)據(jù)庫重新進(jìn)行物理組織。(F)轉(zhuǎn)貯、編輯、打印
程序、用于轉(zhuǎn)貯數(shù)據(jù)庫的部分與全部數(shù)據(jù),或者者編輯打印數(shù)據(jù)等。
(4)數(shù)據(jù)庫工具軟件。它要緊是為了方便建立數(shù)據(jù)庫系統(tǒng)的具體應(yīng)用,而提供各類工具軟
件。其中有數(shù)據(jù)庫系統(tǒng)應(yīng)用程序界面制作工具,報(bào)表制作工具等許多軟件工具。
最后我們簡單介紹一下建立數(shù)據(jù)庫應(yīng)用系統(tǒng)的基本知識。數(shù)據(jù)庫應(yīng)用系統(tǒng)的設(shè)計(jì)方法
我們將在第五章全面介紹。與其它應(yīng)用軟件開發(fā)與應(yīng)用過程一樣,數(shù)據(jù)庫系統(tǒng)的應(yīng)用,也
有一個(gè)生命周期,它要緊由下列五個(gè)階段構(gòu)成:
(1)數(shù)據(jù)庫系統(tǒng)的規(guī)劃。它包含系統(tǒng)的應(yīng)用范圍與功能的確認(rèn)、應(yīng)用環(huán)境的分析、DBMS
及其支撐環(huán)境的選擇、硬件配置,人員的配備與培訓(xùn),投資估算與效益分析等活動(dòng)。
(2)數(shù)據(jù)庫系統(tǒng)的設(shè)計(jì)。它包含熟悉應(yīng)用系統(tǒng)的信息與處理需求,設(shè)計(jì)滿足其要求的整體
數(shù)據(jù)模型及處理流程,并結(jié)合具體所使用的數(shù)據(jù)庫系統(tǒng)、硬件環(huán)境與系統(tǒng)軟件平臺的特
點(diǎn),設(shè)計(jì)出符合具體數(shù)據(jù)庫系統(tǒng)應(yīng)用要求的數(shù)據(jù)模型,及其應(yīng)用軟件的流程圖。選擇合適
的商用數(shù)據(jù)庫系統(tǒng),來設(shè)計(jì)、建立、管理與保護(hù)數(shù)據(jù)庫系統(tǒng),使之能夠?yàn)橛脩籼峁┳罴逊?/p>
務(wù)。
(3)數(shù)據(jù)庫系統(tǒng)的建立。首先根據(jù)數(shù)據(jù)庫系統(tǒng)的設(shè)計(jì)結(jié)果,定義數(shù)據(jù)模式,規(guī)定訪問權(quán)
限,設(shè)置完整性約束。然后準(zhǔn)備數(shù)據(jù),對其進(jìn)行正確性校驗(yàn)后,將其錄入,與此同時(shí),完
成要緊應(yīng)用程序的編制工作。
(4)數(shù)據(jù)庫系統(tǒng)的管理。它包含應(yīng)用軟件的編制與修改、數(shù)據(jù)庫的重新組織、數(shù)據(jù)庫系統(tǒng)
中數(shù)據(jù)的備份與恢復(fù)等工作。保證數(shù)據(jù)庫系統(tǒng)的完好,為用戶提供可靠的服務(wù)。
(5)數(shù)據(jù)庫系統(tǒng)的調(diào)整。由于應(yīng)用數(shù)據(jù)庫系統(tǒng)的用戶所在的硬環(huán)境,如單位組織調(diào)整、人
員變化等,軟環(huán)境,如人員素養(yǎng)、應(yīng)用要求等,發(fā)生變化,在數(shù)據(jù)庫系統(tǒng)運(yùn)行一段時(shí)間
后,往往都需要進(jìn)行擴(kuò)充與重構(gòu),即需要對數(shù)據(jù)庫系統(tǒng)的各類數(shù)據(jù)模式的定義與處理流程
進(jìn)行適當(dāng)?shù)男薷呐c補(bǔ)充,使之習(xí)慣新的形勢。
通常與一個(gè)數(shù)據(jù)庫系統(tǒng)的應(yīng)用系統(tǒng)有關(guān)的人員,有下列四類,他們是:(A)系統(tǒng)管理
員,他的任務(wù)要緊是定義數(shù)據(jù)庫系統(tǒng)的物理存儲模式,分配并管理各用戶操作的權(quán)限,管
理日常數(shù)據(jù)庫系統(tǒng)的運(yùn)行工作,與保護(hù)數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù),保證其完整與安全、(B)系
統(tǒng)分析員,他們的任務(wù)要緊是,從整體上分析數(shù)據(jù)庫系統(tǒng)應(yīng)用所涉及的客觀信息結(jié)構(gòu)與內(nèi)
容,定義相應(yīng)的數(shù)據(jù)庫系統(tǒng)的全局?jǐn)?shù)據(jù)模式;(C)應(yīng)用程序員,他們的任務(wù)要緊是分析具
體用戶的信息處理需要,定義數(shù)據(jù)庫系統(tǒng)的子模式,編寫具體數(shù)據(jù)庫應(yīng)用程序;(D)用
戶,他們具體的數(shù)據(jù)庫應(yīng)用程序與數(shù)據(jù)庫的最終使用者。
(三)數(shù)據(jù)庫系統(tǒng)訪問示例
這里,我們介紹一下普通用戶讀取數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)時(shí),數(shù)據(jù)庫的工作過程(如圖1.4
所示),以便使讀者能夠從中熟悉DBMS是如何來進(jìn)行數(shù)據(jù)庫系統(tǒng)的管理工作的。用戶訪問
數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的過程實(shí)際上就是用戶與DBMS進(jìn)行交互的過程。其具體步驟如下:
(1)用戶通過應(yīng)用程序指明它使用的子模式名稱,發(fā)出數(shù)據(jù)操作命令,DBMS通過處理用
戶的應(yīng)用程序,接收該操作命令。
(2)DBMS按照應(yīng)用程序中的子模式名稱,調(diào)出相應(yīng)的子模式,核對該用戶的訪問權(quán)利、
操作合法性等,若檢查通過則繼續(xù)執(zhí)行,否則拒絕執(zhí)行并報(bào)告出錯(cuò)信息。
(3)DBMS按模式確定子模式中操作所涉及的記錄類型,并通過模式到存儲模式的映射,
找出這些記錄類型的相應(yīng)存貯模式。
(4)DBMS查閱存貯模式,確定應(yīng)從哪個(gè)物理文件、存貯設(shè)備與調(diào)用哪個(gè)訪問程序去讀取
所需的記錄。
(5)DBMS的訪問程序找到有關(guān)的物理數(shù)據(jù)地址,向操作系統(tǒng)發(fā)出讀操作命令。
(6)操作系統(tǒng)收到DBMS發(fā)來的命令后,啟動(dòng)系統(tǒng)的輸入/輸出程序完成讀操作,把要讀
取的數(shù)據(jù)塊送到內(nèi)存中的系統(tǒng)緩沖區(qū)。
(7)DBMS收到操作系統(tǒng)關(guān)于輸入/輸出操作結(jié)束回答后,按模式、子模式的定義,將已
讀入到系統(tǒng)緩沖區(qū)的內(nèi)容映射為用戶程序所要的邏輯記錄,并送到用戶的工作區(qū)中。
(8)DBMS向應(yīng)用程序發(fā)送反映操作執(zhí)行結(jié)果的狀態(tài)信息(由狀態(tài)字描述),如“執(zhí)行成
功”、“數(shù)據(jù)未找到”等。
(9)記載DBMS系統(tǒng)的工作日志。
(10)應(yīng)用程序檢查狀態(tài)信息,如執(zhí)行成功,則可對程序工作區(qū)中的數(shù)據(jù)作正常處理,否
則按出錯(cuò)類型決定程序的后續(xù)處理。
用戶修改一個(gè)記錄的操作步驟也是類似的。首先讀出所需記錄,在程序工作區(qū)中修改
好,而后再把修改好的記錄寫回?cái)?shù)據(jù)庫中原記錄的位置上。
圖L4數(shù)據(jù)庫的工作過程
1.3實(shí)體聯(lián)系模型
本節(jié)要緊介紹有關(guān)實(shí)體聯(lián)系模型的概念與基本知識,使讀者熟悉并掌握基本的實(shí)體聯(lián)
系模型的使用方法。
1.3.1模型的構(gòu)成
我們都明白數(shù)據(jù)是表達(dá)信息的一種重要的量化符號,是信息存在的一種重要形式。而
所謂數(shù)據(jù)模型則是數(shù)據(jù)特征的一種抽象。它不是描述個(gè)別的數(shù)據(jù),而是描述數(shù)據(jù)的共性。
通常來講,數(shù)據(jù)模型包含兩方面內(nèi)容,它們是:(1)數(shù)據(jù)的靜態(tài)特性,這要緊包含數(shù)據(jù)的
基本結(jié)構(gòu)、數(shù)據(jù)間的聯(lián)系與數(shù)據(jù)中的相互約束等特性;(2)數(shù)據(jù)的動(dòng)態(tài)特性,這要緊包含
對數(shù)據(jù)操作的方法。在數(shù)據(jù)庫應(yīng)用系統(tǒng)中,建立反映客觀信息范疇的數(shù)據(jù)模型是數(shù)據(jù)庫應(yīng)
用系統(tǒng)設(shè)計(jì)中最為重要的,也最基本的步驟之一,它是連接客觀信息世界與數(shù)據(jù)庫系統(tǒng)數(shù)
據(jù)邏輯組織的橋梁。也是計(jì)算機(jī)專業(yè)人員與非計(jì)算機(jī)專業(yè)的用戶之間進(jìn)行交流的共同基
礎(chǔ)。這里我們將要介紹的數(shù)據(jù)模型就是實(shí)體聯(lián)系數(shù)據(jù)模型(又稱E—R數(shù)據(jù)模型),它與
傳統(tǒng)的數(shù)據(jù)模型是完全不一致的。E—R數(shù)據(jù)模型是面向現(xiàn)實(shí)世界,而不是面向?qū)崿F(xiàn)方法
的,它要緊是用于描述現(xiàn)實(shí)信息世界中數(shù)據(jù)的靜態(tài)特性。而不涉及數(shù)據(jù)的處理過程。但由
于它簡單易學(xué),因而在數(shù)據(jù)庫系統(tǒng)應(yīng)用的設(shè)計(jì)中,得到了廣泛應(yīng)用。
E-R數(shù)據(jù)模型是P.P.Chen在1976年提出的,它為數(shù)據(jù)庫系統(tǒng)應(yīng)用的設(shè)計(jì)人員提供了三個(gè)
基本的模型描述成分,它們是實(shí)體、聯(lián)系與屬性。E-R數(shù)據(jù)模型就是利用這三個(gè)成分來描述
反映一個(gè)客觀信息世界內(nèi)容的數(shù)據(jù)模型。在數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計(jì)中,通常還需要將這一數(shù)
據(jù)模型轉(zhuǎn)換為各數(shù)據(jù)庫管理系統(tǒng)所支持的具體數(shù)據(jù)模型,即層次數(shù)據(jù)模型、網(wǎng)狀數(shù)據(jù)模型
與關(guān)系數(shù)據(jù)模型等。由此我們也能夠看出E-R數(shù)據(jù)模型是從現(xiàn)實(shí)信息世界到數(shù)據(jù)庫系統(tǒng)中數(shù)
據(jù)邏輯組織結(jié)構(gòu)設(shè)計(jì)之間的一個(gè)中間階段,只因此是這樣,要緊是由于假如直接將現(xiàn)實(shí)世
界的信息,構(gòu)造成某個(gè)DBMS所能同意的數(shù)據(jù)邏輯組織結(jié)構(gòu),其工作往往是十分復(fù)雜而且難
度也很大,應(yīng)用設(shè)計(jì)人員不僅要考慮現(xiàn)實(shí)世界各類信息及其內(nèi)在的聯(lián)系,與各類具體應(yīng)用
對數(shù)據(jù)處理的要求,而且還要考慮使用某種特定的數(shù)據(jù)庫系統(tǒng)后,所面臨的各類條件限
制,這樣就大大增加了應(yīng)用系統(tǒng)設(shè)計(jì)的復(fù)雜性。
下面我們就介紹一下E-R數(shù)據(jù)模型中的三個(gè)基本要素,即實(shí)體、聯(lián)系與屬性的有關(guān)
基本知識。
[1]實(shí)體
數(shù)據(jù)是用來描述現(xiàn)實(shí)世界中各類事物的。而要描述的對象是形形色色的,有具體的,
也有抽象的;有物理上存在的,也有是概念性的;如張三、汽車、運(yùn)動(dòng)、興趣、神靈等。
這些對象的共同特征是能夠相互有區(qū)別,否則就會(huì)被認(rèn)為是同一種對象。凡是能夠相互區(qū)
別開并能夠被我們所識別的事、物、概念等對象均可認(rèn)為是實(shí)體。它是具有共同某些特征
的一類具體實(shí)體,即可認(rèn)為是一實(shí)體集合,對這一集合中所有實(shí)體共同特征的描述,稱之
實(shí)體型。實(shí)體集中的各具體實(shí)體,稱之該實(shí)體型的值或者實(shí)體值。關(guān)于同一實(shí)體集中的不
一致實(shí)體其特征值不完全相同,并由此可加以區(qū)分。如學(xué)生實(shí)體集,事實(shí)上體型能夠通過
學(xué)號、姓名、年齡等特征加以描述。學(xué)生實(shí)體集中的不一致的學(xué)生實(shí)體,通過其不一致的
學(xué)號又可加以區(qū)分。比如學(xué)號為881001姓名為李平的學(xué)生是一個(gè)具體實(shí)體,顯然不一致于
學(xué)號為881002姓名為王明的學(xué)生這個(gè)具體實(shí)體。
[2]聯(lián)系
在現(xiàn)實(shí)世界中,任何事物都不是孤立存在的。實(shí)體之間存在著各類相互聯(lián)系,比如教
師與學(xué)生之間至少存在一種聯(lián)系,即“教學(xué)”聯(lián)系,商店與商品之間存在一種‘供應(yīng)'聯(lián)
系,這些都是不一致類型的實(shí)體之間存在的聯(lián)系。還有一種聯(lián)系是存在于同一類型實(shí)體之
間的,比如學(xué)生實(shí)體型里,某一學(xué)生是班長,顯然他與其他學(xué)生間也存在著一種“領(lǐng)導(dǎo)”
聯(lián)系。在E-R數(shù)據(jù)模型中,通常將不一致實(shí)體型之間存在的聯(lián)系歸納成三種不一致類
型,它們是:(1)一對一的聯(lián)系。其定義是:關(guān)于實(shí)體型A中的一個(gè)實(shí)體,在實(shí)體型B
中至多有一個(gè)實(shí)體與之對應(yīng),反之關(guān)于實(shí)體型B中的一個(gè)實(shí)體,在實(shí)體型A中至多有一個(gè)
實(shí)體與之對應(yīng)。這樣的聯(lián)系被稱之是一對一的聯(lián)系。比如兩個(gè)實(shí)體型分別為國家與總統(tǒng),
顯然,一個(gè)國家只有一個(gè)總統(tǒng),而一個(gè)總統(tǒng)只能對應(yīng)于一個(gè)國家;又如系與系主任兩個(gè)實(shí)
體型,一個(gè)系只能有一名系主任,而一個(gè)系主任只能領(lǐng)導(dǎo)一個(gè)系。這些顯然都是兩種實(shí)體
型之間一對一聯(lián)系的情況。通常又將這種聯(lián)系記為1:1的聯(lián)系。(2)一對多的聯(lián)系。其
定義是:關(guān)于實(shí)體型A中的一個(gè)實(shí)體,實(shí)體型B中能夠有若干個(gè)實(shí)體與之對應(yīng);反之,關(guān)
于實(shí)體B中的一個(gè)實(shí)體,則實(shí)體型A中只能有一個(gè)實(shí)體與之對應(yīng)。這樣的聯(lián)系被稱之是一
對多的聯(lián)系,比如兩個(gè)實(shí)體型分別為系與教師,一個(gè)系能夠有若干教師,一個(gè)教師只能對
應(yīng)一個(gè)系,顯然這是兩種實(shí)體型之間一對多的聯(lián)系。通常將這種聯(lián)系記為1:N的聯(lián)系。1:
1的聯(lián)系有的時(shí)候可看成是1:N的聯(lián)系的一種特殊情況。(3)多對多的聯(lián)系。其定義
是:關(guān)于實(shí)體型A中的一個(gè)實(shí)體,實(shí)體型B中能夠有若干個(gè)實(shí)體于之對應(yīng);反之,關(guān)于實(shí)
體型B中的一個(gè)實(shí)體,則實(shí)體型A中也有若干個(gè)實(shí)體與之對應(yīng),這樣的聯(lián)系被稱之是多對
多的聯(lián)系。比如兩個(gè)實(shí)體型分別為教師與課程,一個(gè)教師能夠教若干門課,一門課又能夠
有若干個(gè)教師講。通常將這種聯(lián)系記為M:N的聯(lián)系。以上介紹的三種類型的聯(lián)系不僅能夠
用于描述二個(gè)不一致類型的實(shí)體,還能夠用于描述多個(gè)不一致類型的實(shí)體。如在現(xiàn)實(shí)世界
中,存在著許多多個(gè)實(shí)體型相互之間都有聯(lián)系的情況。如教師、課程、學(xué)生三個(gè)實(shí)體型之
間就存在一種聯(lián)系,一個(gè)教師能夠教若干門課,一門課又能夠有若干個(gè)教師教授;一個(gè)教
師能夠教若干學(xué)生,一學(xué)生又能夠有若干個(gè)教師教;一門課能夠有若干學(xué)生選,一學(xué)生又
能夠選若干門課。有的時(shí)候?yàn)榱朔奖阄覀円材軌驅(qū)⑦@三個(gè)實(shí)體型之間聯(lián)系,分解成每兩個(gè)
實(shí)體型之間均存在一個(gè)多對多的聯(lián)系.
最后我們再介紹一種較為特殊的聯(lián)系,這就是同一實(shí)體型中的不一致的具體實(shí)體之間
也能夠存在有某聯(lián)系,如職工實(shí)體型,在這一實(shí)體型中的實(shí)體有普遍職工,也有經(jīng)理,經(jīng)
理與職工之間有一種領(lǐng)導(dǎo)與被領(lǐng)導(dǎo)的關(guān)系。在E-R數(shù)據(jù)模型中,通常我們將這種特殊的
聯(lián)系,稱之ISA聯(lián)系。
[3]屬性
實(shí)體型是對實(shí)體集合中所有實(shí)體共同描述特征的集合,這些實(shí)體所共有的描述特征就
稱之實(shí)體的屬性。如學(xué)生實(shí)體型,其共有的描述特征通常有學(xué)號、姓名、年齡、性別等,
它們都是學(xué)生實(shí)體型的屬性。這些屬性的一組值就表示了一個(gè)具體的實(shí)體。在一個(gè)具體的
實(shí)體型中,其中的每一個(gè)屬性都有其取值范圍,這一范圍稱之屬性的值域。一個(gè)屬性的值
域能夠是整數(shù)、浮點(diǎn)數(shù)、字符串等。如學(xué)生實(shí)體型中的年齡屬性的值域就是一定區(qū)間中的
整數(shù),而姓名屬性的值域就是符合一定要求的字符串等。實(shí)體型中的某個(gè)(些)屬性的取
值能夠用來唯一區(qū)分實(shí)體型中具體實(shí)體,如學(xué)生實(shí)體型中的學(xué)號屬性的取值就能夠用來區(qū)
分每一個(gè)學(xué)生。這種屬性又可稱之該實(shí)體型的標(biāo)識碼。
不僅實(shí)體型有屬性,聯(lián)系也能夠有屬性,如學(xué)生與課程這兩個(gè)實(shí)體型,“選課”是它
們之間的一種聯(lián)系,學(xué)生選修某門課程取得了某個(gè)成績,顯然成績描述是的一個(gè)屬性,但
它既不是學(xué)生實(shí)體型中的一個(gè)屬性,也不是課程實(shí)體型中的一個(gè)屬性。而成績屬性的具體
取值,既依靠于某個(gè)具體的學(xué)生,又依靠于某個(gè)具體的課程,因此我們將成績屬性定義為
是學(xué)生與課程這兩個(gè)實(shí)體型之間選課聯(lián)系的屬性。又如機(jī)器與零件這兩個(gè)實(shí)體型,“構(gòu)
造”是它們之間的一種聯(lián)系,數(shù)量這一屬性,即需要多少數(shù)量的零件構(gòu)造某一個(gè)機(jī)器,則
是構(gòu)造這一聯(lián)系的屬性。
充分認(rèn)識與懂得聯(lián)系能夠有屬性這一概念,關(guān)于正確地建立或者懂得E—R數(shù)據(jù)模
型,與建立或者懂得數(shù)據(jù)庫的數(shù)據(jù)邏輯組織結(jié)構(gòu)都具有十分重要的意義。
實(shí)體、屬性與聯(lián)系三個(gè)基本要素的概念是有明確區(qū)分的,但是關(guān)于某個(gè)具體數(shù)據(jù)對
象,畢竟它應(yīng)該被認(rèn)為是實(shí)體,還是屬性或者聯(lián)系,常常需要根據(jù)具體應(yīng)用背景與用戶的
觀點(diǎn),方可確定。
1.3.2模型的表示
前面,我們介紹E-R數(shù)據(jù)模型中的三個(gè)基本的要素,這里我們將介紹使用并描述E
-R數(shù)據(jù)模型。使用E-R數(shù)據(jù)模型來分析描述現(xiàn)實(shí)信息世界中的各類信息對象的要緊分
析步驟如下:(1)首先根據(jù)數(shù)據(jù)庫系統(tǒng)應(yīng)用的整體要求,確定所涉及的現(xiàn)實(shí)信息世界中的
所有信息對象的范圍。(2)根據(jù)第一步驟的結(jié)論,確定能夠描述所要求所有信息對象的各
實(shí)體及屬性。(3)根據(jù)(1)、(2)二個(gè)步驟的結(jié)論,確定能夠描述所要求所有信息對象
的各實(shí)體間的聯(lián)系。(4)根據(jù)(3)步驟的結(jié)論,確定能夠描述所要求所有信息對象的各
實(shí)體間的聯(lián)系的屬性。在完成了上述的分析步驟,就能夠獲得能夠描述現(xiàn)實(shí)信息世界的E
—R數(shù)據(jù)模型。
為了能夠形象地描述出E—R數(shù)據(jù)模型,這里我們介紹一種E—R數(shù)據(jù)模型的表示方
法,即用長方型來表示實(shí)體類型,聯(lián)系用菱型框及與實(shí)體型相連的線表示,將聯(lián)系的類型
寫在線上或者線的鄰近,在長方形框內(nèi)與菱形框內(nèi)分別寫上實(shí)體型名稱與聯(lián)系名稱,用橢
圓表示實(shí)體類型與聯(lián)系的屬性,將其與所描述的相應(yīng)的實(shí)體類型或者聯(lián)系用線相連,在橢
圓框內(nèi)寫上屬性的名稱。這樣我們就能夠得到一個(gè)能夠較好地描繪出實(shí)體、實(shí)體與實(shí)體之
間相互聯(lián)系與有關(guān)實(shí)體與聯(lián)系屬性的結(jié)構(gòu)圖,這個(gè)圖通常就被稱之E-R圖。獲得E-R
圖的全部過程通常就被稱之E-R圖方法。
最后為了說明上面我們所介紹的有關(guān)E-R圖的建立與表示方法,這里我們介紹一個(gè)
制造工廠數(shù)據(jù)庫應(yīng)用系統(tǒng)中所涉及的部分信息對象所構(gòu)成的E—R圖。如圖1.5所示。
圖1.5制造工廠信息的E-R圖
在圖1.5中,我們共描述了五個(gè)實(shí)體類型,它們分別是部門、職工、工程、供應(yīng)商與零
件實(shí)體型,這些實(shí)體型用長方形加以表示。并描述了這五個(gè)實(shí)體型間的相互聯(lián)系,這些聯(lián)
系分別是部門與職工實(shí)體型間一對多的“所屬”聯(lián)系;職工與工程型實(shí)體間多對多的“工
作”與一對一“管理”兩種聯(lián)系;工程與零件實(shí)體型間多對多的“所需”聯(lián)系;工程、供
應(yīng)商與零件三個(gè)實(shí)體型間相互多對多的“供應(yīng)”聯(lián)系。這些聯(lián)系用菱形加以表示。最后作
為示意,我們分別給出了零件實(shí)體型的三個(gè)屬性描述與職工與工程型實(shí)體間“工作”聯(lián)系
的屬性描述,這些屬性用橢圓加以表示。
目前實(shí)體關(guān)系數(shù)據(jù)模型及其E—R圖方法已被廣泛地應(yīng)用于數(shù)據(jù)庫應(yīng)用系統(tǒng)的概念設(shè)
計(jì)。由于E-R圖直觀易懂,通過它,計(jì)算機(jī)專業(yè)人員與非計(jì)算機(jī)專業(yè)人員能夠進(jìn)行直接
地交流與合作,同時(shí)使用E-R圖,能夠很方便、真實(shí)與合理地描述出一個(gè)具體數(shù)據(jù)庫應(yīng)
用系統(tǒng)的信息結(jié)構(gòu),并以此作為進(jìn)一步設(shè)計(jì)數(shù)據(jù)庫應(yīng)用系統(tǒng)的基礎(chǔ)。因此目前實(shí)體關(guān)系數(shù)
據(jù)模型及其E-R圖方法還是很受歡迎的。
1.4數(shù)據(jù)模型與數(shù)據(jù)庫系統(tǒng)
本節(jié)要緊介紹常用的三種數(shù)據(jù)庫系統(tǒng)所支持的數(shù)據(jù)模型有關(guān)基本知識,與與數(shù)據(jù)模型
相對應(yīng)的數(shù)據(jù)庫的基本情況。
1.4.1層次數(shù)據(jù)模型
層次數(shù)據(jù)模型是定義在E-R數(shù)據(jù)模型基礎(chǔ)之上一種數(shù)據(jù)模型,它與層次數(shù)據(jù)庫系統(tǒng)
中數(shù)據(jù)邏輯組織結(jié)構(gòu)是一致的。其具體定義如下:(1)對E—R數(shù)據(jù)模型中的聯(lián)系類型加
以限制,只容許是一對多的聯(lián)系(包含一對一聯(lián)系),在此基礎(chǔ)上,用實(shí)體、屬性與聯(lián)系
這三個(gè)基本要素描述客觀信息世界中的信息結(jié)構(gòu)。(2)若將實(shí)體抽象表示為一結(jié)點(diǎn),聯(lián)系
抽象表示為一有向線段,忽視屬性,所得到的E-R數(shù)據(jù)模型的抽象拓?fù)鋱D,滿足有向樹
的定義,即:M=N-1;其中:M為有向線段總數(shù);N為結(jié)點(diǎn)總數(shù)。該拓?fù)鋱D有下列特
點(diǎn):(A)有且僅有一個(gè)結(jié)點(diǎn)無雙親結(jié)點(diǎn),此結(jié)點(diǎn)稱之樹的根。(B)除根結(jié)點(diǎn)外,其它
結(jié)點(diǎn)有且僅有一個(gè)雙親結(jié)點(diǎn)。滿足以上兩條約束的E—R數(shù)據(jù)模型,就可稱之是層次數(shù)據(jù)
模型,在層次數(shù)據(jù)模型中,用長方形表示實(shí)體型;將長方形分為若干方塊,表示實(shí)體型的
各屬性;用有向線段表示各實(shí)體型之間的聯(lián)系。這描述所得到的圖形稱之層次數(shù)據(jù)模型的
結(jié)構(gòu)圖。
圖L6學(xué)校行政管理機(jī)構(gòu)的E—R圖與層次數(shù)據(jù)模型結(jié)構(gòu)圖
在現(xiàn)實(shí)世界中,有許多層次結(jié)構(gòu)的例子,如在行政管理部門中,部下設(shè)許多局,局下
設(shè)許多處,處下設(shè)許多科等。這里我們給出一學(xué)校的行政管理機(jī)構(gòu)的E-R圖與層次數(shù)據(jù)
模型結(jié)構(gòu)圖,作為示例,如圖1.6所示。
在如圖1.6所示的例子中,其數(shù)據(jù)模型結(jié)構(gòu)圖如圖1.6的右半部所示,顯然它滿足樹的
定義,而其中各實(shí)體型之間的相互聯(lián)系均為一對多的聯(lián)系,因此說這是個(gè)典型的層次數(shù)據(jù)
模型結(jié)構(gòu)。
1.4.2層次數(shù)據(jù)庫系統(tǒng)
層次數(shù)據(jù)庫系統(tǒng)的應(yīng)用流行于七十年代,目前已較少使用,但它在數(shù)據(jù)庫的進(jìn)展過程
中,扮演過重要的角色。在這一小節(jié),我們將介紹層次數(shù)據(jù)庫的數(shù)據(jù)描述,數(shù)據(jù)操縱的定
義與基本過程。重點(diǎn)介紹層次數(shù)據(jù)模型中的實(shí)體、屬性與聯(lián)系在層次數(shù)據(jù)庫中是如何定義
與操縱的。這里以IBM公司的IMS層次數(shù)據(jù)庫系統(tǒng)為例,來說明有關(guān)的情況。
[1]層次數(shù)據(jù)庫概念層數(shù)據(jù)邏輯組織結(jié)構(gòu)的設(shè)計(jì)與描述
在將現(xiàn)實(shí)世界的信息結(jié)構(gòu)用E-R數(shù)據(jù)模型(E—R圖)描述出來后,再將所獲得的
E-R數(shù)據(jù)模型轉(zhuǎn)換成層次數(shù)據(jù)模型,這時(shí)就能夠進(jìn)行層次數(shù)據(jù)庫概念層數(shù)據(jù)邏輯組織結(jié)
構(gòu)的設(shè)計(jì)了。在設(shè)計(jì)概念層數(shù)據(jù)邏輯組織結(jié)構(gòu)時(shí),通常將實(shí)體型定義為片斷型,實(shí)體型的
屬性定義為片斷型的字?jǐn)?,并通過指定片斷的雙親片斷,定義片斷型之間的聯(lián)系,由此將
層次數(shù)據(jù)模型的定義描述轉(zhuǎn)換為層次數(shù)據(jù)庫概念層數(shù)據(jù)邏輯組織結(jié)構(gòu)。并將這一數(shù)據(jù)模型
結(jié)構(gòu),稱之是IMS中的物理數(shù)據(jù)庫記錄型。需要說明的是,這里講的物理數(shù)據(jù)庫并不是
指存儲在物理設(shè)備上的數(shù)據(jù)庫,即與數(shù)據(jù)庫的物理存儲結(jié)構(gòu)無關(guān)。
TEACHER
圖1.7學(xué)校行政管理機(jī)構(gòu)的邏輯組織結(jié)構(gòu)
我們以一個(gè)簡單例子來說明有關(guān)情況,如圖1.7所示,這是一學(xué)校行政管理機(jī)構(gòu)的邏輯
組織結(jié)構(gòu),若學(xué)校有若干系(DEPT),每個(gè)系有若干班級(CLASS),每個(gè)班有若干學(xué)生
(STUDENT),每個(gè)系還有若干教師(TEACHER)。其中:數(shù)據(jù)模型中的片斷型有
DEPT、CLASS.STUDENT,TEACHER,各片斷型中的字?jǐn)喾謩e是DEPT(DNO-系編
號,DNA-系名,DMA-系主任),CLASS(CNO-班級編號,CSK-專業(yè)),STUDENT
(SNO-學(xué)生編號,SNA-姓名,SAG-年齡),TEACHER(TNO-教師編號,TNA-教師姓
名,TAG-教師年齡)。整個(gè)數(shù)據(jù)結(jié)構(gòu)命名為DTCS。這里TEACHER與CLASS片斷型稱之是
DEPT片斷型的下屬片斷,同樣STUDENR稱之是CLASS的下屬片斷。DEPT又可稱之是
TEACHER與CLASS的雙親片斷(在這里它又是根片斷),TEACHER與CLASS又可互稱之
兄弟片斷。整個(gè)數(shù)據(jù)模型結(jié)構(gòu)DTCS稱之是一物理數(shù)據(jù)庫記錄型,其每一個(gè)記錄值是由根片
斷的一個(gè)值及其所有相應(yīng)的下屬片斷的值所構(gòu)成。一個(gè)物理數(shù)據(jù)庫有多少個(gè)根片斷值,則
它就有多少個(gè)物理數(shù)據(jù)庫記錄。如學(xué)校有20個(gè)系,它的物理數(shù)據(jù)庫就有20個(gè)記錄。每一條
記錄包含了某個(gè)系及其該系所有教師、班級與學(xué)生的全部信息。通常一個(gè)IMS數(shù)據(jù)庫是
由若干這樣的物理數(shù)據(jù)庫記錄所構(gòu)成。
最后我們給出上述實(shí)例的物理數(shù)據(jù)庫的定義描述。該描述要緊包含下列內(nèi)容:(1)命
名物理數(shù)據(jù)庫,規(guī)定存儲組織方法與存取方法,指定物理設(shè)備及塊的大小。(2)命名各片
斷,指出使用的指針類型及其片斷的雙親片斷。(3)命名各片斷中的字段名、數(shù)據(jù)類型與
長度。圖2.5的物理數(shù)據(jù)庫的具體描述內(nèi)容如下:
DBDNAME=DTCS,ACCESS=HDAM
DATASETDD1=DTCSHDAM,DEVICE=3330,BLOCK=1024
SEGMNAME=DEPT,BYTES=20,FREQ=20,PTR=T
FIELDNAME=(DNO,SEQ,U),BYTES=4,START=1,TYPE=C
FIELDNAME=DNA,BYTES=8,START=5,TYPE=C
FIELDNAME=DMA,BYTES=8,START=13,TYPE=C
SEGMNAME=TEACHER,BYTES=14,FREQ=50,PTR=T,PARENT=DEPT
FIELDNAME=(TNO,SEQ,U),BYTES=4,START=I,TYPE=C
FIELDNAME=TNA,BYTES=8,START=5,TYPE=C
FIELDNAME=TAG,BYTES=2,START=13,TYPE=C
SEGMNAME=CLASS,BYTES=14,FREQ=60,PTR=T,PARENT=DEPT
FIELDNAME=(CNO,SEQ,U),BYTES=4,START=1,TYPE=C
FIELDNAME=CSK,BYTES=10,START=5,TYPE=C
SEGMNAME=STUDENT,BYTES=15,FREQ=300,PTR=T,PARENT=DEPT
FIELDNAME=(SNO,SEQ,U),BYTES=5,START=1,TYPE=C
FIELDNAME=SNA,BYTES=8,START=6,TYPE=C
FIELDNAME=SAG,BYTES=2,START=14,TYPE=C
DBDGEN
FINISH
END
現(xiàn)將上述描述中的部分語句的含義說明如下:
①DBD語句:給所要描述的物理數(shù)據(jù)庫取名,規(guī)定其數(shù)據(jù)庫的存取方法,在IMS中有四
種存取方法,它們是:(A)層次順序存取方法(HSAM),馬上數(shù)據(jù)庫中的所有片斷值,
按照其層次數(shù)據(jù)結(jié)構(gòu)從上而下、從左而右的順序存放。(B)層次索引存取方法
(HISAM),馬上數(shù)據(jù)庫中的所有根片斷值,用指針連接起來或者單獨(dú)存放,并建立其索
引;其它下屬片斷值,按照其層次數(shù)據(jù)結(jié)構(gòu)從上而下、從左而右的順序存放。(C)層次直
接存取方法(HDAM),馬上數(shù)據(jù)庫中的所有片斷值,按照其層次數(shù)據(jù)結(jié)構(gòu)從上而下、從
左而右的順序用指針連接起來存放。(D)層次索引直接存取方法(HIDAM),馬上數(shù)據(jù)
庫中的所有片斷值,按照其層次數(shù)據(jù)結(jié)構(gòu)從上而下、從左而右的順序用指針(PTR=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度人美容院與時(shí)尚博主互動(dòng)直播合作協(xié)議
- 2025年度教育貸款借款合同
- 2025年度居住權(quán)租賃合同解除與糾紛調(diào)解協(xié)議
- 2025年度合伙份額轉(zhuǎn)讓與體育產(chǎn)業(yè)投資合作協(xié)議
- 2025年度游戲賬號社區(qū)建設(shè)與活動(dòng)策劃合同
- 2025年度個(gè)性化教育資料打印服務(wù)合同
- 2025年新能源汽車行業(yè)分析:新能源汽車市場需求持續(xù)釋放
- 2025年包裝設(shè)備行業(yè)政策分析:包裝設(shè)備行業(yè)標(biāo)準(zhǔn)確保設(shè)備安全
- 2025年哈爾濱城市職業(yè)學(xué)院單招職業(yè)技能測試題庫完美版
- 2025貴州省安全員C證考試題庫
- 【人教版化學(xué)】選擇性必修2 知識點(diǎn)默寫小紙條(答案背誦版)
- 初中生心理健康教育講座課件
- 2024年司法考試完整真題及答案
- 部編高教版2023·職業(yè)模塊 中職語文 《寧夏閩寧鎮(zhèn):昔日干沙灘今日金沙灘》課件
- 企業(yè)對外溝通與形象塑造制度
- 《前列腺增生》課件
- 整體法蘭強(qiáng)度校核計(jì)算表(設(shè)計(jì):zxg)
- 供應(yīng)鏈經(jīng)理年度工作計(jì)劃
- 2024年甘肅省公務(wù)員錄用考試《行測》真題卷及答案解析
- 2024年執(zhí)業(yè)藥師繼續(xù)教育專業(yè)答案
- 中國高血壓防治指南(2024年修訂版)要點(diǎn)解讀
評論
0/150
提交評論