數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用課件_第1頁(yè)
數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用課件_第2頁(yè)
數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用課件_第3頁(yè)
數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用課件_第4頁(yè)
數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用課件_第5頁(yè)
已閱讀5頁(yè),還剩327頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Web資料庫(kù)應(yīng)用

2.1關(guān)係資料庫(kù)

關(guān)係資料庫(kù)系統(tǒng)是支持關(guān)係模型的資料庫(kù)系統(tǒng)。關(guān)係模型由關(guān)係數(shù)據(jù)結(jié)構(gòu)、關(guān)係操作集合和關(guān)係完整性約束三部分組成。

關(guān)係資料庫(kù)是表的集合,資料庫(kù)中的表,數(shù)學(xué)家稱為關(guān)係。關(guān)係資料庫(kù)中還定義了關(guān)係操作和完整性約束,關(guān)係操作就是對(duì)表中的數(shù)據(jù)的處理、查詢,完整性約束就是表中的數(shù)據(jù)要滿足的條件,這些條件由資料庫(kù)系統(tǒng)自動(dòng)維護(hù),產(chǎn)生違反這些約束條件的對(duì)數(shù)據(jù)的操作會(huì)被拒絕執(zhí)行。

2.1.1關(guān)係數(shù)據(jù)結(jié)構(gòu)

在關(guān)係模型中,無(wú)論是實(shí)體還是實(shí)體之間的聯(lián)繫均由單一的結(jié)構(gòu)即關(guān)係(表)來表示。關(guān)係模型是建立在集合代數(shù)的基礎(chǔ)上的。

1關(guān)係的定義在用戶觀點(diǎn)下,關(guān)係模型中數(shù)據(jù)的邏輯結(jié)構(gòu)是一張二維表。二維表的每一列稱為屬性。每個(gè)屬性有一個(gè)取值範(fàn)圍,稱為值域。每個(gè)屬性對(duì)應(yīng)一個(gè)值域。下麵是二維表的一個(gè)實(shí)例。

學(xué)號(hào)姓名性別1張三男2李四男2關(guān)係中的基本名詞(1)關(guān)鍵字能唯一標(biāo)識(shí)一行記錄或元組的一個(gè)或一組屬性。(2)候選關(guān)鍵字(Candidatekey)和主關(guān)鍵字(Primarykey)能作為關(guān)鍵字的屬性可能有很多,這些屬性稱為候選關(guān)鍵字。為數(shù)據(jù)管理方便,若一個(gè)關(guān)係有多個(gè)候選關(guān)鍵字時(shí),指定其中一個(gè)為主關(guān)鍵字。(3)主屬性(PrimaryAttribute)和非主屬性(Non-keyAttribute)候選關(guān)鍵字中的屬性為主屬性。不包含在任何候選關(guān)鍵字中的屬性為非主屬性。3資料庫(kù)中關(guān)係的類型關(guān)係可以有三種類型:基本關(guān)係(通常稱為基本表或基表)查詢表和視圖表。

(1)基本表基本表是關(guān)係資料庫(kù)中實(shí)際存在的表,它是實(shí)際存儲(chǔ)數(shù)據(jù)的邏輯表。

(2)查詢表它是從基本表中查詢得到的,一般是臨時(shí)表。

(3)視圖表視圖表是由基本表或其他視圖表導(dǎo)出的表,它是為數(shù)據(jù)處理方便以及數(shù)據(jù)安全要求而設(shè)計(jì)的虛表,它一般是不存儲(chǔ)數(shù)據(jù)的,而只是存儲(chǔ)提取數(shù)據(jù)的條件,它的數(shù)據(jù)依賴於基本表。

4基本關(guān)係的性質(zhì)基本關(guān)係具有如下六條性質(zhì):(1)列是同性質(zhì)的,即同一列中的分量是同一類型的數(shù)據(jù)。(2)關(guān)係中的列又稱為屬性,並賦予屬性名。不同列的屬性名不同。不同列可以取相同的數(shù)據(jù)類型。(3)列的次序可以任意交換。(4)任意兩個(gè)元組不能完全相同。(5)行的次序可以任意交換。(6)列具有原子性,即每一列值是不可分的資料項(xiàng)目5關(guān)係模式關(guān)係模式是對(duì)關(guān)係的描述,可以理解為表的結(jié)構(gòu)定義。關(guān)係實(shí)際上就是關(guān)係模式在某一時(shí)刻的狀態(tài)或內(nèi)容。也就是說,關(guān)係模式是型,關(guān)係是它的值。

6關(guān)係資料庫(kù)在關(guān)係模型中,實(shí)體以及實(shí)體間的聯(lián)繫都是用關(guān)係來表示。在一個(gè)給定應(yīng)用中,所有實(shí)體及實(shí)體之間聯(lián)繫的集合構(gòu)成一個(gè)關(guān)係資料庫(kù)。關(guān)係資料庫(kù)也有型和值之分。

2.1.2關(guān)係操作

關(guān)係模型給出了關(guān)係操作的能力,但不對(duì)具體的RDBMS給出具體的語(yǔ)法要求。關(guān)係操作語(yǔ)言靈活方便,表達(dá)能力和功能強(qiáng)大。關(guān)係模型的數(shù)據(jù)操作採(cǎi)用集合操作方式,即操作對(duì)象和結(jié)果都是集合。關(guān)係模型中常用的關(guān)係操作包括數(shù)據(jù)查詢、數(shù)據(jù)維護(hù)和數(shù)據(jù)控制三大功能。數(shù)據(jù)查詢指數(shù)據(jù)檢索、統(tǒng)計(jì)、排序等功能;數(shù)據(jù)維護(hù)指數(shù)據(jù)的增加、刪除、修改等數(shù)據(jù)的更新功能;數(shù)據(jù)控制是為了保證數(shù)據(jù)的安全性和完整性而採(cǎi)用的數(shù)據(jù)存儲(chǔ)控制及併發(fā)控制等功能。

2.1.3關(guān)係的完整性

1實(shí)體完整性現(xiàn)實(shí)世界中的實(shí)體是可區(qū)分的,即它們具有某種唯一性標(biāo)識(shí)。相應(yīng)地,關(guān)係模型中以主鍵(主關(guān)鍵字)作為唯一性標(biāo)識(shí)。主鍵中的屬性即主屬性不能取空值。所謂空值就是“不知道”或“無(wú)意義”的值。2參照完整性現(xiàn)實(shí)世界中的實(shí)體之間往往存在某種聯(lián)繫,在關(guān)係模型中實(shí)體及實(shí)體間的聯(lián)繫都是用關(guān)係來描述的。這樣就自然存在著關(guān)係與關(guān)係間的引用。

3.用戶定義的完整性

用戶定義的完整性是針對(duì)某一具體關(guān)係資料庫(kù)的約束條件,它反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語(yǔ)義要求。例如:某個(gè)屬性的取值不能為空,學(xué)生考試的成績(jī)?nèi)≈倒?fàn)圍在0到100之間。

2.2

SQL語(yǔ)言

SQL全稱是“StructuredQueryLanguage”,即結(jié)構(gòu)化查詢語(yǔ)言,它目前是關(guān)係資料庫(kù)的標(biāo)準(zhǔn)語(yǔ)言,它是在1974年由Boyce和Chamberlin提出的。經(jīng)過不斷修改、擴(kuò)充和完善,SQL語(yǔ)言最終發(fā)展成為關(guān)係資料庫(kù)的標(biāo)準(zhǔn)語(yǔ)言。由於它功能豐富、語(yǔ)言簡(jiǎn)潔、易學(xué)易用,所以深受用戶和電腦工業(yè)界的歡迎,被各電腦公司和軟體公司廣泛採(cǎi)用。

SQL標(biāo)準(zhǔn)的影響超出了資料庫(kù)領(lǐng)域,SQL成為國(guó)際標(biāo)準(zhǔn)後,它在資料庫(kù)以外的其他領(lǐng)域也得到了重視和採(cǎi)用。在未來一段相當(dāng)長(zhǎng)的時(shí)間,SQL將是資料庫(kù)語(yǔ)言領(lǐng)域中的一個(gè)主流語(yǔ)言。

2.2.1SQL概述及特點(diǎn)

1.SQL概述

SQL是一種結(jié)構(gòu)化查詢語(yǔ)言,其功能並不象名稱所顯示的那樣僅僅是查詢,而是一個(gè)通用的、功能強(qiáng)大的關(guān)係資料庫(kù)語(yǔ)言。SQL從主要功能上可以分為4個(gè)部分:數(shù)據(jù)定義、數(shù)據(jù)查詢、數(shù)據(jù)操縱和數(shù)據(jù)控制。它是一個(gè)綜合的、通用的關(guān)係資料庫(kù)查詢語(yǔ)言。它的特點(diǎn)如下:

(1)功能一體化

(2)高度非過程化

(3)以同一種語(yǔ)法結(jié)構(gòu)提供兩種使用方式

(4)語(yǔ)言簡(jiǎn)潔,易學(xué)易用

2.SQL語(yǔ)言的基本概念

SQL支持三級(jí)模式結(jié)構(gòu),外模式對(duì)應(yīng)於視圖和部分基本表,模式對(duì)應(yīng)於基本表,內(nèi)模式對(duì)應(yīng)於存儲(chǔ)檔?;颈硎仟?dú)立存在的表,一個(gè)關(guān)係就是一個(gè)表。基本表是按數(shù)據(jù)全局邏輯模式建立的。全體基本表構(gòu)成了資料庫(kù)的模式。一個(gè)SQL模式(Schema)是表和約束的集合。視圖是從基本表或其他視圖中導(dǎo)出的表,它本身不獨(dú)立存儲(chǔ)在資料庫(kù)中,也就是說資料庫(kù)中只存放視圖的定義而不存放視圖的數(shù)據(jù),這些數(shù)據(jù)仍存放在導(dǎo)出視圖的基本表中。因此,視圖是一個(gè)虛表。2.2.2SQL數(shù)據(jù)定義

SQL的數(shù)據(jù)定義功能包括定義表、定義視圖、定義索引和定義資料庫(kù)。SQL的數(shù)據(jù)定義語(yǔ)句見下表。操作對(duì)象創(chuàng)建語(yǔ)句刪除語(yǔ)句修改語(yǔ)句基本表CREATETABLEDROPTABLEALTERTABLE索引CREATEINDEXDROPINDEXALTERINDEX視圖CREATEVIEWDROPVIEWALTERVIEW資料庫(kù)CREATEDATABASEDROPDATABASEALTERDATABASE

1.基本表的定義和維護(hù)

SQL基本表的定義和維護(hù)功能包括表的定義、修改和刪除。(1)定義基本表(CREATETABLE)

[例2-2]建立一個(gè)“學(xué)生”表,它由學(xué)號(hào)、姓名、性別、年齡、所在系五個(gè)屬性組成,年齡是整型數(shù)據(jù),其他為字元型。

CREATETABLE學(xué)生(學(xué)號(hào)CHAR(5),

姓名CHAR(20),

年齡INT,

性別CHAR(2),

所在系CHAR(20),

)(2)修改基本表(ALTERTABLE)

[例2-6]刪除“學(xué)生”表中“入學(xué)時(shí)間”列。

ALTERTABLE學(xué)生

DROPCOLUMN入學(xué)時(shí)間;

(3)

刪除基本表

[例2-7]刪除學(xué)生表

DROPTABLE學(xué)生

2.索引的定義和維護(hù)當(dāng)你閱讀一本厚書時(shí),如果你想快速找到特定的內(nèi)容,你就需要查看目錄,找到你所關(guān)心的內(nèi)容在書中的準(zhǔn)確位置——頁(yè)碼,然後直接翻到這個(gè)位置。索引對(duì)於表,就相當(dāng)於書的目錄。索引可以提高數(shù)據(jù)查詢速度??梢詫?duì)頻繁查詢的表增加索引。只有按有索引的列查詢,索引才有作用。

(1)建立索引(CREATEINDEX)

[例2-8]為學(xué)生表建立索引,按學(xué)號(hào)昇冪建唯一索引。

CREATEUNIQUEINDEXStusnoON學(xué)生

(學(xué)號(hào))(2)刪除索引(DROPINDEX)

[例2-9]DROPINDEX學(xué)生.Stusno2.2.3SQL數(shù)據(jù)查詢

資料庫(kù)查詢是資料庫(kù)的核心操作,查詢就是從資料庫(kù)中挑選、提取所需要的數(shù)據(jù)。SQL提供了SELECT語(yǔ)句進(jìn)行資料庫(kù)的查詢,該語(yǔ)句使用方式靈活、功能強(qiáng)大。

SELECT語(yǔ)句的語(yǔ)法格式為:SELECT[ALL|DISTINCT]<目標(biāo)列表達(dá)式>[,<目標(biāo)列表達(dá)式>]...FROM<表名或視圖名>[,<表名或視圖名>]...[WHERE<行選擇條件>][GROUPBY<列名1>[HAVING<組選擇條件>]][ORDERBY<列名2>[ASC|DESC]];

1.簡(jiǎn)單查詢簡(jiǎn)單查詢是指從一個(gè)表中進(jìn)行查詢,也叫單表查詢。如選擇一個(gè)表中的某些列、某些行。(1)查詢指定列[例2-10]查詢?nèi)w學(xué)生的姓名與學(xué)號(hào)。學(xué)生表中有很多列:學(xué)號(hào),姓名,年齡,性別,所在系,而下列語(yǔ)句只選擇學(xué)號(hào)和姓名兩列,即查詢的結(jié)果是一個(gè)只包含兩列的新關(guān)係。

SELECT學(xué)號(hào),姓名

FROM學(xué)生;(2)查詢?nèi)苛衃例2-11]查詢學(xué)生表的全部列:

SELECT*FROM學(xué)生也可以寫為:

SELECT學(xué)號(hào),姓名,年齡,性別,所在系(3)查詢經(jīng)過計(jì)算的值

SELECT子句可以包含運(yùn)算式,運(yùn)算對(duì)象可以是常量或?qū)傩?。[例2-12]查詢5年之後學(xué)生的年齡。假如資料庫(kù)中學(xué)生的年齡是今年的年齡。

SELECT學(xué)號(hào),姓名,年齡+5FROM學(xué)生(4)消除取值重複的行一個(gè)表中兩個(gè)本來不完全相同的行,選擇部分列後,可能完全相同了。[例2-13]查詢選修了課程的學(xué)號(hào)。

SELECT學(xué)號(hào)

FROM選課如果要去掉重複行,必須指定短語(yǔ)DISTINCT:

SELECTDISTINCT學(xué)號(hào)

FROM選課取消了重複行,結(jié)果就是選了課的學(xué)生學(xué)號(hào)。(5)查詢滿足條件的行

WHERE子句通過條件運(yùn)算式描述表中行的選擇條件。DBMS系統(tǒng)根據(jù)選擇條件掃描表中的每一行,把不符合條件的行篩選掉。WHERE子句常用的查詢條件,如下表所示:查詢條件常用謂詞比較=,>,<,>=,<=,<>,!>,!<;NOT+上述比較運(yùn)算符確定範(fàn)圍BETWEENAND,NOTBETWEENAND確定集合IN,NOTIN字元匹配LIKE,NOTLIKE空值ISNULL,ISNOTNULL多重條件AND,OR①比較[例2-14]查詢資訊系學(xué)生的名單

SELECT姓名

FROM學(xué)生

WHERE所在系='資訊系'[例2-15]查詢所有20歲以下的學(xué)生姓名和年齡

SELECT姓名,年齡

FROM學(xué)生

WHERE年齡<20[例2-16]查詢有成績(jī)不及格的學(xué)生的學(xué)號(hào)

SELECTDISTINCT學(xué)號(hào)

FROM選課

WHERE成績(jī)<60②

確定範(fàn)圍[例2-17]查詢年齡在20到23歲(包括20和23)之間的學(xué)生姓名、年齡、所在系。

SELECT姓名,年齡,所在系

FROM學(xué)生

WHERE年齡BETWEEN20AND23③

確定集合[例2-18]查詢數(shù)學(xué)系或化學(xué)系學(xué)生的姓名、性別、所在系。

SELECT姓名,性別,所在系

FROM學(xué)生

WHERE所在系

IN('數(shù)學(xué)系','化學(xué)系')④字串的匹配。[例2-19]查詢姓劉的學(xué)生的姓名、性別、所在系。

SELECT姓名,性別,所在系

FROM學(xué)生

WHERE姓名LIKE'劉%'⑤

涉及空值的查詢[例2-22]查詢選修了課程而沒參加考試的學(xué)生名單及課程號(hào)。

SELECT學(xué)號(hào),課程號(hào)

FROM選課

WHERE成績(jī)ISNULL⑥

多重條件查詢?nèi)绻樵儣l件多於兩個(gè),則要使用邏輯運(yùn)算符AND和OR連接多個(gè)條件,AND的優(yōu)先順序高於OR,但可使用括弧改變運(yùn)算順序。[例2-23]查詢電腦系姓趙的學(xué)生。

SELECT姓名

FROM學(xué)生

WHERE所在系='電腦系'AND姓名

LIKE'趙%'(6)對(duì)查詢結(jié)果排序如果沒有指定查詢結(jié)果的顯示順序,DBMS通常按其數(shù)據(jù)錄入的先後順序(物理存儲(chǔ)順序)輸出查詢結(jié)果。用戶也可以用ORDERBY子句指定按照一個(gè)或多個(gè)屬性列的昇冪(ASC)或降序(DESC)重新排列查詢結(jié)果,其中昇冪ASC為缺省值。[例2-24]查詢選修了3號(hào)課程的學(xué)生的學(xué)號(hào)及其成績(jī),查詢結(jié)果按成績(jī)的降序排列。

SELECT學(xué)號(hào),成績(jī)

FROM選課

WHERE課程號(hào)='3'ORDERBY成績(jī)DESC(7)使用集合函數(shù)為了進(jìn)一步方便用戶,增強(qiáng)檢索功能,SQL提供了許多集函數(shù),常用的集函數(shù)見下表。函數(shù)名意義COUNT([DISTINCT|ALL]*)統(tǒng)計(jì)記錄個(gè)數(shù)COUNT([DISTINCT|ALL]列名)統(tǒng)計(jì)一列中值的個(gè)數(shù)SUM([DISTINCT|ALL]列名)計(jì)算一列值的總和(此列必須是數(shù)值型)AVG([DISTINCT|ALL]列名)計(jì)算一列值的平均值(此列必須是數(shù)值型)MAX([DISTINCT|ALL]列名)求一列值中的最大值MIN([DISTINCT|ALL]列名)求一列值中的最大值[例2-25]查詢學(xué)生總?cè)藬?shù)。

SELECTCOUNT(*)

FROM學(xué)生[例2-26]查詢選修了課程的學(xué)生人數(shù)。

SELECTCOUNT(DISTINCT學(xué)號(hào))

FROM選課學(xué)生每選修一門課,在選課中都有一條相應(yīng)的記錄,而一個(gè)學(xué)生一般都要選修多門課,為避免重複計(jì)算學(xué)生人數(shù),必須在COUNT函數(shù)中用DISTINCT限定詞。(8)對(duì)查詢結(jié)果分組

GROUPBY子句可以將查詢結(jié)果表的各行按一列或多列的值分組,值相等的為一組。對(duì)查詢結(jié)果分組的目的是為了細(xì)化集函數(shù)的作用對(duì)象。如果未對(duì)查詢結(jié)果分組,集函數(shù)將作用於整個(gè)查詢結(jié)果,即整個(gè)查詢結(jié)果只有一個(gè)函數(shù)值,如上面的例題,否則,集函數(shù)將作用於每一個(gè)組,即每一組都有一個(gè)函數(shù)值。[例2-28]查詢各個(gè)課程號(hào)與相應(yīng)的選課人數(shù)。

SELECT課程號(hào),COUNT(學(xué)號(hào))

FROM選課

GROUPBY課程號(hào)該SELECT語(yǔ)句對(duì)課程表按課程號(hào)的取值進(jìn)行分組,所有具有相同課程號(hào)的行為一組,然後對(duì)每一組作用集函數(shù)COUNT以求得該組的學(xué)生人數(shù)。2.連接查詢一個(gè)資料庫(kù)中的多個(gè)表之間一般都存在某種內(nèi)在聯(lián)繫,它們共同提供有用的資訊。前面的查詢都是針對(duì)一個(gè)表進(jìn)行的。若一個(gè)查詢同時(shí)涉及兩個(gè)以上的表,則稱之為連接查詢。連接查詢實(shí)際上是關(guān)係資料庫(kù)中最主要的查詢,主要包括等值連接查詢、非等值連接查詢、自身連接查詢、外連接查詢和複合條件連接查詢。[例2-31]查詢每個(gè)學(xué)生及其選修課程的情況。學(xué)生選課情況存放在選課表中,所以本查詢實(shí)際上同時(shí)涉及學(xué)生表和選課表兩個(gè)表中的數(shù)據(jù)。這兩個(gè)表之間的聯(lián)繫是通過兩個(gè)表都具有的公共屬性學(xué)號(hào)實(shí)現(xiàn)的。要查詢學(xué)生及其選修課程的情況.就必須將這兩個(gè)表中學(xué)號(hào)相同的元組連接起來。這是一個(gè)等值連接。完成本查詢的SQL語(yǔ)句為:

SELECT學(xué)生.*,選課.*FROM學(xué)生,選課

WHERE學(xué)生.學(xué)號(hào)=選課.學(xué)號(hào)3.嵌套查詢?cè)赟QL語(yǔ)言中,一個(gè)SELECT—FROM—WHERE語(yǔ)句稱為一個(gè)查詢塊。將一個(gè)查詢塊嵌套在另一個(gè)查詢塊的WHERE子句或HAVING短語(yǔ)的條件中的查詢稱為嵌套查詢或子查詢。在嵌套查詢中,上層的查詢塊又稱為外層查詢或父查詢或主查詢,下層查詢塊又稱為內(nèi)層查詢或子查詢。SQL語(yǔ)言允許多層嵌套查詢。即一個(gè)子查詢中還可以嵌套其他子查詢。

嵌套查詢使得可以用一系列簡(jiǎn)單查詢構(gòu)成複雜的查詢,從而明顯地增強(qiáng)了SQL的查詢能力。(1)帶有IN謂詞的子查詢帶有IN渭詞的子查詢是指父查詢與子查詢之間用IN進(jìn)行連接,判斷某個(gè)屬性列值是否在子查詢的結(jié)果中。由於在嵌套查詢中,子查詢的結(jié)果往往是一個(gè)集合,所以謂詞IN是嵌套查詢中最經(jīng)常使用的謂詞。[例2-32]查詢選修了“數(shù)學(xué)”課的學(xué)生姓名。學(xué)生名和課程名分別在“學(xué)生”和“課程”表中,因此不能通過簡(jiǎn)單的查詢一個(gè)表而得到結(jié)果。實(shí)際上連接學(xué)生和課程的是“選課”表,因此這個(gè)查詢涉及到三個(gè)表:學(xué)生、課程、選課。查詢步驟如下:

在課程表中查詢“數(shù)學(xué)”課的課程號(hào)。

在選課表中找到選修了上一步得到的課程號(hào)的課程的學(xué)生學(xué)號(hào)。

在學(xué)生表中找到學(xué)號(hào)包含在上一步所得到的學(xué)號(hào)集合中的學(xué)生姓名。

SELECT學(xué)號(hào),姓名

FROM學(xué)生

WHERE學(xué)號(hào)IN(SELECT學(xué)號(hào)

FROM 選課

WHERE課程號(hào)IN(SELECT課程號(hào)

FROM課程

WHERE課程='數(shù)學(xué)'))

(2)帶有比較運(yùn)算符的子查詢帶有比較運(yùn)算符的子查詢是指父查詢與子查詢之間用比較運(yùn)算符進(jìn)行連接。當(dāng)用戶能確切知道內(nèi)層查詢返回的是單值時(shí),可以用>、<、=、>=、<=、2=或<>等比較運(yùn)算符。[例2-33]查詢與“劉剛”同一個(gè)系的學(xué)生。這個(gè)查詢分兩步:

首先在學(xué)生表找到“劉剛”所在的系。

然後在學(xué)生表中查詢所在系與上一不的查詢結(jié)果相等的學(xué)生名單。SELECT姓名FROM學(xué)生WHERE所在系=(SELECT所在系

FROM學(xué)生

WHERE姓名='劉剛')

2.2.4SQL數(shù)據(jù)操縱

在對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作時(shí),除了經(jīng)常查詢資料庫(kù)外,還要更新數(shù)據(jù)。SQL中數(shù)據(jù)更新包括插入數(shù)據(jù)(INSERT)、修改數(shù)據(jù)(UPDATE)和刪除數(shù)據(jù)(DELETE)三條語(yǔ)句。插入語(yǔ)句(INSERTINTO

)[例2-34]將一個(gè)新學(xué)生記錄(學(xué)號(hào):95005;姓名:陳??;性別:男;所在系:電腦;年齡:18歲)插入學(xué)生表中。

INSERTINTO學(xué)生

VALUES("95020","陳俊","男",18,"電腦系");

2.刪除語(yǔ)句(DELETE)[例2-35]刪除學(xué)號(hào)為95001的學(xué)生記錄。

DELETEFROM學(xué)生

WHERE學(xué)號(hào)='95001';3.修改語(yǔ)句(UPDATE

)[例2-36]將學(xué)號(hào)為95001的學(xué)生年齡改為22歲。

UPDATE學(xué)生

SET年齡=22WHERE學(xué)號(hào)='95001'

2.2.5SQL數(shù)據(jù)控制

這裏所討論的數(shù)據(jù)控制主要是指SQL語(yǔ)言的安全性控制功能,通過對(duì)數(shù)據(jù)庫(kù)用戶的使用權(quán)限加以限制而保證數(shù)據(jù)安全的重要措施。SQL語(yǔ)言的的數(shù)據(jù)控制語(yǔ)句包括授權(quán)(Grant)、收權(quán)或刪除許可權(quán)(Revoke)、拒絕訪問(Deny)三種,許可權(quán)的設(shè)置對(duì)象可以是資料庫(kù)用戶或用戶組。授權(quán)

[例2-37]將查詢成績(jī)的許可權(quán)授予所有人。

GRANTSELECTONTABLE成績(jī)TOPUBLIC2.收權(quán)語(yǔ)句資料庫(kù)管理員DBA、資料庫(kù)擁有者DBO或資料庫(kù)對(duì)象的擁有者DBOO可以通過REVOKE語(yǔ)句將其他用戶的數(shù)據(jù)操作許可權(quán)收回。

[例2-38]將用戶wp修改學(xué)生學(xué)號(hào)的許可權(quán)收回。

REVOKEUPDATE(學(xué)號(hào))

ON學(xué)生

FROMwp2.3關(guān)係數(shù)據(jù)理論

針對(duì)一個(gè)具體的問題,應(yīng)該如何構(gòu)造一個(gè)適合於它的數(shù)據(jù)模式。這是資料庫(kù)設(shè)計(jì)問題,確切地講是資料庫(kù)邏輯設(shè)計(jì)問題。關(guān)係模型有嚴(yán)格的數(shù)學(xué)理論基礎(chǔ),基於這種理論上的優(yōu)勢(shì),關(guān)係模型可以設(shè)計(jì)的更加科學(xué),關(guān)係資料庫(kù)中的問題可以更好地解決。關(guān)係資料庫(kù)規(guī)範(fàn)化理論就是資料庫(kù)邏輯設(shè)計(jì)工具。關(guān)係資料庫(kù)的規(guī)範(fàn)化理論就是解決如何設(shè)計(jì)出合理的關(guān)係資料庫(kù)模式,也就是一個(gè)資料庫(kù)中要定義哪些表,每個(gè)表有哪些屬性,表之間有哪些聯(lián)繫,而儘量地減少數(shù)據(jù)冗餘,消除插入、刪除等存在的問題。2.3.1關(guān)係模式可能存在的問題

例如,要設(shè)計(jì)一個(gè)教學(xué)管理資料庫(kù),希望在該資料庫(kù)中保存學(xué)生的學(xué)號(hào)、姓名、性別、年齡、系名、系主任和該學(xué)生選修的課程及成績(jī)資訊。若據(jù)此設(shè)計(jì)一個(gè)關(guān)係保存所有的數(shù)據(jù),關(guān)係模式為:教學(xué)(學(xué)號(hào),姓名,性別,年齡,系名,系主任,課程名,成績(jī))這個(gè)關(guān)係模式存在以下的問題:

數(shù)據(jù)冗餘大

插入異常

刪除異常。

更新異常

由於上述的問題,它是一個(gè)不合理的設(shè)計(jì)。一個(gè)合理的設(shè)計(jì)應(yīng)該儘量減少以上的問題。只有找到問題存在的原因,才能找到解決辦法。那麼出現(xiàn)上述問題的原因是什麼呢?這是因?yàn)檫@個(gè)關(guān)係模式中的數(shù)據(jù)之間的依賴關(guān)係所造成的。如果把這個(gè)單一的關(guān)係模式,分解成如下三個(gè)關(guān)係模式:學(xué)生(學(xué)號(hào),姓名,性別,年齡,所在系);系(系名,系主任);選課(學(xué)號(hào),課程名,成績(jī))

2.3.2函數(shù)依賴及規(guī)範(fàn)化

為了使資料庫(kù)模式的設(shè)計(jì)更合理,人們研究了規(guī)範(fàn)化理論。而函數(shù)依賴?yán)碚撌顷P(guān)係規(guī)範(fàn)化的理論基礎(chǔ)。函數(shù)依賴反映了同一關(guān)係中屬性間一一對(duì)應(yīng)的約束。

1.關(guān)係模式的簡(jiǎn)化表示法一般把關(guān)系模式看做一個(gè)三元組:

R(U,F(xiàn))其中,R是關(guān)係名,U是一組屬性,F(xiàn)是屬性組U上的一組數(shù)據(jù)依賴關(guān)係的集合。當(dāng)且僅當(dāng)U上的一個(gè)關(guān)係r滿足F時(shí),r稱為關(guān)係模式R(U,F(xiàn))的一個(gè)關(guān)係。

2.函數(shù)依賴

函數(shù)依賴是數(shù)據(jù)依賴的一種,函數(shù)依賴反映了同一關(guān)係中屬性間的一一對(duì)應(yīng)約束。它是現(xiàn)實(shí)世界屬性間相互聯(lián)繫的抽象,是數(shù)據(jù)內(nèi)在的性質(zhì),是語(yǔ)義的體現(xiàn)。它是資料庫(kù)規(guī)範(fàn)化理論的基礎(chǔ)。函數(shù)依賴普遍存在於現(xiàn)實(shí)生活中。例如在描述學(xué)生的關(guān)係中,可能的屬性有學(xué)號(hào),姓名,所在系等。由於一個(gè)學(xué)號(hào)只對(duì)應(yīng)於一個(gè)學(xué)生,一個(gè)學(xué)生只能屬於一個(gè)系,因此學(xué)號(hào)確定之後,該學(xué)生的姓名和所在系也唯一的確定了。類似於引數(shù)確定了,函數(shù)值也唯一確定了。起決定性的屬性相當(dāng)於引數(shù)。函數(shù)依賴記為:學(xué)號(hào)→姓名,學(xué)號(hào)→所在系。

現(xiàn)在討論一個(gè)具體的關(guān)係模式。例如,要設(shè)計(jì)一個(gè)教學(xué)管理資料庫(kù),希望該資料庫(kù)中包括的資訊有學(xué)生學(xué)號(hào)、姓名、系名、系主任姓名,以及學(xué)生學(xué)習(xí)的課程和成績(jī)。於是得到一組屬性:

U={學(xué)號(hào),姓名,系名,系主任,課程名,成績(jī)}

根據(jù)經(jīng)驗(yàn)得知:

一個(gè)學(xué)號(hào)對(duì)應(yīng)一個(gè)學(xué)生,即一個(gè)學(xué)號(hào)對(duì)應(yīng)一個(gè)姓名,但可以有多個(gè)學(xué)生重名;

一個(gè)系有若干學(xué)生,但一個(gè)學(xué)生只屬於一個(gè)系;

一個(gè)系只有一名(正職)負(fù)責(zé)人;

一個(gè)學(xué)生可選修多門課程,每門課程有若干學(xué)生選修;

學(xué)生學(xué)習(xí)每一門課程有一個(gè)成績(jī);於是得到屬性組上的一組函數(shù)依賴:

F={學(xué)號(hào)→姓名,學(xué)號(hào)→系名,系名→系主任,(學(xué)號(hào),課程名)→成績(jī)}

定義:設(shè)R(U)是屬性集U上的關(guān)係模式。X,Y是U的子集。若對(duì)於R(U)的任意一個(gè)可能的關(guān)係r(一個(gè)滿足約束條件的數(shù)據(jù)組成的表),r中不可能存在兩個(gè)元組在X上的屬性值相等,而在Y上的屬性值不等,則稱X函數(shù)確定Y或Y函數(shù)依賴於X,記作X→Y。

定義:在R(U)中,,如果X→Y,Y→Z,且(Y

X),YX,則稱Z對(duì)X傳遞函數(shù)依賴。例如,在教學(xué)關(guān)係模式中,學(xué)號(hào)→系名,系名→系主任,所以系主任對(duì)學(xué)號(hào)傳遞依賴。

3.範(fàn)式

關(guān)係資料庫(kù)中的關(guān)係是要滿足一定要求的。滿足不同程度要求的為不同的範(fàn)式。範(fàn)式是滿足一定函數(shù)依賴的關(guān)係模式的集合。有多種範(fàn)式:第一範(fàn)式、第二範(fàn)式、第三範(fàn)式、BCN範(fàn)式等。滿足最低要求的叫第一範(fàn)式,簡(jiǎn)稱1NF。在滿足第一範(fàn)式的條件下,滿足進(jìn)一步條件的為第二範(fàn)式,簡(jiǎn)稱2NF。其餘依此類推。顯然各種範(fàn)式之間存在關(guān)係:

1NF

2NF

3NF

BCNF

4NF

5NF

一個(gè)低一級(jí)的範(fàn)式模式,通過模式分解可以轉(zhuǎn)換為若干個(gè)高一級(jí)範(fàn)式的模式集合,這個(gè)過程叫規(guī)範(fàn)化。

(1)第一範(fàn)式(1NF)定義:如果一個(gè)關(guān)係模式R的所有屬性都是簡(jiǎn)單屬性,即每個(gè)屬性都是不可再分的基本資料項(xiàng)目,則稱R屬於第一範(fàn)式,記作R∈1NF。例如,教學(xué)模式中的所有屬性都是不可再分的簡(jiǎn)單屬性,即:教學(xué)(學(xué)號(hào),姓名,系名,系主任,課程名,成績(jī))∈

1NF(2)第二範(fàn)式(2NF)定義:若一個(gè)關(guān)係模式R∈lNF,且每一個(gè)非主屬性完全函數(shù)依賴於關(guān)鍵字,則R∈2NF。

將教學(xué)模式分為以下兩個(gè)模式:學(xué)生_系(學(xué)號(hào),姓名,系,系主任);選課(學(xué)號(hào),課程名,成績(jī))在“學(xué)生_系”關(guān)係中,“學(xué)號(hào)”是關(guān)鍵字,其他非主屬性都完全依賴於關(guān)鍵字,“選課”關(guān)係中,(學(xué)號(hào),課程名)是關(guān)鍵字,非主屬性也完全依賴於關(guān)鍵字,因此兩個(gè)關(guān)係中非主屬都完全函數(shù)依賴於關(guān)鍵字,服從2NF,即: 學(xué)生_系∈2NF,選課∈2NF。

(3)第三範(fàn)式(3NF)定義:若關(guān)係模式R是第二範(fàn)式,且沒有一個(gè)非主屬性傳遞函數(shù)依賴關(guān)鍵字,則R∈3NF。R∈3NF,則非主屬性對(duì)主屬性既不部分函數(shù)依賴於關(guān)鍵字,也不傳遞函數(shù)依賴於關(guān)鍵字。考察“學(xué)生_系”關(guān)係,可以看出:學(xué)號(hào)→系名,系名→系主任,即“系主任”傳遞依賴於“學(xué)號(hào)”。“學(xué)號(hào)”是關(guān)鍵字,而“系主任”是非主屬性,它們之間存在傳遞函數(shù)依賴關(guān)係,因此“學(xué)生_系”關(guān)係

3NF。如果對(duì)“學(xué)生_系”關(guān)係按第三範(fàn)式的要求分解,分解後的模式如下:學(xué)生(學(xué)號(hào),姓名,系)系(系,系主任)則分解後的模式均屬於3NF。

規(guī)範(fàn)化方法為設(shè)計(jì)人員判斷關(guān)係模式的優(yōu)劣提供了理論依據(jù),可以使資料庫(kù)的設(shè)計(jì)工作建立在嚴(yán)格的理論基礎(chǔ)上。關(guān)係模式的優(yōu)化步驟如下:①按需求分析所得到的實(shí)體及其聯(lián)繫,確定資料庫(kù)中各關(guān)係模式中存在的函數(shù)依賴集。②逐一分析各關(guān)係模式,確定關(guān)係模式屬於第幾範(fàn)式。③對(duì)關(guān)係模式通過模式分解的方法進(jìn)行改進(jìn),使其達(dá)到一定的範(fàn)式。

小結(jié)

本章介紹了關(guān)係資料庫(kù)的基本概念、SQL語(yǔ)言、函數(shù)依賴?yán)碚摷肮?fàn)式。1.關(guān)係資料庫(kù)。在關(guān)係資料庫(kù)中關(guān)係就是表。關(guān)係資料庫(kù)中的實(shí)體及聯(lián)繫均用關(guān)係來表示。2.SQL語(yǔ)言。它是關(guān)係資料庫(kù)的結(jié)構(gòu)化查詢語(yǔ)言,具有一體化、高度非過程化、語(yǔ)言簡(jiǎn)潔、易於使用的特點(diǎn)。SQL語(yǔ)言提供了創(chuàng)建資料庫(kù)、定義關(guān)係模式、查詢、更新、維護(hù)、資料庫(kù)安全控制等一系列功能。3.關(guān)係資料庫(kù)規(guī)範(fàn)化理論關(guān)係資料庫(kù)規(guī)範(fàn)化理論是資料庫(kù)邏輯設(shè)計(jì)工具。關(guān)係資料庫(kù)的規(guī)範(fàn)化理論就是解決如何設(shè)計(jì)出合理的關(guān)係資料庫(kù)模式。習(xí)題1.試說明SELECT語(yǔ)句的作用。2.試說明SELECT語(yǔ)句中FROM、WHERE、GROUP、ORDER、HAVING的作用。3.設(shè)學(xué)生選課資料庫(kù)包含如下三個(gè)關(guān)係模式:學(xué)生(學(xué)號(hào),姓名,性別,年齡,系名);系(系名,系主任);選課(學(xué)號(hào),課程名,成績(jī))試用SQL語(yǔ)言實(shí)現(xiàn)下列操作:(1)查詢年齡大於20歲的男生。(2)查詢姓王的學(xué)生。習(xí)題(3)求出學(xué)習(xí)高等數(shù)學(xué)課程學(xué)生的最高成績(jī)、最低成績(jī)和平均成績(jī)。(4)求出學(xué)習(xí)資料庫(kù)原理課程且成績(jī)高於80分的學(xué)生人數(shù)。(5)查詢每個(gè)學(xué)生的學(xué)號(hào)及選修課的數(shù)量.(6)查詢選修三門以上課程的學(xué)生學(xué)號(hào)。(7)查詢學(xué)習(xí)資料庫(kù)原理課程的學(xué)生姓名。(8)把張三的年齡修改為20。(9)刪除學(xué)號(hào)為951001的學(xué)生選修的資料庫(kù)原理課程。習(xí)題4.解釋下列名詞:函數(shù)依賴、部分函數(shù)依賴、傳遞函數(shù)依賴、1NF、2NF、3NF。5.現(xiàn)在要建立關(guān)於系、學(xué)生、班級(jí)資訊的資料庫(kù),關(guān)係模式為:學(xué)生(學(xué)號(hào),姓名,出生日期,系名,班號(hào),宿舍區(qū));系(系號(hào),系名,辦公室,系人數(shù));班級(jí)(班號(hào),專業(yè)名,系名,人數(shù),入學(xué)年份)各個(gè)屬性之間的關(guān)係:一個(gè)系有若干個(gè)專業(yè),每個(gè)專業(yè)每年只招一個(gè)班,每個(gè)班有若干學(xué)生,一個(gè)系的學(xué)生住在同一個(gè)宿舍區(qū)。(1)請(qǐng)寫出每個(gè)關(guān)係模式的函數(shù)依賴,分析是否存在部分依賴、傳遞依賴。(2)找出各個(gè)關(guān)係的關(guān)鍵字、外部關(guān)鍵字。(3)每個(gè)關(guān)係是什麼範(fàn)式?如果不是3NF請(qǐng)規(guī)範(fàn)化為3NF。

第3章資料庫(kù)系統(tǒng)體系結(jié)構(gòu)教材:資料庫(kù)技術(shù)及應(yīng)用2006年4月寧可、吳菁、胡海編著本章要點(diǎn)集中式系統(tǒng)客戶/伺服器系統(tǒng)分佈式系統(tǒng)資料庫(kù)介面目錄3.1集中式系統(tǒng)3.2客戶/伺服器系統(tǒng)

3.2.1客戶/伺服器結(jié)構(gòu)

3.2.2N層客戶機(jī)-伺服器結(jié)構(gòu)

3.3分佈式系統(tǒng)

3.3.1分佈式系統(tǒng)的基本概念

3.3.2分佈式資料庫(kù)系統(tǒng)的主要特點(diǎn)3.4資料庫(kù)介面

3.4.1通過ODBC連接資料庫(kù)

3.4.2通過JDBC連接資料庫(kù)

3.4.3通過OLEDB連接資料庫(kù)

3.4.4通過專用介面連接資料庫(kù)

3.4.5通用資料庫(kù)介面和專用資料庫(kù)介面的比較3.5應(yīng)用實(shí)例

小結(jié)3.1集中式系統(tǒng)

集中式系統(tǒng)是指運(yùn)行在一臺(tái)電腦上,不與其它電腦系統(tǒng)交互的資料庫(kù)系統(tǒng)。這些主要表現(xiàn)在運(yùn)行在個(gè)人電腦上的單用戶數(shù)據(jù)庫(kù)系統(tǒng)和運(yùn)行在大型主機(jī)上的高性能資料庫(kù)系統(tǒng)。對(duì)於個(gè)人電腦上的單用戶數(shù)據(jù)庫(kù)系統(tǒng)來說,其結(jié)構(gòu)簡(jiǎn)單,容易設(shè)計(jì)、構(gòu)造、操作和維護(hù),但數(shù)據(jù)處理能力有限,而集中式大型機(jī)系統(tǒng)則一般常用於大規(guī)模的批處理系統(tǒng),這些應(yīng)用常見於銀行業(yè)、保險(xiǎn)業(yè)等。

圖3-2:高性能資料庫(kù)系統(tǒng)。主機(jī)終端圖3-1:?jiǎn)斡脩魯?shù)據(jù)庫(kù)系統(tǒng)個(gè)人電腦3.2客戶/伺服器系統(tǒng)

隨著電腦網(wǎng)絡(luò)和電腦軟硬體技術(shù)的發(fā)展,電腦的性能價(jià)格比越來越高,使原集中式系統(tǒng)的終端變?yōu)閭€(gè)人電腦,而相應(yīng)的由原集中式系統(tǒng)中主機(jī)完成的任務(wù)也有所劃分,即由原集中式系統(tǒng)中主機(jī)完成的用戶介面功能現(xiàn)在由個(gè)人電腦來處理,集中式系統(tǒng)變?yōu)樗欧飨到y(tǒng),以滿足客戶系統(tǒng)產(chǎn)生的請(qǐng)求,客戶/伺服器系統(tǒng)一般結(jié)構(gòu)如圖3-3所示。

伺服器客戶機(jī)客戶機(jī)客戶機(jī)客戶機(jī)圖3-3客戶/伺服器系統(tǒng)一般結(jié)構(gòu)網(wǎng)路

在該體系結(jié)構(gòu)中,數(shù)據(jù)的存儲(chǔ)和管理通常由伺服器來承擔(dān),此伺服器稱為資料庫(kù)伺服器。

3.2.1客戶/伺服器結(jié)構(gòu)

對(duì)於資料庫(kù)系統(tǒng)而言,客戶/伺服器系統(tǒng)可將資料庫(kù)功能大致分為兩個(gè)部分:前端客戶機(jī)系統(tǒng)和後端伺服器系統(tǒng)。前端客戶機(jī)系統(tǒng)主要包括圖形用戶介面工具、表格及報(bào)表生成和書寫工具等;後端伺服器系統(tǒng)負(fù)責(zé)數(shù)據(jù)的存取和控制,包括故障恢復(fù)和併發(fā)控制等。從功能來說,客戶/伺服器系統(tǒng)的功能劃分如圖3-4所示。

表格用戶介面SQL用戶介面圖形化介面資料庫(kù)引擎前端客戶機(jī)系統(tǒng)後端伺服器系統(tǒng)介面圖3-4客戶/伺服器系統(tǒng)的功能劃分客戶/伺服器系統(tǒng)對(duì)數(shù)據(jù)的一般處理過程,如圖3-5所示,請(qǐng)求和接收數(shù)據(jù)資訊的具體描述如下:(1)用戶在客戶端請(qǐng)求數(shù)據(jù)查詢。(2)請(qǐng)求被翻譯成SQL語(yǔ)言。(3)SQL請(qǐng)求通過網(wǎng)路被傳送到伺服器端。(4)資料庫(kù)伺服器在存儲(chǔ)數(shù)據(jù)的電腦上進(jìn)行檢索。(5)在伺服器上檢索得到的結(jié)果通過網(wǎng)路傳遞給客戶端。(6)結(jié)果在客戶端呈現(xiàn)給用戶。伺服器客戶機(jī)服務(wù)請(qǐng)求回應(yīng)圖3-5客戶/伺服器系統(tǒng)對(duì)數(shù)據(jù)的處理過程3.2.2N層客戶/伺服器結(jié)構(gòu)

一個(gè)資訊系統(tǒng)應(yīng)用程式通??梢苑殖蓴?shù)據(jù)層、商業(yè)邏輯層和視圖層,這種客戶/伺服器結(jié)構(gòu)可稱為三層結(jié)構(gòu),圖3-6說明了這三層間的相互作用,其中用戶層(視圖層)是作為商業(yè)邏輯層的一個(gè)客戶,而商業(yè)邏輯層作為數(shù)據(jù)層的一個(gè)客戶。圖3-6三層結(jié)構(gòu)間的相互作用視圖層商業(yè)邏輯層數(shù)據(jù)層用戶請(qǐng)求資訊請(qǐng)求請(qǐng)求回應(yīng)數(shù)據(jù)查詢查詢回應(yīng)上述三層客戶/伺服器結(jié)構(gòu)的各層所包含內(nèi)容及功能分別是:1.?dāng)?shù)據(jù)層在客戶機(jī)-伺服器結(jié)構(gòu)中包含資料庫(kù)的層,該層主要管理存儲(chǔ)的數(shù)據(jù),通常由一個(gè)或多個(gè)數(shù)據(jù)庫(kù)實(shí)現(xiàn)。2.商業(yè)邏輯層在客戶機(jī)-伺服器結(jié)構(gòu)中包含應(yīng)用系統(tǒng)的程式邏輯實(shí)現(xiàn)的部分,該層實(shí)現(xiàn)商務(wù)處理的規(guī)則和程式。3.視圖層在客戶機(jī)-伺服器結(jié)構(gòu)中包含用戶介面和其他訪問系統(tǒng)的組件的部分,該層主要用於接收用戶的輸入、格式化並顯示處理結(jié)果。相對(duì)而言,三層結(jié)構(gòu)的應(yīng)用軟體在網(wǎng)路上更容易分佈和複製。層間的交互總是請(qǐng)求或回應(yīng),這使層次與層次之間相對(duì)獨(dú)立。因此它們可以放在不同的電腦系統(tǒng)中,用網(wǎng)路連接和中間件作為粘結(jié)劑將它們綁定在一起形成一個(gè)單獨(dú)的應(yīng)用系統(tǒng)。3.3分佈式系統(tǒng)

電腦網(wǎng)絡(luò)化使電腦資源得到共用,這些資源包括軟體資源和硬體資源,這使得現(xiàn)代資訊系統(tǒng)的部件或功能通常可分佈於多個(gè)電腦系統(tǒng)和不同的地理位置上,這種將部件或功能分佈到不同電腦系統(tǒng)和不同位置的方法一般稱為分佈式計(jì)算或分佈式處理。在分佈式計(jì)算(DistributedComputing)環(huán)境中,一項(xiàng)計(jì)算處理任務(wù)可被分成若干部分,對(duì)相應(yīng)數(shù)據(jù)(通常是來自於網(wǎng)路中不同電腦的分佈式數(shù)據(jù))的處理也不是由一臺(tái)電腦完成,而是多臺(tái)電腦協(xié)作完成的。如圖3-12所示,一項(xiàng)任務(wù)W由Wa和Wb組成。而Wa和Wb分別在電腦A和電腦B上完成。電腦A完成Wa電腦B完成Wb任務(wù)W圖3-12任務(wù)W由Wa和Wb組成的分佈式處理圖

分佈式系統(tǒng)中的電腦規(guī)??纱罂尚。〉絺€(gè)人電腦、大到工作站或大型機(jī)系統(tǒng)。對(duì)分佈式系統(tǒng)中的電腦,有多種不同的稱呼,如節(jié)點(diǎn)或結(jié)點(diǎn)等,這可依據(jù)上下文的不同而異。分佈式系統(tǒng)的一般結(jié)構(gòu)如圖3-13所示。在圖中,各個(gè)節(jié)點(diǎn)間可通過網(wǎng)路進(jìn)行通信。

網(wǎng)路節(jié)點(diǎn)A節(jié)點(diǎn)B節(jié)點(diǎn)C3-13分佈式系統(tǒng)分佈式資料庫(kù)系統(tǒng)的主要特點(diǎn)

分佈式資料庫(kù)系統(tǒng)的主要優(yōu)點(diǎn)如下:(1)數(shù)據(jù)共用。分佈式資料庫(kù)系統(tǒng)的主要優(yōu)點(diǎn)是提供一個(gè)環(huán)境,使得一個(gè)節(jié)點(diǎn)可以訪問存放在其他節(jié)點(diǎn)上的數(shù)據(jù)。(2)自治性。通過數(shù)據(jù)分佈的方法來共用數(shù)據(jù),其主要優(yōu)越性是每個(gè)節(jié)點(diǎn)可以對(duì)局部存儲(chǔ)的數(shù)據(jù)保持一定程度的控制。而在集中式系統(tǒng)中,其中心節(jié)點(diǎn)的資料庫(kù)管理員對(duì)數(shù)據(jù)庫(kù)進(jìn)行控制。(3)可用性。在分佈式系統(tǒng)中,如果一個(gè)節(jié)點(diǎn)發(fā)生故障,其他節(jié)點(diǎn)還能繼續(xù)運(yùn)行。分佈式資料庫(kù)系統(tǒng)的主要缺點(diǎn)是由於要保證各節(jié)點(diǎn)間的相互協(xié)作而增加的複雜性。其複雜性表現(xiàn)為以下幾種形式.

軟體開發(fā)代價(jià)。實(shí)現(xiàn)一個(gè)分佈式資料庫(kù)系統(tǒng)會(huì)更加複雜,因此,代價(jià)更高。

出現(xiàn)錯(cuò)誤的可能性更大。由於構(gòu)成分佈式系統(tǒng)的各個(gè)節(jié)點(diǎn)並行地運(yùn)行,因此更難於保證演算法的正確性,尤其難於保證當(dāng)系統(tǒng)的一部分發(fā)生故障時(shí)的運(yùn)行,以及從故障中的恢復(fù)。

處理開銷增大。相比較集中式系統(tǒng)而言,分佈式資料庫(kù)系統(tǒng)中消息的交換以及保證各節(jié)點(diǎn)間的相互協(xié)作都增加了系統(tǒng)的相應(yīng)開銷。因此,在選擇資料庫(kù)系統(tǒng)的設(shè)計(jì)時(shí),必須在數(shù)據(jù)分佈的優(yōu)點(diǎn)和缺點(diǎn)間進(jìn)行權(quán)衡。3.4資料庫(kù)介面

目前,客戶與伺服器之間的資料庫(kù)介面分成兩大類:

(1)通用資料庫(kù)介面具有通用的標(biāo)準(zhǔn)資料庫(kù)介面,如開放式資料庫(kù)互連(OpenDataBaseConnecttivity,簡(jiǎn)稱ODBC)標(biāo)準(zhǔn),使用ODBC介面的任何客戶可以與提供ODBC介面的任何伺服器連接。此外,還有Java資料庫(kù)互連(JavaDataBaseConnectivity,簡(jiǎn)稱JDBC)和OLEDB資料庫(kù)介面。(2)專用資料庫(kù)介面。專用資料庫(kù)介面根據(jù)各個(gè)DBMS的不同而不同,例如Sybase資料庫(kù)系統(tǒng),它提供了SyabseOpenClient和SyabseOpenServer兩種產(chǎn)品。其中,OpenClient是客戶端的API,它的作用是調(diào)用級(jí)介面,使不同開發(fā)商的工具軟體和客戶應(yīng)用程式可以把SQL命令通過網(wǎng)路發(fā)給伺服器,以獲得數(shù)據(jù)和服務(wù);OpenServer是伺服器端的API,它提供的編程介面使得開發(fā)人員可以把不同的數(shù)據(jù)源構(gòu)造為統(tǒng)一框架的資料庫(kù)伺服器,從而允許客戶以SQL語(yǔ)言或遠(yuǎn)程過程調(diào)用的形式,向數(shù)據(jù)源發(fā)送標(biāo)準(zhǔn)請(qǐng)求。然後將數(shù)據(jù)源返回的結(jié)果以標(biāo)準(zhǔn)格式送回客戶。在實(shí)際開發(fā)應(yīng)用中,一般利用OpenClient進(jìn)行客戶端開發(fā)。OpenClient編程介面的函數(shù)庫(kù)包括:Client_Library、DB_Library和CS_Library。

3.4.1通過ODBC連接資料庫(kù)ODBC是Microsoft公司提出的開放式資料庫(kù)互連,它採(cǎi)用SQL(StructuredQueryLanguage,結(jié)構(gòu)化查詢語(yǔ)言)作為標(biāo)準(zhǔn)的查詢語(yǔ)言來存取連接到的資料庫(kù)。ODBC允許單個(gè)應(yīng)用程式存取多個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng),而不必關(guān)心它所操作的資料庫(kù)管理系統(tǒng)是什麼。

應(yīng)用程式、ODBC介面、ODBC驅(qū)動(dòng)管理程式和數(shù)據(jù)庫(kù)廠商提供的驅(qū)動(dòng)程式的相互關(guān)係,如圖3-10所示。利用應(yīng)用程式通過ODBC介面來編寫資料庫(kù)應(yīng)用程式,完全可以不必關(guān)心底層資料庫(kù)管理系統(tǒng)的實(shí)現(xiàn)細(xì)節(jié),而只需利用應(yīng)用程式的ODBC介面所提供的功能就可以簡(jiǎn)單地完成資料庫(kù)存取操作。應(yīng)用程式ODBC介面ODBC驅(qū)動(dòng)管理程式資料庫(kù)1驅(qū)動(dòng)程式資料庫(kù)2驅(qū)動(dòng)程式資料庫(kù)2資料庫(kù)3驅(qū)動(dòng)程式資料庫(kù)3資料庫(kù)1圖3-10應(yīng)用程式、ODBC和數(shù)據(jù)庫(kù)的關(guān)係

Windows2000操作系統(tǒng)的ODBC數(shù)據(jù)源管理器窗口介面,如圖3-11所示,可在此窗口中進(jìn)行ODBC的添加、刪除和配置工作。有關(guān)Windows2000操作系統(tǒng)的ODBC核心組件的描述,如圖3-12所示。圖3-11ODBC數(shù)據(jù)源管理器圖3-12ODBC數(shù)據(jù)源管理器核心組件的描述

和ODBC一樣,JDBC也是一種通用的資料庫(kù)訪問標(biāo)準(zhǔn)。ODBC主要運(yùn)行在Windows環(huán)境下,而JDBC則主要運(yùn)行在Java環(huán)境中。JDBC(JavaDataBaseConnectivity)是一種用於執(zhí)行SQL語(yǔ)句的JavaAPI,它由一組用Java編程語(yǔ)言編寫的類和介面組成,JDBC為數(shù)據(jù)庫(kù)開發(fā)人員提供了一些標(biāo)準(zhǔn)的應(yīng)用程式編程介面API,使用戶能夠用JavaAPI來編寫資料庫(kù)應(yīng)用程式。有了JDBCAPI就不必為訪問各個(gè)不同的資料庫(kù)專門編寫程式,而只需用JDBCAPI編寫一個(gè)訪問程式,且將Java和JDBC結(jié)合起來,就可讓它運(yùn)行在任何平臺(tái)上。3.4.2通過JDBC連接資料庫(kù)

在開發(fā)環(huán)境中,可通過JDBC資料庫(kù)介面來利用JDBCAPI存取各種資料庫(kù),其中開發(fā)環(huán)境通過JDBC介面連接資料庫(kù)的各個(gè)組件部分的關(guān)係,如圖3-13所示。資料庫(kù)介面動(dòng)態(tài)連接庫(kù)開發(fā)環(huán)境Java虛擬機(jī)JDBC驅(qū)動(dòng)程式資料庫(kù)圖3-13JDBC介面中各個(gè)組件部分的關(guān)係

OLEDB也是一種技術(shù)標(biāo)準(zhǔn),其目的是提供一種統(tǒng)一的資料庫(kù)訪問介面,但這裏的數(shù)據(jù)不僅包括資料庫(kù)中的數(shù)據(jù),而且還包括郵件數(shù)據(jù)、Web上的文本或圖形、目錄服務(wù)等。OLEDB就是為各種各樣的數(shù)據(jù)存儲(chǔ)都提供一種相同的訪問介面,使數(shù)據(jù)的調(diào)用者(應(yīng)用程式)可以使用同樣的方法訪問各種數(shù)據(jù),而不考慮數(shù)據(jù)的具體存儲(chǔ)地點(diǎn)、格式或類型。3.4.3通過OLEDB連接資料庫(kù)

如同ODBC和JDBC介面一樣,應(yīng)用程式的OLEDB介面利用OLEDBAPI來存取各種資料庫(kù),其通過OLEDB介面連接資料庫(kù)的各個(gè)組件部分的關(guān)係如圖3-14所示。圖3-14OLEDB介面中各個(gè)組件部分的關(guān)係

開發(fā)環(huán)境資料庫(kù)介面動(dòng)態(tài)連接庫(kù)OLEDBData提供者資料庫(kù)

目前大多數(shù)開發(fā)環(huán)境都提供了多種資料庫(kù)介面,實(shí)現(xiàn)與多種資料庫(kù)的連接。這些介面不僅包括標(biāo)準(zhǔn)的資料庫(kù)介面ODBC、JDBC和OLDB等,還有一種是專用的資料庫(kù)介面。在實(shí)際應(yīng)用中,常常需要在一個(gè)應(yīng)用程式中同時(shí)使用到這兩種介面方式與資料庫(kù)連接。3.4.4通過專用介面連接資料庫(kù)

通過專用介面連接資料庫(kù)的各個(gè)組件部分的關(guān)係如圖3-15。專用介面是針對(duì)具體的資料庫(kù)管理系統(tǒng)設(shè)計(jì)的,所以通過專用資料庫(kù)介面可以更快捷地連接相應(yīng)的資料庫(kù),以充分發(fā)揮各資料庫(kù)管理系統(tǒng)的特點(diǎn),提高訪問資料庫(kù)伺服器的效率。開發(fā)環(huán)境資料庫(kù)資料庫(kù)介面動(dòng)態(tài)連接庫(kù)或共用庫(kù)資料庫(kù)客戶端軟體網(wǎng)路協(xié)議路由軟體圖3-15通過專用介面連接資料庫(kù)的各個(gè)組件部分的關(guān)係

從表中看出,通用和性能是相互矛盾的,要獲得較好的數(shù)據(jù)訪問性能,往往根據(jù)不同的應(yīng)用環(huán)境選擇連接方式,對(duì)於小型本地資料庫(kù),一般採(cǎi)用ODBC介面進(jìn)行連接,而對(duì)於在網(wǎng)路環(huán)境下的大型遠(yuǎn)程資料庫(kù),一般採(cǎi)用專用資料庫(kù)介面進(jìn)行連接,以提高系統(tǒng)的可靠性與執(zhí)行效率。3.4.5通用資料庫(kù)介面和專用資料庫(kù)介面的比較

ODBC資料庫(kù)介面專用資料庫(kù)介面通用性好差性能(訪問速度)差優(yōu)秀配置過程簡(jiǎn)單較複雜3.5應(yīng)用實(shí)例

實(shí)例一:創(chuàng)建ODBC數(shù)據(jù)源

1.打開“ODBC數(shù)據(jù)源管理器”窗口。

2.創(chuàng)建新的ODBC數(shù)據(jù)源。實(shí)例二:創(chuàng)建ODBC資料庫(kù)描述檔

演示小結(jié)資料庫(kù)的體系結(jié)構(gòu)主要有以下幾種:集中式資料庫(kù)系統(tǒng)完全運(yùn)行在一臺(tái)電腦中。最初所有資料庫(kù)系統(tǒng)都是集中式的。隨著個(gè)算機(jī)和局域網(wǎng)的發(fā)展,資料庫(kù)的前端功能不斷移向客戶機(jī),而後端功能由伺服器系統(tǒng)提供。並行資料庫(kù)系統(tǒng)由通過高速互連網(wǎng)絡(luò)連接在一起的多臺(tái)處理器和多個(gè)磁片構(gòu)成。並行資料庫(kù)體系結(jié)構(gòu)包括共用記憶體、共用磁片、無(wú)共用,以及層次的結(jié)構(gòu)。這些體系結(jié)構(gòu)在可擴(kuò)展性以及通信速度方面各有千秋。分佈式資料庫(kù)是局部獨(dú)立的資料庫(kù)的集合,它們共用一個(gè)公共的模式,並且互相協(xié)作處理非局部數(shù)據(jù)的事務(wù)。

資料庫(kù)介面分成兩大類即通用資料庫(kù)介面和專用資料庫(kù)介面。其中,通用資料庫(kù)介面有ODBC、JDBC和OLEDB資料庫(kù)介面;而專用資料庫(kù)介面根據(jù)各個(gè)DBMS的不同而不同。習(xí)題1.資料庫(kù)系統(tǒng)的體系結(jié)構(gòu)一般可分為集中式結(jié)構(gòu)、_______________、____________、和並行式體系結(jié)構(gòu)。2.客戶/伺服器結(jié)構(gòu)的三層結(jié)構(gòu)分別是____________、___________和__________。3.並行資料庫(kù)體系結(jié)構(gòu)主要有共用內(nèi)容結(jié)構(gòu)模式、____________、___________和__________。4.資料庫(kù)介面一般分成兩大類,分別是______________和_______________。5.實(shí)踐題請(qǐng)利用windows系統(tǒng)中的“ODBC數(shù)據(jù)源管理器”創(chuàng)建一個(gè)ODBC數(shù)據(jù)源。

第4章資料庫(kù)系統(tǒng)的開發(fā)環(huán)境教材:資料庫(kù)技術(shù)及應(yīng)用2006年4月寧可、吳菁、胡海編著本章要點(diǎn)資料庫(kù)系統(tǒng)開發(fā)概述

開放的客戶體系結(jié)構(gòu)

資料庫(kù)應(yīng)用開發(fā)工具PowerBuilder

資料庫(kù)應(yīng)用開發(fā)工具DelphiJava在資料庫(kù)中的應(yīng)用

目錄4.1資料庫(kù)系統(tǒng)開發(fā)概述

4.1.1資料庫(kù)應(yīng)用與資料庫(kù)體系結(jié)構(gòu)的關(guān)係

4.1.2資料庫(kù)應(yīng)用開發(fā)工具4.2開放的客戶體系結(jié)構(gòu)4.3資料庫(kù)應(yīng)用開發(fā)工具PowerBuilder

4.3.1PowerBuilder的特點(diǎn)

4.3.2PowerBuilder應(yīng)用的構(gòu)成4.4資料庫(kù)應(yīng)用開發(fā)工具Delphi

4.4.1Delphi資料庫(kù)應(yīng)用程式的體系

4.4.2Delphi資料庫(kù)組件

4.4.3Delphi連接資料庫(kù)的三種方式4.5Java在資料庫(kù)中的應(yīng)用

4.5.1Java簡(jiǎn)介

4.5.2J2EE體系簡(jiǎn)介

4.5.2J2EE體系簡(jiǎn)介小結(jié)4.1資料庫(kù)系統(tǒng)開發(fā)概述

隨著電腦硬體和軟體技術(shù)、網(wǎng)路技術(shù)的發(fā)展,資料庫(kù)體系結(jié)構(gòu)也經(jīng)歷了集中式資料庫(kù)系統(tǒng)、客戶/伺服器、並行資料庫(kù)系統(tǒng)和分佈式資料庫(kù)等。其中對(duì)於資料庫(kù)應(yīng)用由重大影響的幾個(gè)階段分別是:4.1.1資料庫(kù)應(yīng)用與資料庫(kù)體系結(jié)構(gòu)的關(guān)係

1.集中式資料庫(kù)系統(tǒng)(即基於主機(jī)的電腦系統(tǒng))

2.PC與傳統(tǒng)的網(wǎng)路技術(shù)相結(jié)合,即檔伺服器結(jié)構(gòu)3.客戶/伺服器(C/S)結(jié)構(gòu)4.三層(或多層)結(jié)構(gòu)。

資料庫(kù)系統(tǒng)的應(yīng)用與資料庫(kù)體系結(jié)構(gòu)的發(fā)展密不可分,從簡(jiǎn)單的檔管理、數(shù)據(jù)集中管理到數(shù)據(jù)分佈存儲(chǔ);從簡(jiǎn)單的數(shù)據(jù)存儲(chǔ)與計(jì)算、基於部門的業(yè)務(wù)數(shù)據(jù)處理、企業(yè)的綜合資訊管理到Web應(yīng)用。數(shù)據(jù)管理不再僅僅是存儲(chǔ)和管理數(shù)據(jù),而轉(zhuǎn)變成用戶所需要的各種數(shù)據(jù)管理的方式。而隨著資料庫(kù)體系結(jié)構(gòu)從封閉的集中式主機(jī),向一個(gè)開放的、與平臺(tái)完全無(wú)關(guān)的環(huán)境發(fā)展,資料庫(kù)應(yīng)用的開發(fā)工具,也從最初的機(jī)器語(yǔ)言、組合語(yǔ)言、高級(jí)語(yǔ)言發(fā)展到面向?qū)ο蟮某淌皆O(shè)計(jì)語(yǔ)言。4.1.2資料庫(kù)應(yīng)用開發(fā)工具

DBMS中存儲(chǔ)了大量的數(shù)據(jù)資訊,其目的是為用戶提供數(shù)據(jù)資訊服務(wù),而資料庫(kù)應(yīng)用程式正是與DBMS進(jìn)行通信,並訪問DBMS中的數(shù)據(jù),它是DBMS實(shí)現(xiàn)其對(duì)外提供數(shù)據(jù)資訊服務(wù)這一目的的唯一途徑。即資料庫(kù)應(yīng)用程式是一個(gè)允許用戶插入、修改、刪除並報(bào)告資料庫(kù)中數(shù)據(jù)的電腦程式。資料庫(kù)應(yīng)用程式在傳統(tǒng)上是由程式員用一種或多種通用或?qū)S玫某淌皆O(shè)計(jì)語(yǔ)言編寫的,但是近年來出現(xiàn)了多種面向用戶的資料庫(kù)應(yīng)用程式開發(fā)工具,這些工具可以簡(jiǎn)化使用DBMS的過程,並且不需要專門編程,用來生成資料庫(kù)應(yīng)用程式的語(yǔ)言主要分為三大類型:。1.過程化語(yǔ)言

2.結(jié)構(gòu)化查詢語(yǔ)言(SQL)

3.其他語(yǔ)言4.2開放的客戶體系結(jié)構(gòu)

開放式的客戶體系結(jié)構(gòu)使得客戶端應(yīng)用不再緊密地依賴資料庫(kù)管理系統(tǒng),開發(fā)者可以選擇自己喜歡的和熟悉的開發(fā)工具進(jìn)行客戶端的獨(dú)立開發(fā),等真正聯(lián)調(diào)時(shí)再通過ODBC或JDBC介面連接到資料庫(kù)管理系統(tǒng)。其中,ODBC的基本流程控制和Java程式訪問結(jié)構(gòu)分別如圖4-1和圖4-2所示。

語(yǔ)句處理和檢索分配環(huán)境分配連接句柄與伺服器連接分配語(yǔ)句句柄釋放語(yǔ)句句柄與伺服器斷開釋放連接句柄釋放環(huán)境初始化SQL語(yǔ)句處理終止圖4-1ODBC應(yīng)用系統(tǒng)的基本流程控制

資料庫(kù)的開放式客戶體系結(jié)構(gòu),有助於:有多種客戶端的開發(fā)工具可供選擇;編寫客戶端資料庫(kù)應(yīng)用程式,可完全可以不必關(guān)心底層資料庫(kù)管理系統(tǒng)的實(shí)現(xiàn)細(xì)節(jié),對(duì)數(shù)據(jù)庫(kù)存取操作可利用ODBC介面所提供的功能完成;

資料庫(kù)系統(tǒng)可以以並行方式進(jìn)行開發(fā)。Java程式JDBC驅(qū)動(dòng)JDBC-ODBCbRidge機(jī)制ODBC數(shù)據(jù)源資料庫(kù)圖4-2Java程式訪問結(jié)構(gòu)

4.3資料庫(kù)應(yīng)用開發(fā)工具PowerBuilder

PowerBuilder是優(yōu)秀的資料庫(kù)應(yīng)用系統(tǒng)開發(fā)工具之一,作為一種圖形化的快速應(yīng)用開發(fā)(RAD)工具,已被資料庫(kù)應(yīng)用開發(fā)人員所廣泛使用,它支持面向?qū)ο缶幊蹋哂袕?qiáng)大的、易於使用的第四代編程語(yǔ)言(4GL),並內(nèi)置多種對(duì)象類,其中以DataWindow對(duì)象最為著名,可以方便的訪問資料庫(kù)。PowerBuilder還提供了對(duì)多種數(shù)據(jù)源的簡(jiǎn)便連接,具有高度的開放性和靈活性。

3.2.1PowerBuilder的特點(diǎn)

PowerBuilder在介面上大量採(cǎi)用Windows系統(tǒng)的標(biāo)準(zhǔn)介面,不僅支持傳統(tǒng)的客戶/伺服器開發(fā)環(huán)境,而且完全支持組件和基於Web應(yīng)用的開發(fā)環(huán)境,利用PowerBuilder除了可設(shè)計(jì)傳統(tǒng)的高性能的客戶/伺服器體系結(jié)構(gòu)的應(yīng)用系統(tǒng)之外,而且能夠用於開發(fā)基於Internet的應(yīng)用系統(tǒng),它的主要特點(diǎn)說明如下:1.PowerBuilder應(yīng)用程式是事件驅(qū)動(dòng)的

2.面向?qū)ο蟮某淌皆O(shè)計(jì)

3.功能強(qiáng)大的PowerScript語(yǔ)言

4.支持Internet應(yīng)用

5.支持分佈式應(yīng)用

6.支持多平臺(tái)開發(fā)

7.對(duì)數(shù)據(jù)庫(kù)的支持8.提供功能強(qiáng)大的數(shù)據(jù)窗口對(duì)象

9.完善的組件開發(fā),全面支持開放標(biāo)準(zhǔn)的組件

10.具有極高的開發(fā)效率,支持團(tuán)隊(duì)開發(fā)

另外PowerBuilder還為團(tuán)隊(duì)開發(fā)提供了可靠的管理工具,使專案管理者可以創(chuàng)建專案、定義訪問許可權(quán)和進(jìn)行任務(wù)分配。PowerBuilder還提供了組件管理器,可以用於流覽應(yīng)用伺服器端的組件,便於組件存儲(chǔ)、重用和版本控制,促進(jìn)Web應(yīng)用的集成。

4.3.2PowerBuilder應(yīng)用的構(gòu)成

PowerBuilder應(yīng)用程式窗口1各種對(duì)象屬性事件函數(shù)對(duì)應(yīng)代碼窗口n各種對(duì)象屬性事件函數(shù)對(duì)應(yīng)代碼…各種對(duì)象屬性事件函數(shù)對(duì)應(yīng)代碼窗口2各種對(duì)象屬性事件函數(shù)對(duì)應(yīng)代碼圖4-3PowerBuilder的應(yīng)用程式的組成結(jié)構(gòu)

PowerBuilder提供了面向?qū)ο蟮膽?yīng)用程式開發(fā)環(huán)境,在PowerBuilder中包含了大量的對(duì)象,如窗口、菜單、數(shù)據(jù)窗口對(duì)象及各種控件等等,同時(shí)PowerBuilder很好地具備了封裝、繼承和多態(tài)性,是面向?qū)ο蟮南到y(tǒng)。

PowerBuilder的應(yīng)用程式的組成和各個(gè)對(duì)象的層次關(guān)係,如圖4-3所示。4.4資料庫(kù)應(yīng)用開發(fā)工具Delphi

Delphi也是一種具可視化介面的面向?qū)ο蟮某淌皆O(shè)計(jì)語(yǔ)言,它以功能強(qiáng)大、簡(jiǎn)便易用等諸多特性而被廣泛使用,Delphi中提供了資料庫(kù)引擎BDE(BorlandDatabaseEngine)並內(nèi)含眾多的資料庫(kù)調(diào)用構(gòu)件,提供了比PowerBuilder更美觀的介面,並提供了除數(shù)據(jù)庫(kù)操作外的更廣泛、更簡(jiǎn)便易用的工具。DelphiBorlandDatabaseEngineTDataSetIDAPI本地?cái)?shù)據(jù)伺服器數(shù)據(jù)ODBC數(shù)據(jù)Delphi提供了一組工具和功能,利用這些工具和功能,可以容易地開發(fā)資料庫(kù)應(yīng)用程式。資料庫(kù)應(yīng)用程式都有一定的公共特徵。圖4-4說明了典型的Delphi資料庫(kù)應(yīng)用程式的體系結(jié)構(gòu)。

4.4.1Delphi資料庫(kù)應(yīng)用程式的體系圖4-4Delphi資料庫(kù)應(yīng)用程式的體系結(jié)構(gòu)Delphi提供了許多組件以方便地創(chuàng)建資料庫(kù)應(yīng)用程式。標(biāo)準(zhǔn)的Delphi類庫(kù)提供兩類資料庫(kù)組件:(1)數(shù)據(jù)存?。―ataaccess)組件用於直接操縱數(shù)據(jù)表,通過它可獲得和修改記錄中的字段值,獲取和維護(hù)資料庫(kù)中的元數(shù)據(jù)(有關(guān)數(shù)據(jù)的數(shù)據(jù))。(2)數(shù)據(jù)敏感(Dataaware)控件是可視控件,例如列表框、編輯字段、下拉組合框等。這些不僅表示窗口控制元素而且還能與表中的數(shù)據(jù)字段連接並能夠顯示這些數(shù)據(jù)字段。4.4.2Delphi資料庫(kù)組件

除上述兩類組件外,還有數(shù)個(gè)附加的標(biāo)準(zhǔn)組件,它們可執(zhí)行各種功能,例如將數(shù)據(jù)存取組件與相應(yīng)的數(shù)據(jù)敏感控件連在一起可使數(shù)據(jù)可見(DataSource組件),或者封裝資料庫(kù)的高級(jí)概念作為一個(gè)表的對(duì)應(yīng)(Database組件)。Delphi對(duì)訪問資料庫(kù)提供了強(qiáng)有力的支持,利用Delphi可以開發(fā)出功能強(qiáng)大的資料庫(kù)應(yīng)用程式。Delphi的可視化功能相當(dāng)強(qiáng)大,在Delphi中訪問資料庫(kù)具有三種方式:。4.4.3Delphi連接資料庫(kù)的三種方式1.直接訪問

2.通過ODBC訪問3.通過內(nèi)嵌方式訪問4.5Java在資料庫(kù)中的應(yīng)用

Java起源於80年代中期。Java是Sun公司開發(fā)的—種語(yǔ)言,其目標(biāo)是在小型系統(tǒng)(嵌入式系統(tǒng))上運(yùn)行。90年代中期Intemet興起時(shí),人們立刻想到Java是一種用於Intemet的最佳語(yǔ)言,因?yàn)镴ava是一個(gè)面向?qū)ο蟮木幊陶Z(yǔ)言,本身具有的跨平臺(tái)特性正好能滿足人們?cè)诓煌?、軟體平臺(tái)上訪問Intemet的需求。從1995年初Sun公司推出Java語(yǔ)言以來,短短的幾年中,基於Java的應(yīng)用開發(fā)就得到了很大的發(fā)展。

Java程式常被稱為“小應(yīng)用程式”(Applet)。在Java網(wǎng)路化的編程模式下,這種小應(yīng)用程式可以被嵌入到WWW的文檔頁(yè)面中,成為一種“可執(zhí)行的內(nèi)容”。Java語(yǔ)言還可以編寫其他常規(guī)的應(yīng)用程式,它的突出特性之一是它有能力創(chuàng)建小的程式,這些小的程式可以跨網(wǎng)路被複製,並可在遠(yuǎn)程電腦上運(yùn)行。

Java語(yǔ)言除了用來在Web頁(yè)面上增加動(dòng)畫和提供交互性外,還可用Java語(yǔ)言建立伺服器、管理遠(yuǎn)程系統(tǒng)、在Web上顯示複雜的資料庫(kù)資訊,以及開發(fā)在網(wǎng)路上供多人參加的遊戲程式等。Java語(yǔ)言將是發(fā)展Intemet商業(yè)的主要平臺(tái)。4.5.1Java簡(jiǎn)介

J2EE是應(yīng)用伺服器採(cǎi)用的主要技術(shù)體系,與其它的中間件系統(tǒng)相比較,它具有非常顯著的特徵,這些特徵來自於它獨(dú)特的體系結(jié)構(gòu),該體系結(jié)構(gòu)具有以下服務(wù)需要:高可用性,可以適應(yīng)當(dāng)今全球商業(yè)環(huán)境;安全性,可以保護(hù)客戶的隱私和企業(yè)數(shù)據(jù)的完整性;

可靠性和伸縮性,保證事務(wù)處理的準(zhǔn)確性和及時(shí)性。

4.5.2J2EE體系簡(jiǎn)介J2EE技術(shù)體系涉及如下概念:1.J2EE應(yīng)用模型2.J2EE中間層3.J2EE客戶層4.J2EE應(yīng)用伺服器小結(jié)

本章簡(jiǎn)要闡述了資料庫(kù)應(yīng)用的開發(fā)環(huán)境,包括資料庫(kù)應(yīng)用與資料庫(kù)體系結(jié)構(gòu)的關(guān)係、開放式的資料庫(kù)客戶體系結(jié)構(gòu)。資料庫(kù)應(yīng)用的開發(fā)工具也從最初的機(jī)器語(yǔ)言、組合語(yǔ)言、高級(jí)語(yǔ)言發(fā)展到面向?qū)ο蟮某淌皆O(shè)計(jì)語(yǔ)言。

習(xí)題1.資料庫(kù)應(yīng)用程式的語(yǔ)言主要分為過程化語(yǔ)言、_______________、____________等三大類型。2.資料庫(kù)的開放式客戶體系結(jié)構(gòu),有助於編寫客戶端資料庫(kù)應(yīng)用程式,完全可以不必關(guān)心___________資料庫(kù)管理系統(tǒng)的實(shí)現(xiàn)細(xì)節(jié),對(duì)數(shù)據(jù)庫(kù)存取操作可利用___________介面所提供的功能完成。3.面向?qū)ο蟮南到y(tǒng)只有全部具備繼承性、___________和__________。4.J2EE應(yīng)用伺服器中的應(yīng)用組件主要有JSP、EJB和Servlet三種,它們均可通過__________訪問後端資料庫(kù)。5.如編寫一個(gè)工資管理系統(tǒng),下列那種語(yǔ)言開發(fā)起來既方便又快捷?A.C語(yǔ)言

B.SQL語(yǔ)言

C.面向?qū)ο蟮某淌皆O(shè)計(jì)語(yǔ)言如powerbuilder、delphi等

D.機(jī)器語(yǔ)言

第5章資料庫(kù)系統(tǒng)的開發(fā)方法教材:資料庫(kù)技術(shù)及應(yīng)用2006年4月寧可、吳菁、胡海編著本章要點(diǎn)方法、模型、工具和技術(shù)軟體生存期模型結(jié)構(gòu)化方法面向?qū)ο蠓椒夸?.1方法、模型、工具和技術(shù)

5.1.1方法

5.1.2模型

5.1.3工具

5.1.4技術(shù)5.2軟體生存期模型

5.2.1瀑布模型

5.2.2快速原型模型

5.2.3螺旋模型

5.2.4噴泉模型

5.2.5開發(fā)模型的比較5.3結(jié)構(gòu)化方法

5.3.1結(jié)構(gòu)化分析

5.3.2結(jié)構(gòu)化設(shè)計(jì)

5.3.3結(jié)構(gòu)化編程

5.3.4結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計(jì)和結(jié)構(gòu)化編程的聯(lián)繫目錄5.4面向?qū)ο蠓椒?/p>

5.4.1面向?qū)ο蠓治?/p>

5.4.2面向?qū)ο笤O(shè)計(jì)

5.4.3面向?qū)ο缶幊?/p>

5.4.4面向?qū)ο蠹夹g(shù)的特點(diǎn)小結(jié)5.1方法、模型、工具和技術(shù)

資料庫(kù)系統(tǒng)也屬於系統(tǒng)設(shè)計(jì)的範(fàn)疇,資料庫(kù)系統(tǒng)同其他軟體系統(tǒng)一樣有多種開發(fā)方法,開發(fā)過程也較為複雜,在開發(fā)資料庫(kù)系統(tǒng)時(shí),一方面需要瞭解和掌握各種各樣的輔助工具,並可依靠它們來完成開發(fā)過程的每一個(gè)步驟;另一方面,還需要瞭解系統(tǒng)開發(fā)過程的大致框架和掌握許多概念,如方法、模型、工具和技術(shù)等。5.1.1方法

開發(fā)方法為系統(tǒng)開發(fā)的每一步驟提供指導(dǎo),包括具體的模型、工具和技術(shù)。開發(fā)方法既可以是通過自己的開發(fā)經(jīng)驗(yàn)總結(jié)出來,也可以通過其他途徑學(xué)習(xí)得來。

某些方法需要包含大量的文檔,而且文檔的格式和內(nèi)容都遵循相應(yīng)的規(guī)範(fàn),即文檔應(yīng)該如何書寫,應(yīng)該包含哪些內(nèi)容都有相應(yīng)的要求,這種方法使得軟體專案在開發(fā)中的任何時(shí)候所需要做的工作都是確定的。而另一些方法就沒有這樣嚴(yán)格,它常常在一份文檔中涵蓋了各個(gè)工作階段系統(tǒng)的大致描述。採(cǎi)用何種方法進(jìn)行資料庫(kù)系統(tǒng)的開發(fā),應(yīng)根據(jù)專案的特點(diǎn)、規(guī)模及開發(fā)單位和用戶的具體要求確定。在開發(fā)方法中,常常包含了模型、工具和技術(shù)的使用。5.1.2模型

模型是對(duì)現(xiàn)實(shí)世界的描述。在系統(tǒng)的開發(fā)中,常常需對(duì)輸入、輸出、過程、數(shù)據(jù)、對(duì)象之間的相互作用、位置、網(wǎng)路和設(shè)備等進(jìn)行模型的建立。模型可助於理解和明確要解決的問題,並確定問題的解決方案,選擇什麼樣的模型和選擇什麼樣的技術(shù)來表達(dá)模型,對(duì)於考慮問題和解決問題有著重大的影響。如圖5-1所示,便是系統(tǒng)設(shè)計(jì)階段常用的模型。介面佈局報(bào)表佈局系統(tǒng)流程圖結(jié)構(gòu)圖資料庫(kù)模式網(wǎng)路圖分佈圖圖5-1:設(shè)計(jì)階段常用的模型模型的類型與作用1.模型的類型

數(shù)學(xué)模型:描述系統(tǒng)技術(shù)的一系列公式。

描述模型:描述性的備忘錄、報(bào)表或列表。

圖形模型:用符號(hào)或圖表進(jìn)行描述。2.模型的作用

在建模過程中瞭解資訊。

通過抽象降低複雜性。

有助於回憶所有的細(xì)節(jié)。

有助於和其他開發(fā)小組成員進(jìn)行交流。

有助於和各種用戶及系統(tǒng)相關(guān)者進(jìn)行交流。為以後的維護(hù)和升級(jí)提供了文檔。

常用的模型

1.分析階段常用的模型(邏輯模型)

2.設(shè)計(jì)階段常用的模型(物理模型)

3.管理系統(tǒng)開發(fā)過程的常用的模型

一般而言,雖然不同的開發(fā)方法採(cǎi)用不同的模型,同一開發(fā)方法的不同開發(fā)階段採(cǎi)用的模型也不同。但

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論