版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、引言 現(xiàn)代社會(huì)正在進(jìn)入信息社會(huì),蓬勃發(fā)展的餐飲業(yè)作為第三產(chǎn)業(yè)的重要組成部分在國(guó)民經(jīng)濟(jì)中的作用日益突出;同時(shí),快節(jié)奏的生活,要求餐飲業(yè)跟上時(shí)代的步伐,提供高質(zhì)量、快速的服務(wù)。傳統(tǒng)的手工操作管理存在著許多無(wú)法避免的問(wèn)題,例如:(1)人工計(jì)算帳單金額容易出現(xiàn)差錯(cuò)(2)收銀工作中跑單、漏單、偷錢現(xiàn)象普遍(3)個(gè)別服務(wù)員作弊、改單、宰客情形時(shí)有發(fā)生(3)客人消費(fèi)單據(jù)難以保存和查詢(4)無(wú)法對(duì)大量營(yíng)業(yè)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析隨著人民生活水平的提高,餐飲業(yè)在服務(wù)行業(yè)中占有越來(lái)越重要的地位。努力在當(dāng)前餐飲行業(yè)日趨激烈的競(jìng)爭(zhēng)中脫穎而出,已成為每位餐飲業(yè)經(jīng)營(yíng)者所追求的目標(biāo)。經(jīng)過(guò)多年發(fā)展,餐飲管理已經(jīng)逐漸由定性管理,進(jìn)入到
2、重視定量管理的科學(xué)階段。眾所周知,在定量管理的具體實(shí)現(xiàn)方法和手段方面,最有效的工具就是電腦管理。國(guó)內(nèi)餐飲業(yè)的由于管理成本過(guò)高、服務(wù)效率低下,面臨國(guó)外餐飲業(yè)的入侵,處于競(jìng)爭(zhēng)的劣勢(shì);國(guó)外采用的新型的餐飲管理系統(tǒng),極大地提高了管理效率和服務(wù)水平,國(guó)內(nèi)的類似產(chǎn)品比較落后,且無(wú)法滿足餐廳的實(shí)際需要。為了促進(jìn)餐飲業(yè)的現(xiàn)代化,提高我國(guó)餐飲業(yè)的競(jìng)爭(zhēng)力,急切需要真正適合餐廳的實(shí)際需要的餐飲管理系統(tǒng)。本系統(tǒng)就是針對(duì)以上問(wèn)題設(shè)計(jì)的。系統(tǒng)實(shí)現(xiàn)了一般餐飲企業(yè)日常營(yíng)運(yùn)的全面自動(dòng)管理,并可以適用于管理需求十分相似的娛樂(lè)企業(yè)。 本論文首先介紹了餐飲管理系統(tǒng)的概況,對(duì)市場(chǎng)上現(xiàn)有的管理系統(tǒng)存在的問(wèn)題進(jìn)行了分析,指出了開(kāi)發(fā)適合餐廳
3、實(shí)際需要的餐飲管理系統(tǒng)的必要性,然后介紹了餐飲管理系統(tǒng)的相關(guān)基礎(chǔ)知識(shí),其中包括sql server數(shù)據(jù)庫(kù)管理系統(tǒng)和delphi 數(shù)據(jù)庫(kù)應(yīng)用程序體系結(jié)構(gòu),介紹了這兩種工具的基本知識(shí)和特點(diǎn),還有c/s模式的理論和特點(diǎn),再介紹了本餐飲管理系統(tǒng)的設(shè)計(jì)分析和應(yīng)用程序設(shè)計(jì),具體分析了各大模塊的設(shè)計(jì)實(shí)現(xiàn),這是本文的重點(diǎn)所在。1 概述1.1 餐飲業(yè)的發(fā)展、現(xiàn)狀以及存在的問(wèn)題 “民以食為天”,作為衣食住行的一部分,飲食在生活中具有極其重要的地位。在原始社會(huì),人類在飲食方面的要求僅限填腹,僅僅是生存的需要,處于與自然作斗爭(zhēng)的范疇,還談不上其他方面的意義。隨著人類社會(huì)的發(fā)展,生產(chǎn)力的提高使得生產(chǎn)方式發(fā)生巨大的變化,
4、社會(huì)產(chǎn)品逐漸豐富,人們對(duì)飲食有了更多的選擇。人類經(jīng)歷工業(yè)時(shí)代進(jìn)入信息時(shí)代后,飲食己經(jīng)從生存需要逐步發(fā)展成為具有多種內(nèi)涵的經(jīng)濟(jì)文化現(xiàn)象,加上民族文化背景,飲食往往成為民族和文化的一種象征。 而餐飲業(yè)也隨著社會(huì)的發(fā)展,從第一產(chǎn)業(yè)、第二產(chǎn)業(yè)中分化出來(lái),逐漸成為第三產(chǎn)業(yè)的重要組成部分,在國(guó)民經(jīng)濟(jì)中發(fā)揮重要的作用。 我國(guó)的餐飲業(yè)歷史悠長(zhǎng),形成了別具一格的飲食文化,但是直到現(xiàn)代餐飲業(yè)才真正成為產(chǎn)業(yè)。 近二十多年來(lái),我國(guó)餐飲業(yè)發(fā)展迅猛,日新月異,備種風(fēng)味特色,各種經(jīng)營(yíng)形式,各種組織結(jié)構(gòu)的餐廳企業(yè)星羅棋布。當(dāng)前中國(guó)城鎮(zhèn)擁有餐館300多萬(wàn)家,1999年銷售額達(dá)到3199.6億,2000年達(dá)到3600億元,市場(chǎng)十
5、分廣闊。與此同時(shí),國(guó)外的餐飲業(yè)也加快了進(jìn)入國(guó)內(nèi)市場(chǎng)的步伐,“麥當(dāng)勞”、“肯德基”兩家美國(guó)快餐企業(yè)在進(jìn)入中國(guó)十年以來(lái),根據(jù)中國(guó)的特色調(diào)整經(jīng)營(yíng)策略,已經(jīng)占據(jù)了一定的市場(chǎng)份額,而更多的外國(guó)餐飲業(yè)也不甘落后,爭(zhēng)相進(jìn)入我國(guó)市場(chǎng)。異國(guó)餐飲文化在國(guó)內(nèi)餐飲市場(chǎng)相繼出現(xiàn),國(guó)內(nèi)外餐飲行業(yè)相互滲透、交叉融合的趨勢(shì)日益明顯,表明我國(guó)餐飲業(yè)正向橫向和縱向發(fā)拓展,也說(shuō)明我國(guó)餐飲業(yè)正面臨著日益嚴(yán)峻的競(jìng)爭(zhēng)。(1)經(jīng)營(yíng)方式落后,經(jīng)營(yíng)特色不顯著:許多餐飲業(yè)仍保留傳統(tǒng)的經(jīng)營(yíng)觀念模式,菜譜上的菜名往往無(wú)法及時(shí)更新,讓人大失所望。(2)生產(chǎn)方式和管理服務(wù)水平低,科技含量不高。我國(guó)的餐飲業(yè)仍然以繁重的體力勞動(dòng)加簡(jiǎn)單工具的手工作坊式的生產(chǎn)
6、方式為主,管理水平低下,無(wú)法適應(yīng)信息時(shí)代快節(jié)奏的生活。 在與國(guó)外餐飲業(yè)的激烈競(jìng)爭(zhēng)中,民族餐飲業(yè)由于經(jīng)營(yíng)方式和管理手段落后,在競(jìng)爭(zhēng)中處于劣勢(shì)。餐飲業(yè)的有識(shí)之士已經(jīng)看到了傳統(tǒng)餐飲業(yè)的缺點(diǎn),開(kāi)始實(shí)施新的經(jīng)營(yíng)方式,借助新技術(shù)向現(xiàn)代餐飲轉(zhuǎn)變。在這一前提下,發(fā)展餐飲管理系統(tǒng)對(duì)提高餐飲業(yè)的科技含量,提高勞動(dòng)生產(chǎn)率,節(jié)約成本,取得經(jīng)營(yíng)優(yōu)勢(shì)有重要的意義。 信息化社會(huì)對(duì)餐飲業(yè)提出新的挑戰(zhàn)但是也提供新的機(jī)遇。生活節(jié)奏加快,餐飲業(yè)也必須跟上時(shí)代的步伐;日益發(fā)展的市場(chǎng)和日益嚴(yán)峻的競(jìng)爭(zhēng),是的我國(guó)餐飲業(yè)面臨著一個(gè)新的時(shí)代難題,經(jīng)營(yíng)管理方式的落后曾經(jīng)是民族餐飲業(yè)發(fā)展的桂桔;而先進(jìn)的技術(shù)提供了減輕體力勞動(dòng),改善服務(wù)質(zhì)量,提高經(jīng)
7、營(yíng)管理效率的途徑。 開(kāi)發(fā)符合我國(guó)國(guó)情的餐飲管理系統(tǒng)是市場(chǎng)的呼喚,是餐飲管理的需要,是社會(huì)信息化的必然。1.2 餐飲管理系統(tǒng)的發(fā)展以及現(xiàn)狀 餐飲管理系統(tǒng)是在餐廳中使用的計(jì)算機(jī)系統(tǒng),能部分替代體力勞動(dòng),能存儲(chǔ)、處理并傳遞業(yè)務(wù)數(shù)據(jù),簡(jiǎn)化餐廳的服務(wù)過(guò)程,加快服務(wù)速度;使餐廳管理者從繁雜的日常管理活動(dòng)中解脫出來(lái),專注于提高餐廳的服務(wù)水平和管理效率。餐飲管理系統(tǒng)經(jīng)歷了近十年的發(fā)展,日趨完善,受到廣大餐飲業(yè)人士的歡迎。1.2.1餐飲管理系統(tǒng)的發(fā)展階段 餐飲管理系統(tǒng)是社會(huì)發(fā)展和技術(shù)進(jìn)步的產(chǎn)物。二十世紀(jì)80年代,國(guó)外餐廳中開(kāi)始使用電子收銀系統(tǒng),改善了資金的管理;而真正功能意義上的餐飲管理系統(tǒng)是在90年代初才開(kāi)始
8、出現(xiàn)并逐步發(fā)展,其發(fā)展經(jīng)歷了以下三個(gè)階段:(1)純軟件型的餐飲管理系統(tǒng):是微機(jī)上運(yùn)行的一套由庫(kù)存管理、資金管理、人事管理和業(yè)務(wù)管理等軟件模塊的組合而成的純軟件型的餐飲管理系統(tǒng)。該系統(tǒng)提供用微機(jī)點(diǎn)菜的功能,并能存儲(chǔ)業(yè)務(wù)數(shù)據(jù)。由子是單機(jī)服務(wù),服務(wù)能力有限,不少業(yè)務(wù)數(shù)據(jù)是事后錄入的,缺少實(shí)時(shí)性;由于缺乏相應(yīng)的電子化網(wǎng)絡(luò)支撐,這類系統(tǒng)不能加快餐廳的服務(wù)速度,提高服務(wù)速度,不能滿足餐飲業(yè)經(jīng)營(yíng)者最迫切的需要。(2)有線終端式餐飲管理系統(tǒng):這類系統(tǒng)由主機(jī)以及與主機(jī)通過(guò)有線互連的觸摸屏終端組成,由有線終端向顧客提供點(diǎn)菜等服務(wù),主機(jī)軟件提供有關(guān)數(shù)據(jù)和信息管理功能以及業(yè)務(wù)數(shù)據(jù)統(tǒng)計(jì)報(bào)表功能,能處理業(yè)務(wù)信息并產(chǎn)生必要
9、的單據(jù)輸出。由多臺(tái)有線終端同時(shí)向顧客提供服務(wù),顧客的操作結(jié)果通過(guò)網(wǎng)絡(luò)傳送,簡(jiǎn)化了服務(wù)流程,提高了服務(wù)速度,餐廳和顧客同時(shí)享受到了便利。但這類系統(tǒng)有一個(gè)固有的缺陷,那就是它是有線連接的,擴(kuò)展能力有限:而且觸摸屏本身體積較大,安裝困難,因此終端數(shù)目受到限制,也限制了系統(tǒng)的推廣和普及。(3)無(wú)線終端式餐飲管理系統(tǒng):無(wú)線終端式的餐飲管理系統(tǒng)的終端通過(guò)無(wú)線方式傳送數(shù)據(jù),因此具有靈活性的特點(diǎn)。它是在吸取前兩代餐飲管理系統(tǒng)的長(zhǎng)處,克服它們?nèi)秉c(diǎn)的基礎(chǔ)上開(kāi)發(fā)的系統(tǒng):在滿足餐飲業(yè)經(jīng)營(yíng)者需要的同時(shí),著重于提高終端的便攜性并降低系統(tǒng)的使用、安裝和擴(kuò)展等方面的難度。由于終端通過(guò)無(wú)線連接,除了初期工程安裝時(shí)必須安裝基站外
10、,沒(méi)有其他安裝上的困難;在系統(tǒng)使用過(guò)程中可以隨意增加終端,而不影響系統(tǒng)的運(yùn)行:它代表了餐飲管理系統(tǒng)的發(fā)展趨勢(shì)和潮流。目前市場(chǎng)上的無(wú)線終端式餐飲管理系統(tǒng)主要有兩類,一種是紅外終端式,另一種是射頻無(wú)線終端式。綜上所述,第三類的餐飲管理系統(tǒng)安裝簡(jiǎn)單、易于擴(kuò)展且能較好地滿足餐廳的實(shí)際需要,因此受到客戶的青睞。1.2.2國(guó)內(nèi)外餐飲管理系統(tǒng)現(xiàn)狀: 在日韓兩國(guó),餐飲業(yè)正在進(jìn)行一次革命性的轉(zhuǎn)變。由于兩國(guó)餐飲業(yè)發(fā)展比較成熟,激烈的市場(chǎng)競(jìng)爭(zhēng)促使餐飲業(yè)管理人員設(shè)法提高管理效率和服務(wù)水平:全面、細(xì)致的管理還為納稅和審核提供了有力的輔助手段,因此這類系統(tǒng)的開(kāi)發(fā)也得到政府機(jī)關(guān)的支持和提倡。目前,這兩國(guó)的餐飲管理系統(tǒng)已經(jīng)很
11、成熟,有不同規(guī)模的、多種技術(shù)特色的餐飲管理系統(tǒng)出現(xiàn)在市場(chǎng)上,而基于射頻無(wú)線的系統(tǒng)在餐廳中廣泛使用。 我國(guó)的餐飲業(yè)管理系統(tǒng)的發(fā)展落后于國(guó)外,目前處于第二階段、第三階段的過(guò)度階段。早在90年代初,我國(guó)不少軟件公司致力于開(kāi)發(fā)餐飲管理系統(tǒng),較知名的有廣州的黑馬,深圳的科利華,連邦等等。近幾年,餐飲管理系統(tǒng)的研究也逐漸跟上國(guó)外的步伐,已經(jīng)有基于紅外的餐飲管理系統(tǒng)在餐廳中使用。但是還未見(jiàn)基于射頻無(wú)線的系統(tǒng)。1.3 餐飲管理系統(tǒng)的開(kāi)發(fā)背景隨著我國(guó)國(guó)民經(jīng)濟(jì)的穩(wěn)定增長(zhǎng),城鎮(zhèn)居民可支配收入不斷增加,人民不再以“溫飽”為滿足,更加注重飲食的質(zhì)量與檔次。據(jù)國(guó)家統(tǒng)計(jì)局統(tǒng)計(jì)數(shù)字顯示,20世紀(jì)90年代以來(lái),我國(guó)城鎮(zhèn)居民在外
12、就餐大幅度增長(zhǎng),大眾化餐飲成為市場(chǎng)主流,這極大推進(jìn)了餐飲行業(yè)的快速發(fā)展。另外,隨著我國(guó)正式加入wto與北京申辦2008年第29屆奧運(yùn)會(huì)的成功,餐飲業(yè)在未來(lái)幾年內(nèi)將始終保持一個(gè)較高的發(fā)展速度。目前我國(guó)城鎮(zhèn)擁有餐館350多萬(wàn)家,多數(shù)餐館規(guī)模小、服務(wù)質(zhì)量差。隨著餐飲業(yè)的鏈鎖和國(guó)外餐飲巨頭的加入,餐飲業(yè)的競(jìng)爭(zhēng)將會(huì)越來(lái)越激烈。要想在競(jìng)爭(zhēng)中處于不敗之地,必須在管理、服務(wù)等方面提高服務(wù)管理意識(shí)。經(jīng)過(guò)多年發(fā)展,餐飲管理已經(jīng)逐漸由定性管理,進(jìn)入到重視定量管理的科學(xué)階段,面對(duì)當(dāng)前餐飲業(yè)普遍的產(chǎn)業(yè)化程度低,管理手段、管理技術(shù)落后等問(wèn)題,使用計(jì)算機(jī)技術(shù)管理在很多程度上可以幫助餐飲企業(yè)克服這些困難。眾所周知,在定量管理
13、的具體實(shí)現(xiàn)方法和手段方面,最有效的工具就是電腦管理。計(jì)算機(jī)管理系統(tǒng)可以提高餐飲企業(yè)的管理水平,節(jié)省大量人力、物力和財(cái)力,使經(jīng)營(yíng)管理更加科學(xué)有序、經(jīng)營(yíng)物流清晰,經(jīng)營(yíng)狀況詳實(shí)、準(zhǔn)確。使用計(jì)算機(jī)管理系統(tǒng)可以給餐飲行業(yè)帶來(lái)以下的好處:(1) 可以提高工作效率日常需要的各種報(bào)表再不需要人工統(tǒng)計(jì),電腦自動(dòng)生成。(部分酒樓設(shè)專人負(fù)責(zé)統(tǒng)計(jì)工作,使用系統(tǒng)后,就不需要了)點(diǎn)菜、分單、出品、結(jié)帳、庫(kù)存信息全部一體化管理,大大提高工作效率,降低管理難度,酒樓管理變得非常輕松。(2)可以增加管理水平智能化安全庫(kù)存線確定功能,確保最合理的庫(kù)存水平,在不需要憑借老員工的經(jīng)驗(yàn)確定了。客戶關(guān)系管理模塊,確保您及早發(fā)現(xiàn)潛在的重要
14、客戶。(3)可以增加收入菜品組成分析能確保菜品配料保持穩(wěn)定,進(jìn)一步確保菜品質(zhì)量,促進(jìn)銷售,利于品牌營(yíng)造。自動(dòng)結(jié)帳使您可以任意增刪菜品,隨時(shí)調(diào)整菜品價(jià)格來(lái)適應(yīng)競(jìng)爭(zhēng)需要,提高競(jìng)爭(zhēng)力。(4)可以節(jié)約成本物品采購(gòu)價(jià)格分析可以有效降低采購(gòu)價(jià)格,確保成本降低。物品過(guò)期告警能減少物品過(guò)期現(xiàn)象出現(xiàn),減少浪費(fèi)。庫(kù)存管理自動(dòng)化能降低庫(kù)存盤點(diǎn)難度,可以適當(dāng)提高庫(kù)存盤點(diǎn)頻率,有效減少庫(kù)存物品流失。(5)提高酒樓的形象應(yīng)用計(jì)算機(jī)輔助管理酒樓,無(wú)形中提高了酒樓的形象。 綜上所述,因此,開(kāi)發(fā)出這樣一套功能完整的餐飲管理軟件,必定是符合社會(huì)發(fā)展的需要,符合人們的需求。2 餐飲管理系統(tǒng)有關(guān)基礎(chǔ)知識(shí)2.1 sql server
15、數(shù)據(jù)庫(kù)管理系統(tǒng)簡(jiǎn)介2.1.1數(shù)據(jù)庫(kù)的特點(diǎn)與文件系統(tǒng)相比 數(shù)據(jù)庫(kù)系統(tǒng)有以下特點(diǎn):(1)數(shù)據(jù)的結(jié)構(gòu)化 在文件系統(tǒng)中,文件之間不存在聯(lián)系 文件內(nèi)部的數(shù)據(jù)一般是有結(jié)構(gòu)的,但是從數(shù)據(jù)的整體來(lái)說(shuō)是沒(méi)有結(jié)構(gòu)的 數(shù)據(jù)庫(kù)系統(tǒng)也包含許多單獨(dú)的文件但是它們之間相互聯(lián)系 在整體上也服從一定的結(jié)構(gòu)形式從而能更適應(yīng)管理大量數(shù)據(jù)的需求 (2)數(shù)據(jù)共享 共享是數(shù)據(jù)庫(kù)系統(tǒng)的目的,也是其最重要的特點(diǎn),一個(gè)數(shù)據(jù)庫(kù)中的數(shù)據(jù)不僅可以為同一企業(yè)或者組織內(nèi)部的各部門共享,還可以為不同國(guó)家地區(qū)的用戶所共享. (3) 數(shù)據(jù)獨(dú)立性 在文件系統(tǒng)中,文件和應(yīng)用程序相互依賴,一方的改變總要影響另一方的改變,數(shù)據(jù)庫(kù)系統(tǒng)則力求較少這種依賴性,實(shí)現(xiàn)數(shù)據(jù)的獨(dú)
16、立性. (4)可控冗余度 數(shù)據(jù)專用后 每個(gè)用戶擁有并使用自己的數(shù)據(jù),許多數(shù)據(jù)就會(huì)出現(xiàn)重復(fù),這就是數(shù)據(jù)冗余.實(shí)現(xiàn)共享后,同一數(shù)據(jù)庫(kù)中的數(shù)據(jù)集中存儲(chǔ) ,共同使用因而易于避免重復(fù) ,減少和控制數(shù)據(jù)的冗余.2.1.2用戶分類數(shù)據(jù)庫(kù)系統(tǒng)的用戶是指使用和訪問(wèn)數(shù)據(jù)庫(kù)中數(shù)據(jù)的人,它包括以4種: (1)數(shù)據(jù)庫(kù)設(shè)計(jì)者 負(fù)責(zé)整個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的設(shè)計(jì)工作設(shè)計(jì)者依據(jù)用戶的需求設(shè)計(jì)合適的表和格式來(lái)存放數(shù)據(jù)并對(duì)整個(gè)數(shù)據(jù)庫(kù)的存取權(quán)限做出規(guī)劃 這些工作完成后 即可交給數(shù)據(jù)庫(kù)管理員進(jìn)行管理。注意:這里的設(shè)計(jì)者一般并不只是指一個(gè)人,而往往是一組人.(2)數(shù)據(jù)庫(kù)管理員 數(shù)據(jù)庫(kù)管理員 database administrator dba
17、決定數(shù)據(jù)庫(kù)種的數(shù)據(jù)并對(duì)這些數(shù)據(jù)進(jìn)行修改,維護(hù),監(jiān)督數(shù)據(jù)庫(kù)的運(yùn)行狀況.數(shù)據(jù)庫(kù)管理員的任務(wù)主要包括:決定數(shù)據(jù)庫(kù)的內(nèi)容, 管理賬號(hào),備份和還原數(shù)據(jù)以及提高數(shù)據(jù)庫(kù)的運(yùn)行效率. (3)應(yīng)用程序設(shè)計(jì)者 負(fù)責(zé)編寫(xiě)訪問(wèn)數(shù)據(jù)庫(kù)的應(yīng)用程序 使得用戶可以很友好地使用數(shù)據(jù)庫(kù),可以使用 visual basic visual c+ delphi 等來(lái)開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序.(4)普通用戶 普通用戶只需操作應(yīng)用程序來(lái)訪問(wèn)所需要查詢的數(shù)據(jù),不需要關(guān)心數(shù)據(jù)庫(kù)地具體格式及其維護(hù)和管理等問(wèn)題. 在實(shí)際工作中, 數(shù)據(jù)庫(kù)管理員利用賬號(hào)來(lái)控制每個(gè)用戶地訪問(wèn)權(quán)限,每個(gè)用戶都由自己的賬號(hào)和密碼 ,使用此賬號(hào)和密碼,用戶可以登錄數(shù)據(jù)庫(kù),并在允許
18、的權(quán)限范圍內(nèi)訪問(wèn)數(shù)據(jù)庫(kù)種的數(shù)據(jù).2.1.3數(shù)據(jù)庫(kù)管理系統(tǒng) (bdms) 數(shù)據(jù)庫(kù)管理系統(tǒng) (dbms) 是指幫助用戶建立,使用和管理數(shù)據(jù)庫(kù)的軟件系統(tǒng) ,他通常有下面三個(gè)組成部分:(1)數(shù)據(jù)描述語(yǔ)言( data description language ddl ) 用來(lái)描述數(shù)據(jù)庫(kù)的結(jié)構(gòu) 供用戶建立數(shù)據(jù)庫(kù)(2)數(shù)據(jù)操作語(yǔ)言 (data manipulation language dml) 供用戶對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)的查詢(數(shù)據(jù)的檢索和統(tǒng)計(jì)等)和存儲(chǔ)(數(shù)據(jù)的增加,刪除和修改等)等操作. (3)其他管理和控制程序 包括安全通訊控制和工作日志等.一般情況下ddl和 dml組成一個(gè)一體化的語(yǔ)言,對(duì)于關(guān)系型數(shù)據(jù)庫(kù)
19、,最常用的就是 sql structure query language語(yǔ)言,幾乎所有的數(shù)據(jù)庫(kù)管理系統(tǒng)都提供了對(duì) sql 語(yǔ)言的支持. 對(duì) ddl 和 dml數(shù)據(jù)庫(kù)管理系統(tǒng)都帶有翻譯程序,與普通高級(jí)語(yǔ)言類似翻譯程序也可以分為編譯執(zhí)行和解釋執(zhí)行兩種方式, 如 sql語(yǔ)言,既有解釋型也有編譯型. 數(shù)據(jù)庫(kù)管理系統(tǒng)提供了用戶和數(shù)據(jù)庫(kù)之間的軟件界面,使得用戶更方便地操作數(shù)據(jù)庫(kù) ,一般來(lái)說(shuō)它應(yīng)如下功能:(1)數(shù)據(jù)定義 和高級(jí)語(yǔ)言類似,需要定義需要的數(shù)據(jù)類型。(2)數(shù)據(jù)處理 dbms 必須提供用戶對(duì)數(shù)據(jù)庫(kù)的存取能力,包括記錄地增加,修改,檢索和刪除等。 (3)數(shù)據(jù)安全 管理和監(jiān)督用戶的權(quán)限 ,防止用戶有任何
20、破壞或者惡意的意圖. (4)效率 dbms 應(yīng)保證數(shù)據(jù)庫(kù)的高效率運(yùn)行, 以提高數(shù)據(jù)檢索和修改的速度 . 2.1.4網(wǎng)絡(luò)結(jié)構(gòu)可依據(jù)數(shù)據(jù)的多少,使用的人數(shù)與硬件設(shè)備等條件,將數(shù)據(jù)庫(kù)管理系統(tǒng)分為4種網(wǎng)絡(luò)結(jié)構(gòu):main frame 大型數(shù)據(jù)庫(kù),本地小型數(shù)據(jù)庫(kù),分布式數(shù)據(jù)庫(kù)和客戶機(jī)/服務(wù)器數(shù)據(jù)庫(kù)。下面分別介紹這4種網(wǎng)絡(luò)結(jié)構(gòu),并重點(diǎn)介紹客戶機(jī)/服務(wù)器數(shù)據(jù)庫(kù)。(1)main frame 大型數(shù)據(jù)庫(kù) 大型數(shù)據(jù)庫(kù)是由一臺(tái)性能很強(qiáng)的計(jì)算機(jī)(稱為主機(jī)或者數(shù)據(jù)庫(kù)服務(wù)器)負(fù)責(zé)處理龐大的數(shù)據(jù) 用戶通過(guò)終端機(jī)與大型主機(jī)相連,以存取數(shù)據(jù)。main frame 大型數(shù)據(jù)庫(kù)的所有檢索和修改的功能都由主機(jī)來(lái)完成 因此 在有多人使用
21、時(shí) 主機(jī)會(huì)非常忙碌 使得反映比較緩慢 另外 大型主機(jī)的性能很強(qiáng) 但價(jià)格都相當(dāng)昂貴一般只有大型機(jī)構(gòu)使用。 (2)本地小型數(shù)據(jù)庫(kù) 在用戶較少,數(shù)據(jù)量也不大的情況下,可使用本地小型數(shù)據(jù)庫(kù),一般是由個(gè)人建立的個(gè)人數(shù)據(jù)庫(kù),常用的dbms有access和 foxpro 等。 (3)分布式數(shù)據(jù)庫(kù) 分布式數(shù)據(jù)庫(kù)就是為了解決main frame 大型數(shù)據(jù)庫(kù)反映緩慢的問(wèn)題而提出的, 它是由多臺(tái)數(shù)據(jù)庫(kù)服務(wù)器組成, 數(shù)據(jù)可來(lái)自不同的服務(wù)器種。分布式數(shù)據(jù)庫(kù)可以將數(shù)據(jù)分放在不同的服務(wù)器上,這樣易于管理數(shù)據(jù),而且其存取效率也會(huì)比較高。(4)客戶機(jī)/服務(wù)器數(shù)據(jù)庫(kù) 隨著微機(jī)的發(fā)展,其運(yùn)算速度越來(lái)越快,而且價(jià)格低廉在利用網(wǎng)絡(luò)將終
22、端機(jī),一般為微機(jī)和數(shù)據(jù)庫(kù)服務(wù)器連接后就可以從數(shù)據(jù)庫(kù)服務(wù)器存取數(shù)據(jù),而且部分工作可以由終端機(jī)來(lái)完成,以分散數(shù)據(jù)庫(kù)服務(wù)器的負(fù)擔(dān),這樣數(shù)據(jù)庫(kù)服務(wù)器就不必是價(jià)格昂貴的大型主機(jī)等,這就是客戶機(jī)/服務(wù)器數(shù)據(jù)庫(kù)網(wǎng)絡(luò)結(jié)構(gòu)。在客戶機(jī)/服務(wù)器數(shù)據(jù)庫(kù)的最簡(jiǎn)單形式中,其數(shù)據(jù)庫(kù)的處理可分成兩個(gè)系統(tǒng):客戶機(jī)(client)和數(shù)據(jù)庫(kù)服務(wù)器(database server)前者運(yùn)行數(shù)據(jù)庫(kù)應(yīng)用程序,后者運(yùn)行全部或者部分?jǐn)?shù)據(jù)庫(kù)管理系統(tǒng)。在客戶機(jī)上的數(shù)據(jù)應(yīng)用程序,也稱為前端系統(tǒng)處理所有的屏幕和用戶輸入,輸出,在服務(wù)器上的后端系統(tǒng)處理和管理磁盤訪問(wèn)。例如前端系統(tǒng)的一個(gè)用戶對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)發(fā)出請(qǐng)求(也稱為查詢),前端應(yīng)用程序就將該請(qǐng)求
23、通過(guò)網(wǎng)絡(luò)發(fā)送給服務(wù)器,數(shù)據(jù)庫(kù)服務(wù)器就進(jìn)行搜索,并將用戶查詢所需的數(shù)據(jù)返回到客戶機(jī)。結(jié)構(gòu)形式如圖2.1所示:圖2.1客戶機(jī)/服務(wù)器數(shù)據(jù)庫(kù)形式客戶機(jī)/服務(wù)器結(jié)構(gòu)的直接優(yōu)點(diǎn)是很明顯的,由于將處理工作分在兩個(gè)系統(tǒng)上進(jìn)行,在網(wǎng)絡(luò)上的流量將大大較少,可以加速數(shù)據(jù)的傳送 。由于數(shù)據(jù)必須存放在一個(gè)單獨(dú)的系統(tǒng)中, 對(duì)于大公司來(lái)說(shuō)可能是一個(gè)問(wèn)題,因?yàn)樗麄兊臄?shù)據(jù)庫(kù)用戶分散在很廣的地理區(qū)域內(nèi) 或者需要與其他部門或者中心主機(jī)共享部分的部門數(shù)據(jù)庫(kù),這種情況就要求有一種方法能夠?qū)?shù)據(jù)分布在各個(gè)主機(jī)上,但是客戶機(jī)/服務(wù)器結(jié)構(gòu)下的網(wǎng)絡(luò)流量比較小,因而可以使得公司的局域網(wǎng)能輕松的訪問(wèn)遠(yuǎn)方的任何服務(wù)器。2.1.5 sql serv
24、er 2000概述microsoft sql server 2000( 簡(jiǎn)稱 sql server)由一系列相互協(xié)作的組件構(gòu)成,能滿足最大的 web 站點(diǎn)和企業(yè)數(shù)據(jù)處理系統(tǒng)存儲(chǔ)和分析數(shù)據(jù)的需要. sql server 提供了在服務(wù)器系統(tǒng)上運(yùn)行的服務(wù)器軟件和在客戶端運(yùn)行的客戶端軟件, 連接客戶和服務(wù)器計(jì)算機(jī)的網(wǎng)絡(luò)軟件則由 windows nt/2000 系統(tǒng)提供. sql server 的數(shù)據(jù)庫(kù)系統(tǒng)的服務(wù)器運(yùn)行在 windows nt/2000 系統(tǒng)上,負(fù)責(zé)創(chuàng)建和維護(hù)表和索引等數(shù)據(jù)庫(kù)對(duì)象 確保數(shù)據(jù)完整性和安全性, 能夠在出現(xiàn)各種錯(cuò)誤時(shí)恢復(fù)數(shù)據(jù). 客戶端應(yīng)用程序,可以運(yùn)行在 windows 9x/
25、nt/2000 系統(tǒng)上完成所有的用戶交互操作, 將數(shù)據(jù)從服務(wù)器檢索出來(lái)后, 可以生成拷貝以便在本地保留, 也可以進(jìn)行操作. 提示: 客戶/服務(wù)器 c/s 數(shù)據(jù)庫(kù)計(jì)算是一種分布式的數(shù)據(jù)存儲(chǔ), 訪問(wèn)和處理技術(shù), 在它已經(jīng)稱為大多數(shù)企業(yè)計(jì)算的標(biāo)準(zhǔn) microsoft sql server 是客戶/服務(wù)器系統(tǒng)應(yīng)用的完美例子.sql server的客戶/服務(wù)器提供了許多傳統(tǒng)主機(jī)數(shù)據(jù)庫(kù)所沒(méi)有的先進(jìn)功能.數(shù)據(jù)訪問(wèn)并非局限于某些已有的主機(jī)數(shù)據(jù)庫(kù)應(yīng)用程序. sql server 的一個(gè)主要優(yōu)點(diǎn)就是與主流客戶/服務(wù)器開(kāi)發(fā)工具和桌面應(yīng)用程序的緊密集成,可以使用許多方法訪問(wèn)sql server 數(shù)據(jù)庫(kù), 例如 ,可以
26、在visual basic, visual c+, access, powerbuilder, delphi 和 visual foxpro 中訪問(wèn) sql server 數(shù)據(jù)庫(kù). 在進(jìn)行數(shù)據(jù)庫(kù)應(yīng)用程序開(kāi)發(fā)時(shí),可以使用數(shù)據(jù)訪問(wèn)對(duì)象 (ado), 遠(yuǎn)程數(shù)據(jù)對(duì)象(rdo),activex 控件,ole db, odbc ,db-library和其它第三方提供的開(kāi)發(fā)工具訪問(wèn)sql server 數(shù)據(jù)庫(kù). sql server 的客戶端應(yīng)用程序可以通過(guò)sql server 提供的應(yīng)用程序接口來(lái)訪問(wèn)服務(wù)器端的數(shù)據(jù).有4個(gè)主要的訪問(wèn)方法:odbc, api ole db, transact-sql 和 d
27、b-library .對(duì)于客戶機(jī),可以將這些 api 作為動(dòng)態(tài)連接庫(kù)來(lái)使用,并且通過(guò)客戶端的網(wǎng)絡(luò)庫(kù)與 sql server 服務(wù)器通信.2.1.6安裝sql server 2000的系統(tǒng)要求 在安裝 sql server 2000 以前,必須配置適當(dāng)?shù)挠布蛙浖⒈WC它們正常運(yùn)行,應(yīng)該在安裝 sql server 2000 之前檢查硬件和軟件的安裝情況,這可以避免很多安裝過(guò)程中發(fā)生的問(wèn)題。(1)硬件要求:計(jì)算機(jī):intel系列或兼容機(jī),pentium 166m hz或更高內(nèi)存(ram):企業(yè)版:至少64mb,推薦128mb或更多 標(biāo)準(zhǔn)版:至少64mb 個(gè)人版:windows 2000/xp上
28、至少64mb,其他操作系統(tǒng)上至少32mb硬盤空間: sql server 數(shù)據(jù)庫(kù)組件:95-270mb,一般為250mb analysis service:至少50mb,一般為130mb english query:80mb監(jiān)視器:vga或更高分辨率;sql 圖形工具要求800*600或更高分辨率定位設(shè)備:microsoft鼠標(biāo)或兼容設(shè)備cd-rom驅(qū)動(dòng)器:需要 對(duì)于內(nèi)存大小,會(huì)由于操作系統(tǒng)的不同,可能需要額外的內(nèi)存,而實(shí)際的盤空間要求也會(huì)因系統(tǒng)配置和選擇安裝的應(yīng)用程序和功能的不同而異。注意: microsoft sql server 2000 沒(méi)有硬件兼容性列表hcl,如果計(jì)算機(jī)滿足上表所列
29、的最低要求,則對(duì)于能夠在windows 操作系統(tǒng)中使用的硬件,sql server 2000 軟件即可運(yùn)行。(2)軟件要求sql server 2000 包括企業(yè)版,標(biāo)準(zhǔn)版,開(kāi)發(fā)版和個(gè)人版每個(gè)版本對(duì)操作系統(tǒng)的要求都有所不同,每個(gè)版本及其組件安裝所需要的操作系統(tǒng)如下所示:企業(yè)版:microsoft windows nt server 4.0 ;microsoft windows nt server4.0 企業(yè)版; windows 2000 server; windows 2000 advanced server 和 windows 2000 data center server 標(biāo)準(zhǔn)版:micr
30、osoft windows nt server 4.0 ;windows 2000 server; microsoft windows nt server 企業(yè)版;windows 2000 advanced server 和 windows 2000 data center server。 個(gè)人版:microsoft windows me; windows 98 windows nt workstation 4.0; windows 2000 professional ;microsoft windows nt server 4.0; windows 2000 server 和所有更高級(jí)的 w
31、indows 操作系統(tǒng)。 注意: sql server 2000 的某些功能要求必須在 microsoft windows 2000 server(任何版本)下才可以使用。另外,在microsoft windows nt server 4.0 上 必須安裝 service pack5 sp5 或更高版本,這是 sql server 2000 所有版本的最低要求,而且 sql server 2000 中文版不支持英文版的 nt 4.0企業(yè)版, 如果在不帶網(wǎng)卡的 windows 98 計(jì)算機(jī)上安裝 sql server 2000 個(gè)人版,需要 windows 98 第二版。2.1.7系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)
32、思想一個(gè)成功的管理系統(tǒng),是建立在許多條件之上的,而數(shù)據(jù)庫(kù)是其中一個(gè)非常重要的條件和關(guān)鍵技術(shù)。系統(tǒng)所涉及的數(shù)據(jù)庫(kù)設(shè)計(jì)分五個(gè)步驟:數(shù)據(jù)庫(kù)需求分析、概念設(shè)計(jì)、邏輯設(shè)計(jì)、物理設(shè)計(jì)與加載測(cè)試。(1)數(shù)據(jù)庫(kù)需求分析的任務(wù)是將業(yè)務(wù)管理單證流化為數(shù)據(jù)流,劃分主題之間的邊界,繪制出dfd圖,并完成相應(yīng)的數(shù)據(jù)字典。(2)概念設(shè)計(jì)的任務(wù)是從dfd出發(fā),繪制出本主題的實(shí)體關(guān)系圖,并列出各個(gè)實(shí)體與關(guān)系的綱要表。(3)邏輯設(shè)計(jì)的任務(wù)是從e-r圖與對(duì)應(yīng)的綱要表出發(fā),確定各個(gè)實(shí)體及關(guān)系的表名屬性。(4)物理設(shè)計(jì)的任務(wù)是確定所有屬性的類型、寬度與取值范圍,設(shè)計(jì)出基本表的主鍵,將所有的表名與字段名英文化(現(xiàn)在很多軟件能支持中文字
33、段,如mssqlserver,我就是用的中文字段名),實(shí)現(xiàn)物理建庫(kù),完成數(shù)據(jù)庫(kù)物理設(shè)計(jì)字典。(5)加載測(cè)試工作貫穿于程序測(cè)試工作的全過(guò)程,整個(gè)錄入、修改、查詢、處理工作均可視為對(duì)數(shù)據(jù)庫(kù)的加載測(cè)試工作。 要設(shè)計(jì)出一個(gè)好的信息管理系統(tǒng)數(shù)據(jù)庫(kù),除滿足系統(tǒng)所要求的功能外,還必須遵守下列原則:.基本表的個(gè)數(shù)越少越好。.主鍵的個(gè)數(shù)越少越好。鍵是表間連接的工具,主鍵越少,表間的連接就越簡(jiǎn)單。.字段的個(gè)數(shù)越少越好。.所有基本表的設(shè)計(jì)均應(yīng)盡量符合第三范式。2.1.8 sql編程設(shè)計(jì)sql 語(yǔ)言是應(yīng)用于數(shù)據(jù)庫(kù)的語(yǔ)言,本身是不能獨(dú)立存在的是一種非過(guò)程性語(yǔ)言( non-procedural 語(yǔ)言),與一般的高級(jí)語(yǔ)言,
34、例如 c pascal 是大不相同的。一般的高級(jí)語(yǔ)言在存取數(shù)據(jù)庫(kù)時(shí),需要依照每一行程序的順序處理許多的動(dòng)作 ,但是使用 sql 時(shí) 只需告訴數(shù)據(jù)庫(kù)需要什么數(shù)據(jù),怎么顯示就可以了, 具體的內(nèi)部操作則由數(shù)據(jù)庫(kù)系統(tǒng)來(lái)完成。例如在本系統(tǒng)中,要從tlcyglxt數(shù)據(jù)庫(kù)中的“菜譜費(fèi)用信息表”中查找菜名為“一品鮑魚(yú)湯” 的菜,則可以使用簡(jiǎn)單的幾行命令即可(實(shí)際上,該語(yǔ)句經(jīng)常寫(xiě)為一行,這里只是為了說(shuō)明,將其分成了3行)select *from 菜譜費(fèi)用信息表where 菜名=一品鮑魚(yú)湯(1)sql語(yǔ)言的分類 sql 語(yǔ)言按照用途可以分為如下3類:(ddl data definition language) 數(shù)
35、據(jù)定義語(yǔ)言(dml data manipulation language)數(shù)據(jù)處理語(yǔ)言(dcl data control language)數(shù)據(jù)控制語(yǔ)言下面分別介紹這3類:數(shù)據(jù)定義語(yǔ)言在數(shù)據(jù)庫(kù)系統(tǒng)中,每一個(gè)數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)中的表,視圖和索引等都是對(duì)象,要建立一個(gè)對(duì)象 ,都可以通過(guò) sql 語(yǔ)言來(lái)完成,類似于這一類定義數(shù)據(jù)庫(kù)對(duì)象的 sql 敘述即為 ddl 語(yǔ)言。例如數(shù)據(jù)庫(kù)和表的創(chuàng)建,用creat來(lái)創(chuàng)建。下面是ddl命令:createtable,altertable,droptable,createindex,dropindex數(shù)據(jù)處理語(yǔ)言sql語(yǔ)法中處理數(shù)據(jù)的敘述稱為 dml,例如使用 sele
36、ct查詢表中的內(nèi)容 或者使用 insert(插入)delete( 刪除)和 update(更新)一筆記錄等, 這些屬于dml。數(shù)據(jù)控制語(yǔ)言對(duì)單個(gè)的 sql 語(yǔ)句來(lái)說(shuō),不管執(zhí)行成功或者失敗,都不會(huì)影響到其他的 sql 語(yǔ)句。但是在某些情況下,可能需要一次處理好幾個(gè) sql 語(yǔ)句,而且希望它們必須全部執(zhí)行成功。如果其中一個(gè)執(zhí)行失敗,則這一批 sql 語(yǔ)句都不要執(zhí)行,已經(jīng)執(zhí)行的應(yīng)該恢復(fù)到開(kāi)始的狀態(tài)。舉個(gè)簡(jiǎn)單的銀行轉(zhuǎn)賬的例子,假設(shè)要從 a 賬戶中轉(zhuǎn) 10000元到 b 賬戶中,首先從 a 賬戶中扣除 10000 元 ,然后在 b 賬戶中加入 10000 元。 但是 ,如果從 a 賬戶中扣除 10000
37、 元后 出現(xiàn)錯(cuò)誤, 導(dǎo)致下一步在 b 賬戶中加入 10000 元的操作不能完成,則 a 賬戶白白被扣除了 10000 元。 因此, 應(yīng)保證這些操作要么一起完成, 要么都不要執(zhí)行。 這種方式在 sql 中稱作事務(wù)(transaction)。在 sql 中, 可以使用 dcl 將數(shù)個(gè) sql 語(yǔ)句組合起來(lái), 然后交給數(shù)據(jù)庫(kù)系統(tǒng)一并處理。(2)如何使用這些語(yǔ)言? 查詢數(shù)據(jù)數(shù)據(jù)庫(kù)存在的意義在于將數(shù)據(jù)組織在一起,以方便查詢。查詢的含義就是用來(lái)描述從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)和操縱數(shù)據(jù)的過(guò)程。sql語(yǔ)言中最主要,最核心的部分是它的查詢功能。查詢語(yǔ)言用來(lái)對(duì)已經(jīng)存在于數(shù)據(jù)庫(kù)中的數(shù)據(jù),按照特定的組合,條件表達(dá)式或者一定次
38、序進(jìn)行檢索,其基本格式由 select 子句from 子句和 where 子句組成的sql 查詢語(yǔ)句:select from where 也就是說(shuō) select 指定了要查看的列,字段 from 指定這些數(shù)據(jù)來(lái)自那里,表或者視圖 where 則指定了要查詢那些行,記錄。完整的 select 語(yǔ)句的用法如下所示:select select_listinto new_talbefrom table_sourcewhere search_conditiongroup by group_by_expressionhaving search_conditionorder by order_express
39、ion asc | desc其中, 帶有方括號(hào)的子句均是可選子句, 大寫(xiě)的單詞表示sql 的關(guān)鍵字, 而小寫(xiě)的單詞或者單詞組合表示表(視圖)名稱或者給定條件.插入與刪除數(shù)據(jù)新增數(shù)據(jù)使用 insert 語(yǔ)句 其語(yǔ)法如下:insert into table_name column_listvalues (data_values)其中各項(xiàng)參數(shù)的含義如下:table_name 要新增數(shù)據(jù)的表或者視圖名稱.column_list 要新增數(shù)據(jù)的字段名稱,若沒(méi)有指定字段列表 則指全部字段.data_values 新增記錄的字段值 ,必須和column_list 相對(duì)應(yīng),也就是說(shuō)每一個(gè)字段必須對(duì)應(yīng)到一個(gè)字段值
40、.如在表 authors 中插入一筆記錄,即新增一個(gè)作者,輸入 sql語(yǔ)句如下:insert authors(author_id,author_name) values(3,張英魁)刪除數(shù)據(jù)要?jiǎng)h除數(shù)據(jù)可以使用 delete 語(yǔ)句,其語(yǔ)法如下:delete table_name where serach_condition其中table_name 是要?jiǎng)h除數(shù)據(jù)的表的名稱;search_condition 是用來(lái)查找要?jiǎng)h除數(shù)據(jù)的條件。例如, 刪除 book 表中windows 2000 professional 看圖速成 一書(shū)的記錄,可以輸入以下 sql 語(yǔ)句:delete bookwhere b
41、ook_name=windows 2000 professional 看圖速成如果要?jiǎng)h除表中所有的行則可以使用 truncate 語(yǔ)句,其語(yǔ)法格式如下:truncate table table_name下面的例子即為刪除 authors 表中的所有數(shù)據(jù):truncate table authors修改數(shù)據(jù)在數(shù)據(jù)輸入過(guò)程中,可能會(huì)出現(xiàn)輸入錯(cuò)誤,或者是因時(shí)間變化而需要更新數(shù)據(jù),這都需要修改數(shù)據(jù)??梢栽谄髽I(yè)管理器中一筆一筆的修改記錄,但是使用 sql 語(yǔ)言可能會(huì)更快捷。修改數(shù)據(jù)需要使用 update 語(yǔ)句,其語(yǔ)法如下:update table_name set columnwhere conditi
42、on例如,將 authors 表中作者為 “王小明” 全部改為 “王曉明”。sql 語(yǔ)句如下:update authors set author_name=王曉明where author_name=王小明2.2 delphi 數(shù)據(jù)庫(kù)開(kāi)發(fā)2.2.1 delphi 數(shù)據(jù)庫(kù)應(yīng)用程序體系結(jié)構(gòu) 在單機(jī)版系統(tǒng)中,數(shù)據(jù)庫(kù)和應(yīng)用程序位于同臺(tái)微機(jī)上,我采用的是delphi兩層體系結(jié)構(gòu):在網(wǎng)絡(luò)版方案中,數(shù)據(jù)庫(kù)位于服務(wù)器上,而應(yīng)用程序位于遠(yuǎn)程客戶機(jī)上,采用h層體系結(jié)構(gòu)。以下就delphi數(shù)據(jù)庫(kù)應(yīng)用程序體系結(jié)構(gòu)進(jìn)行簡(jiǎn)單介紹,并對(duì)其中的兩層、多層體系結(jié)構(gòu)進(jìn)行詳細(xì)介紹。2.2.2delphi數(shù)據(jù)庫(kù)體系結(jié)構(gòu)簡(jiǎn)述 delph
43、i使用一種新的開(kāi)放式數(shù)據(jù)庫(kù)體系結(jié)構(gòu)來(lái)創(chuàng)建數(shù)據(jù)庫(kù)應(yīng)用程序。甚至可以不使用bde,而采用另一種新的客戶機(jī)數(shù)據(jù)集組件來(lái)創(chuàng)建數(shù)據(jù)庫(kù)應(yīng)用程序。采用這種開(kāi)放式體系結(jié)構(gòu);可以創(chuàng)建三種類型的數(shù)據(jù)庫(kù)應(yīng)用程序:(1)單層體系結(jié)構(gòu):這種結(jié)構(gòu)的數(shù)據(jù)庫(kù)應(yīng)用程序可以通過(guò)bde操作本地的paradox和 dbase數(shù)據(jù)文件,它直接讀寫(xiě)本地的平面數(shù)據(jù)文件。(2)雙層體系結(jié)構(gòu):這種結(jié)構(gòu)的數(shù)據(jù)庫(kù)應(yīng)用程序,是客戶機(jī)/服務(wù)器結(jié)構(gòu)中的客戶機(jī)應(yīng)用程序,它可以和本地的或遠(yuǎn)程的數(shù)據(jù)庫(kù)服務(wù)器交互。(3)多層體系結(jié)構(gòu):這種結(jié)構(gòu)的數(shù)據(jù)庫(kù)應(yīng)用程序是部分的客戶機(jī)服務(wù)器應(yīng)用程序,其中的客戶機(jī)程序提供用戶接口;并與一個(gè)應(yīng)用服務(wù)器(有時(shí)也稱遠(yuǎn)程數(shù)據(jù)代理)交
44、互,而這個(gè)通常駐留在其它機(jī)器上的應(yīng)用服務(wù)器又和一個(gè)遠(yuǎn)程數(shù)據(jù)庫(kù)服務(wù)器交互。這三種結(jié)構(gòu)的數(shù)據(jù)庫(kù)應(yīng)用程序都使用delphi的開(kāi)放式數(shù)據(jù)集的體系結(jié)構(gòu),delphi提供了幾種不同的方式來(lái)構(gòu)造數(shù)據(jù)庫(kù)應(yīng)用程序,既可以通過(guò)bde來(lái)連接數(shù)據(jù)庫(kù),也可以通過(guò)其它數(shù)據(jù)庫(kù)引擎來(lái)連接數(shù)據(jù)庫(kù),此外delphi提供一種直接和數(shù)據(jù)庫(kù)相連的方法,那就是通過(guò)clientdataset和數(shù)據(jù)庫(kù)相連。 下面分別介紹兩層和多層數(shù)據(jù)庫(kù)應(yīng)用體系結(jié)構(gòu),以及創(chuàng)建它們所應(yīng)用的組件2.2.3雙層數(shù)據(jù)庫(kù)應(yīng)用程序體系結(jié)構(gòu)在兩層數(shù)據(jù)庫(kù)應(yīng)用程序模型中,客戶機(jī)應(yīng)用程序?yàn)閿?shù)據(jù)提供一個(gè)應(yīng)用界面,通過(guò)bde直接與本地或遠(yuǎn)程的數(shù)據(jù)庫(kù)服務(wù)器交互。 這種模型中,所有的d
45、elphi應(yīng)用程序都是數(shù)據(jù)庫(kù)的客戶??蛻艨梢韵驍?shù)據(jù)庫(kù)服務(wù)器請(qǐng)求信息或者發(fā)送信息。一個(gè)服務(wù)器能夠同時(shí)處理許多請(qǐng)求,并協(xié)調(diào)數(shù)據(jù)的訪問(wèn)和更新。2.2.4多層數(shù)據(jù)庫(kù)應(yīng)用程序的結(jié)構(gòu) 在多層結(jié)構(gòu)的數(shù)據(jù)庫(kù)模型中,一個(gè)應(yīng)用程序被分成幾個(gè)部分,駐留在不同的機(jī)器上。客戶機(jī)應(yīng)用程序?yàn)閿?shù)據(jù)提供一個(gè)用戶界面,它通過(guò)一個(gè)應(yīng)用程序服務(wù)器來(lái)傳遞數(shù)據(jù)請(qǐng)求。應(yīng)用程序服務(wù)器會(huì)直接與一個(gè)遠(yuǎn)程數(shù)據(jù)庫(kù)服務(wù)器通信。在這種模型中,客戶機(jī)應(yīng)用程序、應(yīng)用服務(wù)器和遠(yuǎn)程數(shù)據(jù)庫(kù)服務(wù)器可以分布在不同的機(jī)器上。如圖2.2所示:圖2.2多層結(jié)構(gòu)的數(shù)據(jù)庫(kù)模型 使用delphi可以創(chuàng)建客戶機(jī)程序和應(yīng)用程序服務(wù)器。一個(gè)客戶機(jī)程序使用標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)控制組件,并通過(guò)一
46、個(gè)數(shù)據(jù)源連接了一個(gè)或多個(gè)客戶機(jī)數(shù)據(jù)集組件。每一個(gè)客戶機(jī)數(shù)據(jù)集通過(guò) iprovider 接口(它是應(yīng)用程序服務(wù)器的遠(yuǎn)程數(shù)據(jù)模塊的一部分)與應(yīng)用程序服務(wù)器通信。iprovider接口是一個(gè)activex雙重接口,它是當(dāng)一個(gè)客戶機(jī)第一次使用tremt6server組件建立與應(yīng)用程序服務(wù)器的初始連接時(shí),由應(yīng)用程序服務(wù)器創(chuàng)建的。 應(yīng)用程序服務(wù)器創(chuàng)建iprovider接口有兩種方法:一種是應(yīng)用程序服務(wù)器包括一個(gè)或多個(gè) iprovider對(duì)象,這些對(duì)象可以用來(lái)創(chuàng)建接口;另一種情況時(shí)沒(méi)有iprovider對(duì)象,delphi可以自動(dòng)創(chuàng)建iprovider接口。一般來(lái)說(shuō),使用iprovider組件可以對(duì)接口有更多
47、的控制。在任何一種情況下,客戶機(jī)程序和應(yīng)用程序服務(wù)器都是通過(guò)這個(gè)接口傳遞數(shù)據(jù)的。這個(gè)接口從數(shù)據(jù)集組件收集數(shù)據(jù),并把更新信息送回給它。這些組件是通過(guò)bde與數(shù)據(jù)庫(kù)服務(wù)器通信的??偠灾诙鄬咏Y(jié)構(gòu)中,有多個(gè)與應(yīng)用程序服務(wù)器通信的客戶機(jī)程序。應(yīng)用程序服務(wù)器,為所有客戶機(jī)程序提供了訪問(wèn)數(shù)據(jù)庫(kù)的網(wǎng)關(guān),這樣我們就集中控制了對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)。2.2.5 delphi數(shù)據(jù)庫(kù)組件(1)用delphi6開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用,重點(diǎn)是和各種數(shù)據(jù)庫(kù)組件打交道,能和數(shù)據(jù)庫(kù)掛鉤的組件對(duì)象有5種,它們是:session(數(shù)據(jù)庫(kù)會(huì)話)、database(數(shù)據(jù)庫(kù))、dataset(數(shù)據(jù)集)、datasource(數(shù)據(jù)源)、dataco
48、ntrol(數(shù)據(jù)控制組件,也叫data-controls即數(shù)據(jù)感知組件)。其中前面4種統(tǒng)稱為數(shù)據(jù)訪問(wèn)(dataaccess)組件。(2)ado組件delphi6.0包含了可以用來(lái)訪問(wèn)microsoft公司的activexdataobjects(ado)格式數(shù)據(jù)庫(kù)的組件。ado是microsoft公司關(guān)于各種類型數(shù)據(jù)的高等界面,后來(lái)逐漸演變成滿足所有數(shù)據(jù)訪問(wèn)需要的完整解決辦法。ado的對(duì)象模型是所有數(shù)據(jù)訪問(wèn)接口對(duì)象模型中最簡(jiǎn)單的一種。microsoft公司用來(lái)訪問(wèn)ado數(shù)據(jù)的應(yīng)用程序界面技術(shù)是oledb。oledb是一種底層編程接口,用來(lái)訪問(wèn)許多不同類型的數(shù)據(jù)源,其中包括消息、文件系統(tǒng)以及其他一
49、些非傳統(tǒng)的數(shù)據(jù)源。oledb是一個(gè)由componentobjectmodel(com)接口組成的集合,用來(lái)隱藏創(chuàng)建數(shù)據(jù)訪問(wèn)服務(wù)過(guò)程中的細(xì)節(jié)。oledb提供了訪問(wèn)任何數(shù)據(jù)資源的方法,包括相互關(guān)聯(lián)的數(shù)據(jù)庫(kù)和相互不關(guān)聯(lián)的數(shù)據(jù)庫(kù)、email和文件系統(tǒng)、文本和圖形以及用戶定義的數(shù)據(jù)對(duì)象。 delphi的ado組件無(wú)需依靠bde而是使用ado技術(shù),提供了可以通過(guò)數(shù)據(jù)控制組件訪問(wèn)數(shù)據(jù)的新方法。唯一的要求是在使用ado組件時(shí)必須運(yùn)行ado/oledb。ado組件的使用使得delphi在訪問(wèn)數(shù)據(jù)的類型和采用的技術(shù)方面都有了很大的突破。2.2.6 sql語(yǔ)言在delphi中的應(yīng)用在delphi中使用sql語(yǔ)言非常
50、方便,一般來(lái)說(shuō),都是通過(guò)tquery或tadoquery組件來(lái)使用sql語(yǔ)言的??梢栽趖query 或tadoquery組件的sql屬性中設(shè)置sql語(yǔ)句。設(shè)計(jì)程序時(shí),在該組件的屬性對(duì)話框中選擇sql屬性,單擊帶省略號(hào)的按鈕,就可以打開(kāi)stringlisteditor對(duì)話框,然后我們就可以在對(duì)話框中添加sql語(yǔ)句。還可以使用delphi的sqlbuilder來(lái)自動(dòng)生成sql語(yǔ)句,這樣可以避免手工編寫(xiě)sql而可能造成的語(yǔ)法錯(cuò)誤。靜態(tài)sql語(yǔ)句在程序設(shè)計(jì)時(shí)便已固定下來(lái),它不包含任何參數(shù)和變量。動(dòng)態(tài)sql語(yǔ)句,也被稱作參數(shù)化的語(yǔ)句,在其中間包含著表示字段名或表名的參數(shù).例如下面的語(yǔ)句是一條動(dòng)態(tài)sql語(yǔ)
51、句:select*frombookwhere圖書(shū)編號(hào)=:bookcode;其中的變量bookcode便是一個(gè)參數(shù)變量,它由一個(gè)冒號(hào)引導(dǎo),在程序運(yùn)行過(guò)程中,必須要為該參數(shù)賦值,該條sql語(yǔ)句才能正確執(zhí)行,每次運(yùn)行應(yīng)用程序時(shí)可以為該參數(shù)變量賦予不同的值。為參數(shù)賦值有三種方法:根據(jù)參數(shù)在sql語(yǔ)句中出現(xiàn)的順序,設(shè)置tadoquery組件的parameters屬性值為參數(shù)賦值。直接根據(jù)sql語(yǔ)句中各參數(shù)的名字,調(diào)用parambyname方法來(lái)為各參數(shù)賦值。將tadoquery組件的datasource屬性設(shè)置為另一個(gè)數(shù)據(jù)源,這樣將另一個(gè)數(shù)據(jù)源中與當(dāng)前tadoquery組件的sql語(yǔ)句中的參數(shù)名相匹配的
52、字段值賦給其對(duì)應(yīng)的參數(shù)。利用這種方法也能實(shí)現(xiàn)所謂的連接查詢,創(chuàng)建主要明細(xì)型數(shù)據(jù)庫(kù)應(yīng)用。 在使用動(dòng)態(tài)sql語(yǔ)句編程時(shí),常常用到一個(gè)很重要的方法prepare,調(diào)用prepare方法之后,delphi會(huì)將帶參數(shù)的sql語(yǔ)句傳送給與其對(duì)應(yīng)的數(shù)據(jù)庫(kù)引擎,對(duì)動(dòng)態(tài)sql語(yǔ)句進(jìn)行語(yǔ)法分析和優(yōu)化。雖然在用動(dòng)態(tài)sql語(yǔ)句編程時(shí),調(diào)用prepare方法并不是必須的,但是調(diào)用prepare方法后,會(huì)極大地提高動(dòng)態(tài)sql語(yǔ)句的執(zhí)行性能,特別是當(dāng)要反復(fù)多次執(zhí)行同一條動(dòng)態(tài)sql語(yǔ)句時(shí),其優(yōu)越性會(huì)更加明顯。如果在應(yīng)用程序中執(zhí)行一條sql語(yǔ)句之前并沒(méi)有顯示地調(diào)用prepare方法,每次在執(zhí)行sql語(yǔ)句時(shí),delphi會(huì)隱含地
53、調(diào)用prepare方法以準(zhǔn)備這個(gè)查詢。 tadoquery部件還有一個(gè)prepare屬性,這是一個(gè)布爾型屬性,當(dāng)其屬性值為true時(shí),表明該查詢已被準(zhǔn)備好了(sql語(yǔ)句已被傳送到數(shù)據(jù)庫(kù)引擎中),當(dāng)我們使用參數(shù)編輯器parameterseditor來(lái)為動(dòng)態(tài)sql語(yǔ)句中的參數(shù)賦值時(shí),當(dāng)設(shè)置完相應(yīng)的參數(shù)值并退出參數(shù)編輯器時(shí),delphi會(huì)隱含地調(diào)用prepare方法以準(zhǔn)備好查詢。 當(dāng)sql語(yǔ)句執(zhí)行完之后,要想準(zhǔn)備下一個(gè)查詢,首先必須調(diào)用close方法,然后才能調(diào)用prepare方法準(zhǔn)備下一個(gè)查詢。一般來(lái)說(shuō),在一個(gè)應(yīng)用程序中應(yīng)該調(diào)用一次prepare方法,常常在窗體的oncreate事件處理過(guò)程中調(diào)用
54、prepare方法,然后用上述介紹的方法為參數(shù)賦值,最后調(diào)用open方法或execsql方法執(zhí)行sql語(yǔ)句,以完成查詢。 當(dāng)然在調(diào)用prepare方法準(zhǔn)備好一個(gè)查詢時(shí),會(huì)消耗一些數(shù)據(jù)庫(kù)資源,因而每當(dāng)一個(gè)查詢執(zhí)行完畢之后,要養(yǎng)成調(diào)用unprepare方法以撤消查詢的好習(xí)慣。在運(yùn)行程序過(guò)程中,通過(guò)程序改變tquery或tadoquery部件的sql屬性值時(shí),delphi會(huì)自動(dòng)地調(diào)用close方法和unprepare方法,以撤消查詢。 在程序運(yùn)行過(guò)程中,要想設(shè)置tquery或tadoquery部件的sql屬性,必須首先調(diào)用close方法,關(guān)閉tquery或tadoquery部件,然后再調(diào)用clear
55、方法清除sql屬性中現(xiàn)存的sql命令語(yǔ)句,最后再調(diào)用add方法為sql屬性設(shè)置新的sql命令語(yǔ)句。例如:datamodule4.adoquery2.close;datamodule4.adoquery2.sql.clear;datamodule4.adoquery2.sql.add(select借書(shū)證號(hào),密碼fromuserwhere(借書(shū)證號(hào)=:tt);datamodule4.adoquery2.parameters0.value:=username;datamodule4.adoquery2.open;在為tquery或tadoquery部件設(shè)置sql屬性時(shí)調(diào)用close方法總是很安全的,
56、如果tquery或tadoquery部件已經(jīng)被關(guān)閉了,調(diào)用close方法時(shí)不會(huì)產(chǎn)生任何影響。在應(yīng)用程序中為sql屬性設(shè)置新的sql命令語(yǔ)句時(shí),必須要調(diào)用clear方法以清除sql屬性中現(xiàn)存的sql命令語(yǔ)句,如果不調(diào)用clear方法,便調(diào)用add方法向sql屬性中設(shè)置sql命令語(yǔ)句,那么新設(shè)置的sql命令語(yǔ)句會(huì)追加在現(xiàn)存sql命令語(yǔ)句后面,在程序運(yùn)行時(shí)常常會(huì)出現(xiàn)出乎意料的查詢結(jié)果甚至程序無(wú)法運(yùn)行下去。 在這里要特別注意的,一般情況下tquery或tadoquery部件的sql屬性只能包含一條完整的sql語(yǔ)句,它不允許被設(shè)置成多條sql語(yǔ)句。當(dāng)然有些數(shù)據(jù)庫(kù)服務(wù)器也支持在tquery或tadoquery部件的sql屬性中設(shè)置多條sql語(yǔ)句,只要數(shù)據(jù)庫(kù)服務(wù)器允許這樣,我們?cè)诰幊虝r(shí)可以為sql屬性設(shè)置多條sql語(yǔ)句。在為tquery或tadoquery部件設(shè)置完sql屬性的屬性值之后,也即編寫(xiě)好適當(dāng)?shù)膕ql程序之后,可以有多種方式來(lái)執(zhí)行sql程序。 在設(shè)計(jì)過(guò)程中,設(shè)置完tquery或tadoquery部件的sql屬性之后將其active屬性的值置為true,這樣便可以執(zhí)行sql屬性中的sql程序,如果應(yīng)用中有與tquery或tadoquery部件相連的數(shù)據(jù)瀏覽部件(如tddgridtdbedit等)那
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州大學(xué)《影視音樂(lè)欣賞》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴陽(yáng)幼兒師范高等??茖W(xué)校《舞臺(tái)語(yǔ)言基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025江蘇省建筑安全員A證考試題庫(kù)及答案
- 貴陽(yáng)學(xué)院《復(fù)合材料學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025重慶建筑安全員-B證考試題庫(kù)附答案
- 2025年-浙江省安全員C證考試(專職安全員)題庫(kù)附答案
- 2025貴州省建筑安全員-C證考試(專職安全員)題庫(kù)及答案
- 廣州醫(yī)科大學(xué)《材料創(chuàng)新導(dǎo)論》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025四川省建筑安全員知識(shí)題庫(kù)附答案
- 2025遼寧建筑安全員B證(項(xiàng)目經(jīng)理)考試題庫(kù)
- 2024年道路清障拖車服務(wù)合同協(xié)議3篇
- 2025年1月八省聯(lián)考河南新高考物理試卷真題(含答案詳解)
- 建設(shè)工程檢試驗(yàn)工作管理實(shí)施指引
- 軟件租賃合同范例
- 匯川技術(shù)在線測(cè)評(píng)題及答案
- 廣東省廣州市2023-2024學(xué)年高一上學(xué)期期末物理試卷(含答案)
- 安徽省蕪湖市2023-2024學(xué)年高一上學(xué)期期末考試 物理 含解析
- 食品企業(yè)產(chǎn)品出廠檢驗(yàn)報(bào)告
- 鍋爐本體水壓試驗(yàn)記錄
- 綜治工作中心信訪穩(wěn)定和矛盾糾紛排查化解工作流程圖
- 牛初乳知識(shí)課件
評(píng)論
0/150
提交評(píng)論