版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 畢業(yè)設(shè)計(jì)(論文)</b></p><p> 基于JAVA的郴州市的公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)</p><p> 姓 名 </p><p> 系 別、 專 業(yè) 計(jì)算機(jī)科學(xué)系 網(wǎng)絡(luò)工程專業(yè) </p>&l
2、t;p> 導(dǎo) 師 姓 名、職 稱 講師 </p><p> 完 成 時(shí) 間 2012年 3 月 2日 </p><p><b> 目 錄</b></p><p><b> 摘 要I</b><
3、;/p><p> ABSTRACTII</p><p><b> 1 緒 論1</b></p><p> 1.1 數(shù)據(jù)庫技術(shù)1</p><p> 1.1.1 數(shù)據(jù)庫體系結(jié)構(gòu)1</p><p> 1.1.2 數(shù)據(jù)庫管理信息系統(tǒng)(DBMS)1
4、</p><p> 1.2 公交查詢系統(tǒng)2</p><p> 1.2.1 系統(tǒng)功能2</p><p> 1.2.2系統(tǒng)運(yùn)行環(huán)境2</p><p> 1.2.4 系統(tǒng)開發(fā)工具2</p><p> 1.2.4現(xiàn)狀與前景2</p><p> 1.3 本文所作的
5、工作3</p><p> 2 基于Eclispe平臺下的開發(fā)技術(shù)4</p><p> 2.1 Java語言介紹4</p><p> 2.1.1 Java 語言簡介4</p><p> 2.1.2 Java技術(shù)平臺簡介7</p><p> 2.1.3 Java 程序框架7</p>
6、;<p> 2.1.4 Java 優(yōu)點(diǎn)8</p><p> 2.1.4 J2EE技術(shù)簡介8</p><p> 2.2 JSP技術(shù)介紹8</p><p> 2.2.1 JSP與ASP的簡單比較8</p><p> 2.2.2 JSP運(yùn)行環(huán)境9</p><p> 2.2.3 JSP頁面示
7、例9</p><p> 2.3 B/S結(jié)構(gòu)介紹12</p><p> 2.3.1 Java程序框架13</p><p> 2.3.2 B/S架構(gòu)具備極大的優(yōu)越性13</p><p> 2.4 J2EE所運(yùn)用到的數(shù)據(jù)庫技術(shù)14</p><p> 2.4.1關(guān)系模型的基本概念14</p>
8、<p> 2.4.2關(guān)系型數(shù)據(jù)庫16</p><p> 2.4.3關(guān)系數(shù)據(jù)語言17</p><p> 2.5 SQL語言介紹18</p><p> 2.5.1 SQL的組成18</p><p> 2.5.2 SQL的數(shù)據(jù)查詢19</p><p> 2.5.3 SQL的數(shù)據(jù)更新19&l
9、t;/p><p> 3公交查詢系統(tǒng)設(shè)計(jì)分析21</p><p> 3.1應(yīng)用需求分析21</p><p> 3.2 系統(tǒng)功能模塊劃分21</p><p> 3.3 系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)24</p><p> 3.3.1概念設(shè)計(jì)24</p><p> 3.3.2 邏輯設(shè)計(jì)2
10、6</p><p> 3.4 本章小結(jié)28</p><p> 4 公交查詢系統(tǒng)設(shè)計(jì)分析29</p><p> 4.1 查詢模塊的功能實(shí)現(xiàn)29</p><p> 4.2 管理更新的功能實(shí)現(xiàn)31</p><p> 4.3 公交線路管理33</p&
11、gt;<p> 4.4 本章小結(jié)35</p><p><b> 5總結(jié)35</b></p><p><b> 參考文獻(xiàn)35</b></p><p><b> 致 謝37</b></p><p><b> 摘
12、60; 要</b></p><p> 如今計(jì)算機(jī)網(wǎng)絡(luò)發(fā)展非常迅速,時(shí)間的重要性對于人們來說不言而喻,人們出行越來越注重時(shí)間的節(jié)約,城市公交已經(jīng)成為出行的一種主要的方式,本文結(jié)合公交運(yùn)行的實(shí)際來對公交查詢信息系統(tǒng)進(jìn)行可行性研究,通過詳實(shí)的問題定義與需求分析并且進(jìn)行了合理的設(shè)計(jì),提出了在B/S模式下的三層體系結(jié)構(gòu),應(yīng)用了當(dāng)前最流行的Eclispe開發(fā)環(huán)境,后臺采用了以目前最穩(wěn)定的SQL Server20
13、05數(shù)據(jù)庫為開發(fā)平臺。該系統(tǒng)可以幫助查詢?nèi)藛T找到能最快到達(dá)目的地,并且節(jié)約費(fèi)用。通過瀏覽器查詢,通過計(jì)算機(jī)網(wǎng)絡(luò)全面聯(lián)網(wǎng),實(shí)現(xiàn)中心控制、自動更新、更多的查詢方式、和GIS系統(tǒng)的互聯(lián)互通等等更多更強(qiáng)大的功能。從這方面來說,此系統(tǒng)具有美好的應(yīng)用前景。</p><p> 關(guān)鍵詞:管理信息系統(tǒng);B/S結(jié)構(gòu);數(shù)據(jù)庫;WEB服務(wù)器;JSP</p><p><b> ABSTRACT<
14、/b></p><p> Now computer network development very quickly,The importance of time for people to self-evident,People pay more and more attention to the travel time saving,City bus travel has become one of
15、the main way,Combining with the actual operation of the bus to query information system of public transport for feasibility study,Through detailed problem definition and demand analysis and the reasonable design,Put forw
16、ard the B/S model with three layers of the system structure, the application of the most </p><p> Key words: the management information system; The B/S structure; Database; WEB server. JSP.</p><p
17、><b> 1 緒 論</b></p><p> 數(shù)據(jù)庫技術(shù)作為數(shù)據(jù)管理技術(shù),是計(jì)算機(jī)軟件領(lǐng)域的一個(gè)重要分支,產(chǎn)生于60年代末?,F(xiàn)已形成相當(dāng)規(guī)模的理論體系和實(shí)用技術(shù)。優(yōu)秀的數(shù)據(jù)庫設(shè)計(jì)是應(yīng)用成功的基石。萬萬丈高樓平地起,數(shù)據(jù)庫設(shè)計(jì)如同高樓的基石,是開發(fā)高品質(zhì)應(yīng)用的前提。</p><p><b> 1.1 數(shù)據(jù)庫技術(shù)</
18、b></p><p> 1.1.1 數(shù)據(jù)庫體系結(jié)構(gòu)</p><p> 數(shù)據(jù)的體系結(jié)構(gòu)分成三級:內(nèi)部級(Internal),概念級(Conceptual)和外部級(External)。這個(gè)三級結(jié)構(gòu)有時(shí)也稱為“三級模式結(jié)構(gòu)”。1 外部級:最接近用戶,是單個(gè)用戶所能看到的數(shù)據(jù)特性。單個(gè)用戶使用的數(shù)據(jù)視圖的描述稱為“外模式”。2 概念級:涉及到所有
19、用戶的數(shù)據(jù)定義、是全局的數(shù)據(jù)視圖。全局視圖的描述稱為“概念模式”。3 內(nèi)部級:最接近于物理存儲設(shè)備,涉及到實(shí)際數(shù)據(jù)存儲的結(jié)構(gòu)物理存儲數(shù)據(jù)視圖的描述稱為“內(nèi)模式”。數(shù)據(jù)庫的三級模式結(jié)構(gòu)是數(shù)據(jù)的三個(gè)抽象級別。它把數(shù)據(jù)的具體組織留給DBMS去做,用戶只要抽象地處理數(shù)據(jù),而不必關(guān)心數(shù)據(jù)在計(jì)算機(jī)中的表示和存儲,這樣就減輕了用戶使用系統(tǒng)的負(fù)擔(dān)。</p><p> 1.1.
20、2 數(shù)據(jù)庫管理信息系統(tǒng)(DBMS)</p><p> 數(shù)據(jù)庫管理系統(tǒng)(DBMS)是指數(shù)據(jù)庫系統(tǒng)中管理數(shù)據(jù)的軟件系統(tǒng)。DBMS是數(shù)據(jù)庫系統(tǒng)的核心組成部分。對數(shù)據(jù)庫的一切操作,包括定義、查詢、更新及各種控制,都是通過DBMS進(jìn)行的。在不同的計(jì)算機(jī)系統(tǒng)中,由于缺乏統(tǒng)一的標(biāo)準(zhǔn),即使同種數(shù)據(jù)模型的DBMS,它們在用戶接口、系統(tǒng)功能方面也常常是不相同的。用戶對數(shù)據(jù)庫進(jìn)行操作,是
21、由DBMS把操作從應(yīng)用程序帶到外部級、概念級、再導(dǎo)向內(nèi)部級,進(jìn)而操作存儲器中的數(shù)據(jù)。DBMS的主要目標(biāo),是使數(shù)據(jù)作為一種可管理的資源處理。DBMS的主要功能為:1 數(shù)據(jù)庫定義功能:DBMS提供數(shù)據(jù)定義語言(DDL)定義數(shù)據(jù)庫的三級結(jié)構(gòu),包括外模式、概念模式、內(nèi)模式及基相互之間的映象,定義數(shù)據(jù)的完整性、安全控制等約束。因此,在DBMS中應(yīng)包括DDL的編譯程序。2
22、 數(shù)據(jù)庫的操縱功能:DBMS提供數(shù)據(jù)操縱語言(DML)實(shí)現(xiàn)對數(shù)據(jù)庫中數(shù)據(jù)的操作?;镜臄?shù)據(jù)操作分成兩類四種:檢索(查詢)、更新(插入、刪除、修改)3 數(shù)據(jù)庫的保護(hù)功能:數(shù)據(jù)庫中的數(shù)據(jù)</p><p> 4 數(shù)據(jù)庫的恢復(fù):在數(shù)據(jù)庫被破壞或數(shù)據(jù)不正確時(shí),系統(tǒng)有能力把數(shù)據(jù)庫恢復(fù)到正確的狀態(tài)。5 數(shù)據(jù)庫的并發(fā)控制:DBMS的并發(fā)控制子系統(tǒng)能防止錯誤發(fā)
23、生,正確處理好多用戶、多任務(wù)環(huán)境下的并發(fā)操作。6 數(shù)據(jù)庫的完整性控制:保證數(shù)據(jù)庫中數(shù)據(jù)及語義的正確性和有效性,防止任何對數(shù)據(jù)造成錯誤的操作。7 數(shù)據(jù)庫的安全性控制:防止未經(jīng)授權(quán)的用戶蓄謀或無意地存取數(shù)據(jù)庫中的數(shù)據(jù),以免數(shù)據(jù)的泄露、更改或破壞。8 數(shù)據(jù)庫的存儲管理:把各種DML語句轉(zhuǎn)換成低層的文件系統(tǒng)命令,起到數(shù)據(jù)的存儲、檢索和更新的作用。9 數(shù)
24、據(jù)庫的維護(hù)功能:它有許多實(shí)用程序提供給數(shù)據(jù)庫管理員:</p><p> 數(shù)據(jù)裝載程序備份程序文件重組織程序性能監(jiān)控程序10 數(shù)據(jù)字典:數(shù)據(jù)庫系統(tǒng)中存放三級結(jié)構(gòu)定義的數(shù)據(jù)庫稱為數(shù)據(jù)字典(DD)。對數(shù)據(jù)庫的操作都要通過訪問DD才能實(shí)現(xiàn),通常DD中還存放數(shù)據(jù)庫運(yùn)行時(shí)的統(tǒng)計(jì)信息。</p
25、><p> 1.2 公交查詢系統(tǒng) </p><p> 1.2.1 系統(tǒng)功能</p><p> 1 基于瀏覽器(B/S模式)的公交線路分類查詢;</p><p> 2 數(shù)據(jù)的錄入、修改、添加、刪除。</p><p> 1.2.2系統(tǒng)運(yùn)行環(huán)境
26、該系統(tǒng)采用Browser/Server模式進(jìn)行設(shè)計(jì): 在服務(wù)器上運(yùn)行Web發(fā)布服務(wù)器、數(shù)據(jù)庫程序,服務(wù)器操作系統(tǒng)為WindowsNT/2000/XP/2003 server,客戶機(jī)操作為Windows9×/ NT/2000/XP/2003,其上運(yùn)行瀏覽器程序,服務(wù)器和客戶機(jī)可為同一設(shè)備。</p><p> 1.2.4 系統(tǒng)開發(fā)工具
27、該系統(tǒng)采用JDK Java環(huán)境進(jìn)行開發(fā),數(shù)據(jù)庫服務(wù)器為MySQL,WEB發(fā)布服務(wù)器為Tomcat Server;客戶端使用瀏覽器運(yùn)行程序,整個(gè)系統(tǒng)調(diào)試成功。</p><p> 1.2.4現(xiàn)狀與前景 </p><p> 公交查詢系統(tǒng)現(xiàn)狀分析:鑒于中國目前的經(jīng)濟(jì)發(fā)展?fàn)顩r,中國人出行還是以公交車為主,所以每個(gè)城市的公交系統(tǒng)都比較龐大發(fā)達(dá)。公交查詢系統(tǒng)是近兩年出現(xiàn)的新生事物,每
28、個(gè)城市的發(fā)展?fàn)顩r也是良莠不齊。目前的公交查詢系統(tǒng),基本上具備一下功能:采用車站站點(diǎn)查詢、車次查詢、路線分析查詢?nèi)N查詢形式,不僅能夠查詢到各條線路的起停站點(diǎn),同時(shí)還能夠分析出換乘車輛情況。 </p><p> 公交查詢系統(tǒng)的發(fā)展前景:未來的公交查詢系統(tǒng),將是基于B/S架構(gòu),通過瀏覽器查詢,通過計(jì)算機(jī)網(wǎng)絡(luò)全面聯(lián)網(wǎng),實(shí)現(xiàn)中心控制、自動更新、更多的查詢方式、和GIS系統(tǒng)的互聯(lián)互通等等更多更強(qiáng)大的功能。<
29、;/p><p> 1.3 本文所作的工作</p><p> 本文首先介紹了城市公交查詢系統(tǒng)的應(yīng)用背景、開發(fā)環(huán)境以及選用的開發(fā)工具與數(shù)據(jù)庫的關(guān)系,闡明了計(jì)算機(jī)互聯(lián)網(wǎng)絡(luò)的概念。并對數(shù)據(jù)庫的體系結(jié)構(gòu)、DBMS進(jìn)行了介紹;介紹關(guān)系型數(shù)據(jù)庫的基本概念,著重說明了幾個(gè)關(guān)鍵概念的定義;然后對SQL語言作了一個(gè)介紹說明;從特點(diǎn)和功能入手,介紹Java、JSP;并且介紹了B/S模式的概念、特點(diǎn);用
30、軟件工程的方法分析城市公交查詢系統(tǒng),對整個(gè)系統(tǒng)進(jìn)行了需求分析、功能模塊劃分,并通過ER圖對數(shù)據(jù)庫進(jìn)行概念設(shè)計(jì);對城市公交查詢系統(tǒng)的具體設(shè)計(jì),描述了查詢、錄入模塊的實(shí)現(xiàn)過程。 最后,在結(jié)束語的總結(jié)部分指出了系統(tǒng)的亮點(diǎn)以及不足之處,簡單介紹了自己開發(fā)過程中的體會與心得:在摸索中實(shí)踐,在實(shí)踐中摸索。</p><p> 2 基于Eclispe平臺下的開發(fā)技術(shù)</p><p> Jav
31、a是Sun Microsystems于1995年推出的高級編程語言,Java 領(lǐng)域的JavaSE、JavaEE技術(shù)已發(fā)展成為同C#和.NET平分天下的應(yīng)用軟件開發(fā)平臺和技術(shù)。</p><p> 在 Sun 正式發(fā)布 JSP(JavaServer Pages) 之后,這種新的 Web 應(yīng)用開發(fā)技術(shù)很快引起了人們的關(guān)注。 JSP 為創(chuàng)建高度動態(tài)的 Web 應(yīng)用提供了一個(gè)獨(dú)特的開發(fā)環(huán)境。按照 Sun 的說法, JSP
32、 能夠適應(yīng)市場上包括 Apache WebServer,IIS4.0 在內(nèi)的 85% 的服務(wù)器產(chǎn)品。</p><p> 當(dāng)今比較流行的軟件技術(shù)研發(fā)模式是C/S和B/S的體系結(jié)構(gòu)。C/S(Client/Server)結(jié)構(gòu),即客戶機(jī)和服務(wù)器結(jié)構(gòu)。通過C/S可以充分利用兩端硬件環(huán)境的優(yōu)勢,將任務(wù)合理分配到Client端和Server端來實(shí)現(xiàn),降低了系統(tǒng)的通訊開銷。</p><p> Ecli
33、pse 這樣功能完整且成熟的開發(fā)環(huán)境,是由藍(lán)色巨人IBM 所釋出。IBM 花了4 千萬美金來開發(fā)這個(gè)IDE(Integrated Development Environment)。第一版1.0 在2001 年11 月釋出,隨后逐漸受到歡迎。Eclipse已經(jīng)成為開放原始碼計(jì)劃(Open Source Project),大部分的開發(fā)扔然掌握在IBM手中,但是有一部份由eclipse.org的軟件聯(lián)盟主導(dǎo)。</p><p
34、> 2.1 Java語言介紹</p><p> 2.1.1 Java 語言簡介</p><p> Java不僅可以開發(fā)桌面應(yīng)用程序如銀行軟件、商場結(jié)算軟件;還可以開發(fā)面向Internet的應(yīng)用程序,如當(dāng)紅的網(wǎng)上數(shù)碼商城、阿里巴巴、易趣網(wǎng)等都是用java開發(fā)出來的。</p><p> Java是一種跨平臺,適合于分布式計(jì)算環(huán)境的面向?qū)ο缶幊陶Z言。具體來說
35、,它具有如下特性: </p><p> 簡單性、面向?qū)ο?、分布式、解釋型、可靠、安全、平臺無關(guān)、可移植、高性能、多線程、動態(tài)性等。 </p><p> 下面我們將重點(diǎn)介紹Java語言的面向?qū)ο?、平臺無關(guān)、分布式、多線程、可靠和安全等特性。 </p><p><b> 1 面向?qū)ο?</b></p><p> 面向
36、對象其實(shí)是現(xiàn)實(shí)世界模型的自然延伸?,F(xiàn)實(shí)世界中任何實(shí)體都可以看作是對象。對象之間通過消息相互作用。另外,現(xiàn)實(shí)世界中任何實(shí)體都可歸屬于某類事物,任何對象都是某一類事物的實(shí)例。如果說傳統(tǒng)的過程式編程語言是以過程為中心以算法為驅(qū)動的話,面向?qū)ο蟮木幊陶Z言則是以對象為中心以消息為驅(qū)動。用公式表示,過程式編程語言為:程序=算法+數(shù)據(jù);面向?qū)ο缶幊陶Z言為:程序=對象+消息。 </p><p> 所有面向?qū)ο缶幊陶Z言都支持三個(gè)
37、概念:封裝、多態(tài)性和繼承,Java也不例外?,F(xiàn)實(shí)世界中的對象均有屬性和行為,映射到計(jì)算機(jī)程序上,屬性則表示對象的數(shù)據(jù),行為表示對象的方法(其作用是處理數(shù)據(jù)或同外界交互)。所謂封裝,就是用一個(gè)自主式框架把對象的數(shù)據(jù)和方法聯(lián)在一起形成一個(gè)整體??梢哉f,對象是支持封裝的手段,是封裝的基本單位。Java語言的封裝性較強(qiáng),因?yàn)镴ava無全程變量,無主函數(shù),在Java中絕大部分成員是對象,只有簡單的數(shù)字類型、字符類型和布爾類型除外。而對于這些類型,
38、Java也提供了相應(yīng)的對象類型以便與其他對象交互操作。 </p><p> 多態(tài)性就是多種表現(xiàn)形式,具體來說,可以用“一個(gè)對外接口,多個(gè)內(nèi)在實(shí)現(xiàn)方法”表示。舉一個(gè)例子,計(jì)算機(jī)中的堆棧可以存儲各種格式的數(shù)據(jù),包括整型,浮點(diǎn)或字符。不管存儲的是何種數(shù)據(jù),堆棧的算法實(shí)現(xiàn)是一樣的。針對不同的數(shù)據(jù)類型,編程人員不必手工選擇,只需使用統(tǒng)一接口名,系統(tǒng)可自動選擇。運(yùn)算符重載(operator overload)一直被認(rèn)為是一
39、種優(yōu)秀的多態(tài)機(jī)制體現(xiàn),但由于考慮到它會使程序變得難以理解,所以Java最后還是把它取消了。 </p><p> 繼承是指一個(gè)對象直接使用另一對象的屬性和方法。事實(shí)上,我們遇到的很多實(shí)體都有繼承的含義。例如,若把汽車看成一個(gè)實(shí)體,它可以分成多個(gè)子實(shí)體,如:卡車、公共汽車等。這些子實(shí)體都具有汽車的特性,因此,汽車是它們的“父親”,而這些子實(shí)體則是汽車的“孩子”。Java提供給用戶一系列類(class),Java的類
40、有層次結(jié)構(gòu),子類可以繼承父類的屬性和方法。與另外一些面向?qū)ο缶幊陶Z言不同,Java只支持單一繼承。 </p><p><b> 2 平臺無關(guān)性 </b></p><p> Java是平臺無關(guān)的語言是指用Java寫的應(yīng)用程序不用修改就可在不同的軟硬件平臺上運(yùn)行。平臺無關(guān)有兩種:源代碼級和目標(biāo)代碼級。C和C++具有一定程度的源代碼級平臺無關(guān),表明用C或C++寫的應(yīng)用程
41、序不用修改只需重新編譯就可以在不同平臺上運(yùn)行。</p><p> Java主要靠Java虛擬機(jī)(JVM)在目標(biāo)碼級實(shí)現(xiàn)平臺無關(guān)性。JVM是一種抽象機(jī)器,它附著在具體操作系統(tǒng)之上,本身具有一套虛機(jī)器指令,并有自己的棧、寄存器組等。但JVM通常是在軟件上而不是在硬件上實(shí)現(xiàn)。(目前,SUN系統(tǒng)公司已經(jīng)設(shè)計(jì)實(shí)現(xiàn)了Java芯片,主要使用在網(wǎng)絡(luò)計(jì)算機(jī)NC上。 </p><p> 另外,Java芯片
42、的出現(xiàn)也會使Java更容易嵌入到家用電器中。)JVM是Java平臺無關(guān)的基礎(chǔ),在JVM上,有一個(gè)Java解釋器用來解釋Java編譯器編譯后的程序。Java編程人員在編寫完程序后,通過Java編譯器將Java源程序編譯為JVM的字節(jié)代碼。任何一臺機(jī)器只要配備了Java解釋器,就可以運(yùn)行這個(gè)程序,而不管這種字節(jié)碼是在何種平臺上生成的。另外,Java采用的是基于IEEE標(biāo)準(zhǔn)的數(shù)據(jù)類型。通過JVM保證數(shù)據(jù)類型的一致性,也確保了Java的平臺無關(guān)
43、性。 </p><p> Java的平臺無關(guān)性具有深遠(yuǎn)意義。首先,它使得編程人員所夢寐以求的事情(開發(fā)一次軟件在任意平臺上運(yùn)行)變成事實(shí),這將大大加快和促進(jìn)軟件產(chǎn)品的開發(fā)。其次Java的平臺無關(guān)性正好迎合了“網(wǎng)絡(luò)計(jì)算機(jī)”思想。如果大量常用的應(yīng)用軟件(如字處理軟件等)都用Java重新編寫,并且放在某個(gè)Internet服務(wù)器上,那么具有NC的用戶將不需要占用大量空間安裝軟件,他們只需要一個(gè)Java解釋器,每當(dāng)需要使
44、用某種應(yīng)用軟件時(shí),下載該軟件的字節(jié)代碼即可,運(yùn)行結(jié)果也可以發(fā)回服務(wù)器。目前,已有數(shù)家公司開始使用這種新型的計(jì)算模式構(gòu)筑自己的企業(yè)信息系統(tǒng)。 </p><p><b> 3 分布式 </b></p><p> 分布式包括數(shù)據(jù)分布和操作分布。數(shù)據(jù)分布是指數(shù)據(jù)可以分散在網(wǎng)絡(luò)的不同主機(jī)上,操作分布是指把一個(gè)計(jì)算分散在不同主機(jī)上處理。 Java支持WWW客戶機(jī)/服務(wù)器計(jì)算模
45、式,因此,它支持這兩種分布性。對于前者,Java提供了一個(gè)叫作URL的對象,利用這個(gè)對象,你可以打開并訪問具有相同URL地址上的對象,訪問方式與訪問本地文件系統(tǒng)相同。對于后者,Java的applet小程序可以從服務(wù)器下載到客戶端,即部分計(jì)算在客戶端進(jìn)行,提高系統(tǒng)執(zhí)行效率。 </p><p> Java提供了一整套網(wǎng)絡(luò)類庫,開發(fā)人員可以利用類庫進(jìn)行網(wǎng)絡(luò)程序設(shè)計(jì),方便得實(shí)現(xiàn)Java的分布式特性。 </p>
46、;<p> 4 可靠性和安全性 </p><p> Java最初設(shè)計(jì)目的是應(yīng)用于電子類消費(fèi)產(chǎn)品,因此要求較高的可靠性。Java雖然源于C++,但它消除了許多C++不可靠因素,可以防止許多編程錯誤。首先,Java是強(qiáng)類型的語言,要求顯式的方法聲明,這保證了編譯器可以發(fā)現(xiàn)方法調(diào)用錯誤,保證程序更加可靠;其次,Java不支持指針,這杜絕了內(nèi)存的非法訪問;第三,Java的自動單元收集防止了內(nèi)存丟失等動態(tài)
47、內(nèi)存分配導(dǎo)致的問題;第四,Java解釋器運(yùn)行時(shí)實(shí)施檢查,可以發(fā)現(xiàn)數(shù)組和字符串訪問的越界,最后,Java提供了異常處理機(jī)制,程序員可以把一組錯誤代碼放在一個(gè)地方,這樣可以簡化錯誤處理任務(wù)便于恢復(fù)。 </p><p> 由于Java主要用于網(wǎng)絡(luò)應(yīng)用程序開發(fā),因此對安全性有較高的要求。如果沒有安全保證,用戶從網(wǎng)絡(luò)下載程序執(zhí)行就非常危險(xiǎn)。Java通過自己的安全機(jī)制防止了病毒程序的產(chǎn)生和下載程序?qū)Ρ镜叵到y(tǒng)的威脅破壞。當(dāng)J
48、ava字節(jié)碼進(jìn)入解釋器時(shí),首先必須經(jīng)過字節(jié)碼校驗(yàn)器的檢查,然后,Java解釋器將決定程序中類的內(nèi)存布局,隨后,類裝載器負(fù)責(zé)把來自網(wǎng)絡(luò)的類裝載到單獨(dú)的內(nèi)存區(qū)域,避免應(yīng)用程序之間相互干擾破壞。最后,客戶端用戶還可以限制從網(wǎng)絡(luò)上裝載的類只能訪問某些文件系統(tǒng)。 </p><p> 上述幾種機(jī)制結(jié)合起來,使得Java成為安全的編程語言。 </p><p><b> 5 多線程 <
49、/b></p><p> 線程是操作系統(tǒng)的一種新概念,它又被稱作輕量進(jìn)程,是比傳統(tǒng)進(jìn)程更小的可并發(fā)執(zhí)行的單位。 </p><p> C和C++采用單線程體系結(jié)構(gòu),而Java卻提供了多線程支持。Java在兩方面支持多線程。一方面,Java環(huán)境本身就是多線程的。若干個(gè)系統(tǒng)線程運(yùn)行負(fù)責(zé)必要的無用單元回收,系統(tǒng)維護(hù)等系統(tǒng)級操作;另一方面,Java語言內(nèi)置多線程控制,可以大大簡化多線程應(yīng)用
50、程序開發(fā)。Java提供了一個(gè)類Thread,由它負(fù)責(zé)啟動運(yùn)行,終止線程,并可檢查線程狀態(tài)。Java的線程還包括一組同步原語。這些原語負(fù)責(zé)對線程實(shí)行并發(fā)控制。利用Java的多線程編程接口,開發(fā)人員可以方便得寫出支持多線程的應(yīng)用程序,提高程序執(zhí)行效率。必須注意地是,Java的多線程支持在一定程度上受運(yùn)行時(shí)支持平臺的限制。例如,如果操作系統(tǒng)本身不支持多線程,Java的多線程特性可能就表現(xiàn)不出來。</p><p> 2
51、.1.2 Java技術(shù)平臺簡介</p><p> 1 JavaSE:Java Platform,Standard Edition</p><p> J2SE 包含那些構(gòu)成Java語言核心的類。比如:數(shù)據(jù)庫連接、接口定義、輸入/輸出、網(wǎng)絡(luò)編程,主要用于桌面應(yīng)用軟件的編程。</p><p> 2JavaME:Java 2 Micro Edition </p&
52、gt;<p> J2ME是Java 2的一個(gè)組成部分,它與J2SE、J2EE并稱。根據(jù)Sun的定義:J2ME是一種高度優(yōu)化的Java運(yùn)行環(huán)境,主要針對消費(fèi)類電子設(shè)備的,例如蜂窩電話和可視電話、數(shù)字機(jī)頂盒、汽車導(dǎo)航系統(tǒng)等等。J2ME技術(shù)在1999年的JavaOne Developer Conference大會上正式推出,它將Java語言的與平臺無關(guān)的特性移植到小型電子設(shè)備上,允許移動無線設(shè)備之間共享應(yīng)用程序。</p&
53、gt;<p> 3JavaEE:Java Platform,Enterprise Edition </p><p> J2EE是一種利用Java 2平臺來簡化企業(yè)解決方案的開發(fā)、部署和管理相關(guān)的復(fù)雜問題的體系結(jié)構(gòu)。J2EE技術(shù)的基礎(chǔ)就是核心Java平臺或Java 2平臺的標(biāo)準(zhǔn)版,J2EE不僅鞏固了標(biāo)準(zhǔn)版中的許多優(yōu)點(diǎn),例如"編寫一次、隨處運(yùn)行"的特性、方便存取數(shù)據(jù)庫
54、的JDBC 、PI、CORBA技術(shù)以及能夠在Internet應(yīng)用中保護(hù)數(shù)據(jù)的安全模式等等,同時(shí)還提供了對 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技術(shù)的全面支持。其最終目的就是成為一個(gè)能夠使企業(yè)開發(fā)者大幅縮短投放市場時(shí)間的體系結(jié)構(gòu)。</p><p> 2.1.3 Java 程序框架</p><
55、;p> public class HelloSODI {//外層框架</p><p> public static void main(String[ ] args) {//Java入口程序框架</p><p> …這里填寫代碼!...</p><p><b> }</b></p><p><b>
56、; }</b></p><p> 2.1.4 Java 優(yōu)點(diǎn)</p><p><b> 1 跨越平臺的限制</b></p><p> 盡管目前Windows桌面系統(tǒng)一統(tǒng)天下,但是服務(wù)器系統(tǒng)采用的操作系統(tǒng)卻具有多樣性,包括Linux、Unix、Windows NT/2000Server等系統(tǒng)都可以實(shí)現(xiàn)企業(yè)級應(yīng)用。即便是桌面系統(tǒng)
57、,中國政府出于安全和國家戰(zhàn)略的考慮,希望有自己的操作系統(tǒng),Linux的出現(xiàn)使這種想法變成了現(xiàn)實(shí),不久也許國產(chǎn)的Linux系統(tǒng)將占據(jù)更多桌面系統(tǒng)的市場份額。</p><p> 傳統(tǒng)的C/S架構(gòu)的軟件需要針對不同的操作系統(tǒng)開發(fā)不同版本的軟件,面對眾多的操作系統(tǒng)和軟件快速的升級換代, 采用這一架構(gòu)開發(fā)軟件,對于企業(yè)的IT投資無疑是一種巨大的風(fēng)險(xiǎn)。而采用Java語言實(shí)現(xiàn)的B/S架構(gòu)的軟件產(chǎn)品真正做到了“一次編寫處處運(yùn)行
58、(Write Once, Run Anywhere)” ,對企業(yè)而言,可以規(guī)避將來更換操作系統(tǒng)所帶來的風(fēng)險(xiǎn)。</p><p><b> 2 健壯的系統(tǒng)</b></p><p> Java語言實(shí)現(xiàn)的軟件具有天然的健壯性。這是Java語言自身的特性保證的。利用Java寫成的軟件幾乎不可能造成系統(tǒng)崩潰,這正是安全性要求很高的企業(yè)級應(yīng)用所不可或缺的特性。</p>
59、;<p> 2.1.4 J2EE技術(shù)簡介 </p><p> J2EE是純粹基于Java的解決方案。1998年,Sun發(fā)布了EJB 1.0標(biāo)準(zhǔn)。EJB為企業(yè)級應(yīng)用中必不可少的數(shù)據(jù)封裝、事務(wù)處理、交易控制等功能提供了良好的技術(shù)基礎(chǔ)。至此,J2EE平臺的三大核心技術(shù)Servlet、JSP和EJB都已先后問世。1999年,Sun正式發(fā)布了J2EE的第一個(gè)版本。緊接著,遵循J2EE標(biāo)準(zhǔn),為企業(yè)級應(yīng)用提供
60、支撐平臺的各類應(yīng)用服務(wù)軟件爭先恐后地涌現(xiàn)了出來。IBM的WebSphere、BEA的WebLogic都是這一領(lǐng)域里最為成功的商業(yè)軟件平臺。隨著開源運(yùn)動的興起,JBoss等開源世界里的應(yīng)用服務(wù)新秀也吸引了許多用戶的注意力。到2003年時(shí),Sun的J2EE版本已經(jīng)升級到了1.4版,其中三個(gè)關(guān)鍵組件的版本也演進(jìn)到了Servlet 2.4、JSP 2.0和EJB 2.1。至此,J2EE體系及相關(guān)的軟件產(chǎn)品已經(jīng)成為了Web服務(wù)端開發(fā)的一個(gè)強(qiáng)有力的
61、支撐環(huán)境。</p><p> 2.2 JSP技術(shù)介紹:</p><p> 2.2.1 JSP與ASP的簡單比較</p><p> JSP 與 Microsoft 的 ASP 技術(shù)非常相似。兩者都提供在 HTML 代碼中混合某種程序代碼、由語言引擎解釋執(zhí)行程序代碼的能力。在 ASP 或 JSP 環(huán)境下, HTML 代碼主要負(fù)責(zé)描述信息的顯示樣式,而程序代碼則用來
62、描述處理邏輯。普通的 HTML 頁面只依賴于 Web 服務(wù)器,而 ASP 和 JSP 頁面需要附加的語言引擎分析和執(zhí)行程序代碼。程序代碼的執(zhí)行結(jié)果被重新嵌入到 HTML 代碼中,然后一起發(fā)送給瀏覽器。 ASP 和 JSP 都是面向 Web 服務(wù)器的技術(shù),客戶端瀏覽器不需要任何附加的軟件支持。 ASP 的編程語言是 VBScript 之類的腳本語言, JSP 使用的是 Java ,這是兩者最明顯的區(qū)別。此外, AS
63、P 與 JSP 還有一個(gè)更為本質(zhì)的區(qū)別:兩種語言引擎用完全不同的方式處理頁面中嵌入的程序代碼。在 ASP 下, VBScript 代碼被 ASP 引擎解釋執(zhí)行;在 JSP 下,代碼被編譯成 Servlet 并由 Java 虛擬機(jī)執(zhí)行,這種編譯操作僅在對 JSP 頁面的第一次請求時(shí)發(fā)生。 </p><p> 2.2.2 JSP運(yùn)行環(huán)境</p><p> Sun 公司的 JSP
64、主頁在 http://www.javasoft.com/products/jsp/index.html ,從這里還可以下載 JSP 規(guī)范,這些規(guī)范定義了供應(yīng)商在創(chuàng)建 JSP 引擎時(shí)所必須遵從的一些規(guī)則。在運(yùn)行 JSP 示例頁面之前,請注意一下安裝 JSWDK 的目錄,特別是“ work ”子目錄下的內(nèi)容。執(zhí)行示例頁面時(shí),可以在這里看到 JSP 頁面如何被轉(zhuǎn)換成 Java 源文件,然后又被編譯成 class
65、文件(即 Servlet )。 JSWDK 軟件包中的示例頁面分為兩類,它們或者是 JSP 文件,或者是包含一個(gè)表單的 HTML 文件,這些表單均由 JSP 代碼處理。與 ASP 一樣, JSP 中的 Java 代碼均在服務(wù)器端執(zhí)行。因此,在瀏覽器中使用“查看源文件”菜單是無法看到 JSP 源代碼的,只能看到結(jié)果 HTML 代碼。所有示例的源代碼均通過一個(gè)單獨(dú)的“ examples ”頁面提供。 </p>&
66、lt;p> 2.2.3 JSP頁面示例</p><p> 下面我們分析一個(gè)簡單的 JSP 頁面。您可以在 JSWDK 的 examples 目錄下創(chuàng)建另外一個(gè)目錄存放此文件,文件名字可以任意,但擴(kuò)展名必須為 .jsp 。從下面的代碼清單中可以看到, JSP 頁面除了比普通 HTML 頁面多一些 Java 代碼外,兩者具有基本相同的結(jié)構(gòu)。 Java 代碼是通過 < % 和 %> 符號加入到 H
67、TML 代碼中間的,它的主要功能是生成并顯示一個(gè)從 0 到 9 的字符串。在這個(gè)字符串的前面和后面都是一些通過 HTML 代碼輸出的文本。 < html>< head>< title>JSP 頁面 < /title>< /head>< body><
68、%@ page language="java" %>< %! String str="0"; %>< % for (int i=1; i < 10; i++) {str = str + i;</p><p> } %> JSP
69、 輸出之前。 < p>< %= str %> </ p></p><p> JSP 輸出之后。 < /body> < /html>
70、</p><p> 這個(gè) JSP 頁面可以分成幾個(gè)部分來分析: </p><p> 首先是 JSP 指令。它描述的是頁面的基本信息,如所使用的語言、是否維持會話狀態(tài)、是否使用緩沖等。 JSP 指令由 < %@ 開始, %> 結(jié)束。在本例中,指令“ < %@ page language="java" %> ”只簡單地定義了本例使用的是 Java
71、 語言(當(dāng)前,在 JSP 規(guī)范中 Java 是唯一被支持的語言)。 接下來的是 JSP 聲明。 JSP 聲明可以看成是定義類這一層次的變量和方法的地方。 JSP 聲明由 < %! 開始, %> 結(jié)束。如本例中的“ < %! String str="0"; %> ”定義了一個(gè)字符串變量。在每一項(xiàng)聲明的后面都必須有一個(gè)分號,就象在普通 Java 類中聲明成員變量一樣。 位于 < % 和 %&
72、gt; 之間的代碼塊是描述 JSP 頁面處理邏輯的 Java 代碼,如本例中的 for 循環(huán)所示。 最后,位于 < %= 和 %> 之間的代碼稱為 JSP 表達(dá)式,如本例中的“ < %= str %> ”所示。 JSP 表達(dá)式提供了一種將 JSP 生成的數(shù)值嵌入 HTML 頁面的簡單方法。</p><p> 會話狀態(tài)維持是 Web 應(yīng)用開發(fā)者必須面對的問題。有多種方法可以用來解決這個(gè)問
73、題,如使用 Cookies 、隱藏的表單輸入域,或直接將狀態(tài)信息附加到 URL 中。 Java Servlet 提供了一個(gè)在多個(gè)請求之間持續(xù)有效的會話對象,該對象允許用戶存儲和提取會話狀態(tài)信息。 JSP 也同樣支持 Servlet 中的這個(gè)概念。</p><p> 在 Sun 的 JSP 指南 中可以看到許多有關(guān)隱含對象的說明(隱含的含義是,這些對象可以直接引用,不需要顯式地聲明,也不需要專門的代碼創(chuàng)建其實(shí)例)
74、。例如 request 對象,它是 HttpServletRequest 的一個(gè)子類。該對象包含了所有有關(guān)當(dāng)前瀏覽器請求的信息,包括 Cookies , HTML 表單變量等等。 session 對象也是這樣一個(gè)隱含對象。這個(gè)對象在第一個(gè) JSP 頁面被裝載時(shí)自動創(chuàng)建,并被關(guān)聯(lián)到 request 對象上。與 ASP 中的會話對象相似, JSP 中的 session 對象對于那些希望通過多個(gè)頁面完成一個(gè)事務(wù)的應(yīng)用是非常有用的。為說明 s
75、ession 對象的具體應(yīng)用,接下來我們用三個(gè)頁面模擬一個(gè)多頁面的 Web 應(yīng)用。第一個(gè)頁面( q1.html )僅包含一個(gè)要求輸入用戶名字的 HTML 表單,代碼如下:< html>< body>< FORM METHOD=POST ACTION="q2.jsp">
76、請輸入您的姓名:</p><p> 您喜歡吃什么 ?< input type=text name="food"></p><p> </p>< input type=submit value="SUBMIT">
77、</p><p> < /form>< /body>< /html>第三個(gè)頁面也是一個(gè) JSP 頁面( q3.jsp ),主要任務(wù)是顯示問答結(jié)果。它從 session 對象提取 thename 的值并顯示它,以此證明雖然該值在第一個(gè)頁面輸入,但通過 session 對
78、象得以保留。 q3.jsp 的另外一個(gè)任務(wù)是提取在第二個(gè)頁面中的用戶輸入并顯示它:< html>< body>< %@ page language="java" %>< %! String food=""; %>
79、< %food = request.getParameter("food");String name = (String) session.getValue("thename");%></p><p> 2.3 B/S結(jié)構(gòu)介紹</p>
80、<p> B/S(Browser/Server)結(jié)構(gòu)即瀏覽器和服務(wù)器結(jié)構(gòu)。它是隨著Internet技術(shù)的興起而對C/S結(jié)構(gòu)的一種變化或者改進(jìn)的結(jié)構(gòu)。在這種結(jié)構(gòu)下,用戶工作界面通過WWW瀏覽器來實(shí)現(xiàn),極少部分事務(wù)邏輯在前端(Browser)實(shí)現(xiàn),主要事務(wù)邏輯在服務(wù)器端(Server)實(shí)現(xiàn)。大大簡化了客戶端電腦載荷,減少了系統(tǒng)維護(hù)與升級的成本和工作量,降低了用戶的總體成本。B/S方式可以形成所謂三層以上的結(jié)構(gòu)。B/S結(jié)構(gòu)是一次到
81、位開發(fā),能實(shí)現(xiàn)不同人員,從不同地點(diǎn),以不同的接入方式訪問和操作共同的數(shù)據(jù)庫;它能有效地保護(hù)數(shù)據(jù)平臺和管理訪問權(quán)限,服務(wù)器數(shù)據(jù)庫也很安全。特別是在JAVA這樣的跨平臺語言出現(xiàn)之后,B/S架構(gòu)管理軟件更為方便、快捷、高效。B/S工作機(jī)制如圖3-1所示:</p><p> 傳統(tǒng)的C/S架構(gòu)(客戶機(jī)/服務(wù)器,Client/Server)方式中,業(yè)務(wù)邏輯位于客戶端,每完成一項(xiàng)事務(wù),都要頻繁地訪問數(shù)據(jù)庫,使得網(wǎng)絡(luò)上數(shù)據(jù)流量
82、非常大,對于慢速連接的用戶,甚至無法使用。</p><p> 圖 3.1 B/S工作機(jī)制</p><p> 2.3.1 Java程序框架</p><p> 為彌補(bǔ)上述C/S架構(gòu)的缺陷,人們發(fā)展出了三層或多層架構(gòu):客戶機(jī)—中間件(應(yīng)用服務(wù)器)—數(shù)據(jù)庫服務(wù)器(Client—Middle ware—Database Server)。在這種架構(gòu)中,業(yè)務(wù)邏輯放置于中間
83、件服務(wù)器上,大量的數(shù)據(jù)流也位于中間件和數(shù)據(jù)庫之間,而客戶機(jī)只是簡單地發(fā)出請求,中間件接受請求后進(jìn)行事務(wù)處理并將處理的結(jié)果返回給客戶機(jī),這一類型的客戶機(jī)也稱之為“廋客戶”。B/S架構(gòu)實(shí)際上是三層架構(gòu)的一種,所不同的是客戶端就是目前幾乎每臺電腦中都有的網(wǎng)絡(luò)瀏覽器,而中間件則是Web應(yīng)用服務(wù)器。注意到主要的業(yè)務(wù)邏輯均由位于Web應(yīng)用服務(wù)器上的Servlet和JSP程序或EJB來處理。</p><p> 2.3.2 B
84、/S架構(gòu)具備極大的優(yōu)越性</p><p> 1 面向電子商務(wù)時(shí)代的技術(shù)</p><p> 將來所有的應(yīng)用系統(tǒng)幾乎都在互聯(lián)網(wǎng)或企業(yè)內(nèi)部廣域網(wǎng)上運(yùn)行,發(fā)展電子商務(wù)成為企業(yè)不可避免的信息化道路。B/S架構(gòu)的軟件正是電子商務(wù)的基石,正是這類軟件使得移動辦公和分布式協(xié)同工作真正成為現(xiàn)實(shí)。無論在世界的那個(gè)角落,只需要一臺可以聯(lián)網(wǎng)的設(shè)備(計(jì)算機(jī)、PDA甚至手機(jī))都可以方便地與客戶聯(lián)系和與他人協(xié)同工作
85、。</p><p> 2 軟件操作、維護(hù)和升級方式的革命</p><p> 軟件系統(tǒng)的改進(jìn)和升級越來越頻繁,B/S架構(gòu)的產(chǎn)品在維護(hù)和升級方面具備顯著的優(yōu)勢。無論用戶的規(guī)模有多大,有多少分支機(jī)構(gòu)都不會增加任何維護(hù)升級的工作量,所有的操作只對服務(wù)器進(jìn)行,通過遠(yuǎn)程連接服務(wù)器,異地的運(yùn)維人員甚至于可以做到遠(yuǎn)程維護(hù)和升級,這對人力、時(shí)間、費(fèi)用的節(jié)省是相當(dāng)驚人的。所有的客戶端只是瀏覽器,所有的操作
86、都和上網(wǎng)瀏覽網(wǎng)頁類似,使用者接受的培訓(xùn)也僅限于業(yè)務(wù)邏輯而無需將大量精力浪費(fèi)學(xué)習(xí)軟件操作上。</p><p><b> 3 系統(tǒng)整合</b></p><p> 無論是辦公自動化(OA)系統(tǒng),人力資源(HR)系統(tǒng),客戶關(guān)系管理(CRM)系統(tǒng),ERP等等,發(fā)展的趨勢是不斷融合。而采用統(tǒng)一的B/S結(jié)構(gòu)開發(fā)的產(chǎn)品無論是現(xiàn)在還是將來都是最好的選擇,它提供了真正意義上無縫地與其
87、它系統(tǒng)進(jìn)行整合的方案。</p><p> 2.4 J2EE所運(yùn)用到的數(shù)據(jù)庫技術(shù)</p><p> 關(guān)系數(shù)據(jù)庫應(yīng)用數(shù)學(xué)方法來處理數(shù)據(jù)庫中的數(shù)據(jù),關(guān)系數(shù)據(jù)庫系統(tǒng)是支持關(guān)系模型的數(shù)據(jù)庫系統(tǒng)。最早將這類方法用于數(shù)據(jù)處理的是1962年CODASYIL發(fā)表的“信息代數(shù)”,然而30多年來,關(guān)系數(shù)據(jù)庫系統(tǒng)的研究和開發(fā)取得了輝煌的成就。關(guān)系數(shù)據(jù)庫系統(tǒng)從實(shí)驗(yàn)室走向了社會,成為最重要、應(yīng)用最廣泛的數(shù)據(jù)庫系統(tǒng)
88、,大大促進(jìn)了數(shù)據(jù)庫應(yīng)用領(lǐng)域的擴(kuò)大和深入。</p><p> 關(guān)系數(shù)據(jù)庫的設(shè)計(jì)中,一個(gè)非常重要的被視為理論問題的內(nèi)容是如何構(gòu)造合理的關(guān)系,使之能準(zhǔn)確地反應(yīng)現(xiàn)實(shí)世界,有利于應(yīng)用和具體的操作。這一問題就是關(guān)系規(guī)范化要研究的問題。主要包括:</p><p> 1函數(shù)依賴及Armstrong公理系統(tǒng);</p><p> 2為什么要對模式進(jìn)行分解,如何分解;</p&
89、gt;<p> 3如何判斷關(guān)系模式達(dá)到幾范式;</p><p> 4如何求屬性的閉包及如何求最小函數(shù)依賴集,這幾種理論信息構(gòu)成了關(guān)系數(shù)據(jù)庫的骨架。</p><p> 2.4.1關(guān)系模型的基本概念 </p><p> 用二維表格結(jié)構(gòu)表示實(shí)體集,外鍵表示實(shí)體間聯(lián)系的數(shù)據(jù)模型稱為關(guān)系模型。數(shù)據(jù)模型是對現(xiàn)實(shí)世界的模擬。 </p&g
90、t;<p> 1 二維表格舉例--職工登記表,如表2.1</p><p> 表2.1 職工登記表</p><p><b> 2 鍵(KEY)</b></p><p> 鍵由一個(gè)或幾個(gè)屬性組成,在實(shí)際使用中,有下列幾種鍵:</p><p> ?。?) 超鍵(Super Key)
91、:在關(guān)系中能惟一標(biāo)識元組的屬性集稱為關(guān)系模式的超鍵。(2) 候選鍵(Candidate Key):不含有多余屬性的超鍵稱為候選鍵。也就是在候選鍵中,若要再刪除屬性,就不是鍵了。(3) 主鍵:(Primary Key):用戶選作元組標(biāo)識的一個(gè)侯選鍵稱為主鍵。一般,如不加說明,則鍵是指主鍵。3 關(guān)系的定義和性質(zhì)
92、我們可以用集合的觀點(diǎn)定義關(guān)系。關(guān)系是一個(gè)元數(shù)為K(K>=1)的元組的集合。把關(guān)系看成是一個(gè)集合,集合中的元素是元組,每個(gè)元組的屬性個(gè)數(shù)應(yīng)相同。在關(guān)系模型中,對關(guān)系作了下列規(guī)范性限制:</p><p> (1)關(guān)系中每一個(gè)屬性值都是不可分解的。</p><p> (2)關(guān)系中允許出現(xiàn)相同的元組(沒有重復(fù)元組)</p><p> ?。?)由于關(guān)系是一個(gè)集
93、合,因此不考慮元組間的順序,即沒有行序。</p><p> ?。?) 元組中,屬性在理論上也是無序的,但在使用時(shí)按習(xí)慣考慮列的順序。</p><p> 關(guān)系數(shù)據(jù)庫的設(shè)計(jì)理論主要包括三個(gè)方面的內(nèi)容:數(shù)據(jù)依賴、范式,模式設(shè)計(jì)方法。其中數(shù)據(jù)依賴起著核心的作用。</p><p> 4 函數(shù)依賴(Functional dependency , FD)的定義
94、</p><p> 設(shè)R(U)是一個(gè)關(guān)系模式,U是R的屬性集合,X和Y是U的子集。對于R(U)的任何一個(gè)可能的關(guān)系r,如果r中不存在兩個(gè)元組,它們在X上的屬性值相同,而在Y上的屬性值不同,則稱“Y函數(shù)依賴于X” ,記作X→Y。如果X→Y,并且對于X的任一真子集X ’,都有Y 不函數(shù)依賴于X ’,則稱“Y完全函數(shù)依賴于X” ,記作X f Y 。若X→Y,但Y不完全函數(shù)依賴于X,則稱“Y部分函數(shù)依賴于X”
95、,記作X P Y 。如果X→Y,Y→Z,且Y≮ X, X不函數(shù)依賴于Y,則稱“Z傳遞函數(shù)依賴于X”。</p><p><b> 5 范式</b></p><p> 在對表的形式進(jìn)行了規(guī)范化定義后,數(shù)據(jù)結(jié)構(gòu)還有五種規(guī)范化定義,定名為規(guī)范化模式,稱為范式。在這五種范式中,一般只用前三種,對于常用系統(tǒng)就足夠了。而且這五種范式是“向上兼容”的,即滿足第五范式的
96、數(shù)據(jù)結(jié)構(gòu)自動滿足一、二、三、四范式,滿足第四范式的數(shù)據(jù)結(jié)構(gòu)自動滿足第一、二、三范式,……,依此類推。第一范式(first normal form,簡稱1st NF)就是指在同一表中沒有重復(fù)項(xiàng)出現(xiàn),如果有則應(yīng)將重復(fù)項(xiàng)去掉。這個(gè)去掉重復(fù)項(xiàng)的過程就稱之為規(guī)范化處理。在本文所討論的開發(fā)方法里,1st NF實(shí)際上是沒有什么意義的。因?yàn)槲覀儼匆?guī)范化建立的指標(biāo)體系和表的過程都自動保證了所有表都滿足1st NF。
97、第二范式(second normal form,簡稱 2nd NF)是指每個(gè)表必須有一個(gè)(而且僅一個(gè))數(shù)據(jù)元素為主關(guān)鍵字(primary key),其它數(shù)據(jù)元素與主關(guān)鍵字一一對應(yīng)。例如,在圖l9.7中如果我們將合同號定義為主關(guān)鍵字(其它數(shù)據(jù)元素中的記錄數(shù)據(jù)都有可能重名,故不能作為主關(guān)鍵字),故只要知道了一個(gè)合同記錄的合同號,就可以唯一地在同一行中找到該合同的任何一項(xiàng)具</p><p> 2.4.2關(guān)系型數(shù)據(jù)庫
98、</p><p> 1 關(guān)系數(shù)據(jù)庫簡介</p><p> 提出關(guān)系模型的是美國IBM公司的E.F.Codd,1970年提出關(guān)系數(shù)據(jù)模型E.F.Codd, “A Relational Model of Data for Large Shared Data Banks”, 《Communication of the ACM》,1970;之后,提出了關(guān)系代數(shù)和關(guān)系演算的概念;1972年提出
99、了關(guān)系的第一、第二、第三范式;1974年提出了關(guān)系的BC范式。</p><p><b> 2 關(guān)系數(shù)據(jù)庫</b></p><p> 在一個(gè)給定的應(yīng)用領(lǐng)域中,所有關(guān)系的集合構(gòu)成一個(gè)關(guān)系數(shù)據(jù)庫。</p><p> 3 關(guān)系數(shù)據(jù)庫的型與值</p><p> 關(guān)系數(shù)據(jù)庫的型:關(guān)系數(shù)據(jù)庫模式,對關(guān)系數(shù)據(jù)庫的描述。<
100、/p><p> 關(guān)系數(shù)據(jù)庫模式包括若干域的定義和在這些域上定義的若干關(guān)系模式。</p><p> 關(guān)系數(shù)據(jù)庫的值:關(guān)系模式在某一時(shí)刻對應(yīng)的關(guān)系的集合,簡稱為關(guān)系數(shù)據(jù)庫。</p><p> 2.4.3關(guān)系數(shù)據(jù)語言 </p><p><b> 1 關(guān)系代數(shù)語言</b></p><p> ?。?)傳
101、統(tǒng)的集合運(yùn)算</p><p> 包括并(Union),差(Difference), 交(Intersection),笛卡爾積(Cartesian Product)。</p><p> 集合R和S具有相同的目n(即兩個(gè)關(guān)系都有n個(gè)屬性)并且相應(yīng)的屬性取自同一個(gè)域,則:</p><p> 并:R∪S :仍為n目關(guān)系,由屬于R或?qū)儆赟的元組組成</p>
102、<p> R∪S = { t|t ? R∨t ?S }</p><p> 差:R - S :仍為n目關(guān)系,由屬于R而不屬于S的所有元組組成</p><p> R -S = { t|t?R∧t?S }</p><p> 交:R∩S:仍為n目關(guān)系,由既屬于R又屬于S的元組組成</p><p> R∩S = { t|t ? R
103、∧t ?S }</p><p><b> 或</b></p><p> R∩S = R –(R-S)</p><p> 笛卡爾積:嚴(yán)格地講應(yīng)該是廣義的笛卡爾積(Extended Cartesian Product) </p><p> R: n目關(guān)系,k1個(gè)元組</p><p> S:
104、m目關(guān)系,k2個(gè)元組</p><p><b> R×S :</b></p><p> 列:(n+m)列元組的集合,元組的前n列是關(guān)系R的一個(gè)元組,后m列是關(guān)系S的一個(gè)元組</p><p> 行:k1×k2個(gè)元組</p><p> R×S = {tr ts |tr ?R ∧ ts?S
105、}</p><p> ?。?)專門的集合運(yùn)算</p><p> 選擇(Selection),投影(Projection),連接(Join),除(Division)。</p><p> 選擇:又稱為限制(Restriction)。</p><p><b> 選擇運(yùn)算符的含義:</b></p><p
106、> 在關(guān)系R中選擇滿足給定條件的諸元組</p><p> σF(R) = {t|t?R∧F(t)= '真'}。</p><p> 其中F:選擇條件,是一個(gè)邏輯表達(dá)式,基本形式為: X1θY1</p><p> 投影:從R中選擇出若干屬性列組成新的關(guān)系:</p><p> πA(R) = { t[A] | t
107、?R }。</p><p> 其中,A:R中的屬性列</p><p><b> 連接:也稱為θ連接</b></p><p> 連接運(yùn)算的含義:從兩個(gè)關(guān)系的笛卡爾積中選取屬性間滿足一定條件的元組</p><p> R∞S = { tr ∈R∧ts∈S∧tr[A]θts[B] }</p><p&g
108、t; A和B:分別為R和S上度數(shù)相等且可比的屬性組</p><p><b> θ:比較運(yùn)算符 </b></p><p> 連接運(yùn)算從R和S的廣義笛卡爾積R×S中選?。≧關(guān)系)在A屬性組上的值與(S關(guān)系)在B屬性組上值滿足比較關(guān)系θ的元組.</p><p> 除:給定關(guān)系R (X,Y) 和S (Y,Z),其中X,Y,Z
109、為屬性組。</p><p> R中的Y與S中的Y可以有不同的屬性名,但必須出自相同的域集。</p><p> R與S的除運(yùn)算得到一個(gè)新的關(guān)系P(X),P是R中滿足下列條件的元組在 X 屬性列上的投影:元組在X上分量值x的象集Yx包含S在Y上投影的集合,記作:</p><p> R÷S = {tr [X] | tr∈ R∧πY (S)∩ Yx }<
110、;/p><p> Yx:x在R中的象集,x = tr[X]</p><p><b> 2 關(guān)系演算語言</b></p><p> 元組關(guān)系演算語言 ALPHA</p><p> 域關(guān)系演算語言 QBE</p><p> 2.5 SQL語言介紹</p>
111、;<p> SQL(Structured Query Language)即“結(jié)構(gòu)式查詢語言”。SQL雖然名為查詢語言,但實(shí)際上具有定義、查詢、更新和控制等多種功能。由于它使用方便、功能豐富、語言簡單易學(xué),很快得到應(yīng)用和推廣。從20世紀(jì)70年代末起,在推出的關(guān)系數(shù)據(jù)庫系統(tǒng)產(chǎn)品ORACLE、SQL/DS、DB2、SYBASE上實(shí)現(xiàn)了SQL語言。很快,SQL語言被整個(gè)計(jì)算機(jī)界認(rèn)可。1987年6月,國際標(biāo)準(zhǔn)化組織(ISO)采納為
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)---城市公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)設(shè)計(jì)--公交查詢系統(tǒng)
- 公交查詢系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)論文 公交查詢系統(tǒng)設(shè)計(jì)
- 城市公交查詢系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----基于.net的城市公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 畢業(yè)論文——城市公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)論文---城市公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 城市公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 公交查詢系統(tǒng)設(shè)計(jì)
- 城市公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 公交查詢系統(tǒng)設(shè)計(jì)
- 基于.net的城市公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)—免費(fèi)畢業(yè)設(shè)計(jì)論文
- 城市公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 基于java的公交查詢系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 智能公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于asp的公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 基于物聯(lián)網(wǎng)公交查詢系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 基于.net的城市公交查詢系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
評論
0/150
提交評論