版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 畢業(yè)設(shè)計(論文)</b></p><p> 基于JAVA的郴州市的公交查詢系統(tǒng)的設(shè)計與實現(xiàn)</p><p> 姓 名 </p><p> 系 別、 專 業(yè) 計算機科學系 網(wǎng)絡(luò)工程專業(yè) </p>&l
2、t;p> 導(dǎo) 師 姓 名、職 稱 講師 </p><p> 完 成 時 間 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)運行環(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)點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運行環(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所運用到的數(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è)計分析21</p><p> 3.1應(yīng)用需求分析21</p><p> 3.2 系統(tǒng)功能模塊劃分21</p><p> 3.3 系統(tǒng)數(shù)據(jù)庫設(shè)計24</p><p> 3.3.1概念設(shè)計24</p><p> 3.3.2 邏輯設(shè)計2
10、6</p><p> 3.4 本章小結(jié)28</p><p> 4 公交查詢系統(tǒng)設(shè)計分析29</p><p> 4.1 查詢模塊的功能實現(xiàn)29</p><p> 4.2 管理更新的功能實現(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> 參考文獻35</b></p><p><b> 致 謝37</b></p><p><b> 摘
12、60; 要</b></p><p> 如今計算機網(wǎng)絡(luò)發(fā)展非常迅速,時間的重要性對于人們來說不言而喻,人們出行越來越注重時間的節(jié)約,城市公交已經(jīng)成為出行的一種主要的方式,本文結(jié)合公交運行的實際來對公交查詢信息系統(tǒng)進行可行性研究,通過詳實的問題定義與需求分析并且進行了合理的設(shè)計,提出了在B/S模式下的三層體系結(jié)構(gòu),應(yīng)用了當前最流行的Eclispe開發(fā)環(huán)境,后臺采用了以目前最穩(wěn)定的SQL Server20
13、05數(shù)據(jù)庫為開發(fā)平臺。該系統(tǒng)可以幫助查詢?nèi)藛T找到能最快到達目的地,并且節(jié)約費用。通過瀏覽器查詢,通過計算機網(wǎng)絡(luò)全面聯(lián)網(wǎng),實現(xiàn)中心控制、自動更新、更多的查詢方式、和GIS系統(tǒng)的互聯(lián)互通等等更多更強大的功能。從這方面來說,此系統(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ù),是計算機軟件領(lǐng)域的一個重要分支,產(chǎn)生于60年代末?,F(xiàn)已形成相當規(guī)模的理論體系和實用技術(shù)。優(yōu)秀的數(shù)據(jù)庫設(shè)計是應(yīng)用成功的基石。萬萬丈高樓平地起,數(shù)據(jù)庫設(shè)計如同高樓的基石,是開發(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)。這個三級結(jié)構(gòu)有時也稱為“三級模式結(jié)構(gòu)”。1 外部級:最接近用戶,是單個用戶所能看到的數(shù)據(jù)特性。單個用戶使用的數(shù)據(jù)視圖的描述稱為“外模式”。2 概念級:涉及到所有
19、用戶的數(shù)據(jù)定義、是全局的數(shù)據(jù)視圖。全局視圖的描述稱為“概念模式”。3 內(nèi)部級:最接近于物理存儲設(shè)備,涉及到實際數(shù)據(jù)存儲的結(jié)構(gòu)物理存儲數(shù)據(jù)視圖的描述稱為“內(nèi)模式”。數(shù)據(jù)庫的三級模式結(jié)構(gòu)是數(shù)據(jù)的三個抽象級別。它把數(shù)據(jù)的具體組織留給DBMS去做,用戶只要抽象地處理數(shù)據(jù),而不必關(guān)心數(shù)據(jù)在計算機中的表示和存儲,這樣就減輕了用戶使用系統(tǒng)的負擔。</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進行的。在不同的計算機系統(tǒng)中,由于缺乏統(tǒng)一的標準,即使同種數(shù)據(jù)模型的DBMS,它們在用戶接口、系統(tǒng)功能方面也常常是不相同的。用戶對數(shù)據(jù)庫進行操作,是
21、由DBMS把操作從應(yīng)用程序帶到外部級、概念級、再導(dǎo)向內(nèi)部級,進而操作存儲器中的數(shù)據(jù)。DBMS的主要目標,是使數(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)實現(xiàn)對數(shù)據(jù)庫中數(shù)據(jù)的操作。基本的數(shù)據(jù)操作分成兩類四種:檢索(查詢)、更新(插入、刪除、修改)3 數(shù)據(jù)庫的保護功能:數(shù)據(jù)庫中的數(shù)據(jù)</p><p> 4 數(shù)據(jù)庫的恢復(fù):在數(shù)據(jù)庫被破壞或數(shù)據(jù)不正確時,系統(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ù)庫的維護功能:它有許多實用程序提供給數(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才能實現(xiàn),通常DD中還存放數(shù)據(jù)庫運行時的統(tǒng)計信息。</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)運行環(huán)境
26、該系統(tǒng)采用Browser/Server模式進行設(shè)計: 在服務(wù)器上運行Web發(fā)布服務(wù)器、數(shù)據(jù)庫程序,服務(wù)器操作系統(tǒng)為WindowsNT/2000/XP/2003 server,客戶機操作為Windows9×/ NT/2000/XP/2003,其上運行瀏覽器程序,服務(wù)器和客戶機可為同一設(shè)備。</p><p> 1.2.4 系統(tǒng)開發(fā)工具
27、該系統(tǒng)采用JDK Java環(huán)境進行開發(fā),數(shù)據(jù)庫服務(wù)器為MySQL,WEB發(fā)布服務(wù)器為Tomcat Server;客戶端使用瀏覽器運行程序,整個系統(tǒng)調(diào)試成功。</p><p> 1.2.4現(xiàn)狀與前景 </p><p> 公交查詢系統(tǒng)現(xiàn)狀分析:鑒于中國目前的經(jīng)濟發(fā)展狀況,中國人出行還是以公交車為主,所以每個城市的公交系統(tǒng)都比較龐大發(fā)達。公交查詢系統(tǒng)是近兩年出現(xiàn)的新生事物,每
28、個城市的發(fā)展狀況也是良莠不齊。目前的公交查詢系統(tǒng),基本上具備一下功能:采用車站站點查詢、車次查詢、路線分析查詢?nèi)N查詢形式,不僅能夠查詢到各條線路的起停站點,同時還能夠分析出換乘車輛情況。 </p><p> 公交查詢系統(tǒng)的發(fā)展前景:未來的公交查詢系統(tǒng),將是基于B/S架構(gòu),通過瀏覽器查詢,通過計算機網(wǎng)絡(luò)全面聯(lián)網(wǎng),實現(xiàn)中心控制、自動更新、更多的查詢方式、和GIS系統(tǒng)的互聯(lián)互通等等更多更強大的功能。<
29、;/p><p> 1.3 本文所作的工作</p><p> 本文首先介紹了城市公交查詢系統(tǒng)的應(yīng)用背景、開發(fā)環(huán)境以及選用的開發(fā)工具與數(shù)據(jù)庫的關(guān)系,闡明了計算機互聯(lián)網(wǎng)絡(luò)的概念。并對數(shù)據(jù)庫的體系結(jié)構(gòu)、DBMS進行了介紹;介紹關(guān)系型數(shù)據(jù)庫的基本概念,著重說明了幾個關(guān)鍵概念的定義;然后對SQL語言作了一個介紹說明;從特點和功能入手,介紹Java、JSP;并且介紹了B/S模式的概念、特點;用
30、軟件工程的方法分析城市公交查詢系統(tǒng),對整個系統(tǒng)進行了需求分析、功能模塊劃分,并通過ER圖對數(shù)據(jù)庫進行概念設(shè)計;對城市公交查詢系統(tǒng)的具體設(shè)計,描述了查詢、錄入模塊的實現(xiàn)過程。 最后,在結(jié)束語的總結(jié)部分指出了系統(tǒng)的亮點以及不足之處,簡單介紹了自己開發(fā)過程中的體會與心得:在摸索中實踐,在實踐中摸索。</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)用提供了一個獨特的開發(fā)環(huán)境。按照 Sun 的說法, JSP
32、 能夠適應(yīng)市場上包括 Apache WebServer,IIS4.0 在內(nèi)的 85% 的服務(wù)器產(chǎn)品。</p><p> 當今比較流行的軟件技術(shù)研發(fā)模式是C/S和B/S的體系結(jié)構(gòu)。C/S(Client/Server)結(jié)構(gòu),即客戶機和服務(wù)器結(jié)構(gòu)。通過C/S可以充分利用兩端硬件環(huán)境的優(yōu)勢,將任務(wù)合理分配到Client端和Server端來實現(xiàn),降低了系統(tǒng)的通訊開銷。</p><p> Ecli
33、pse 這樣功能完整且成熟的開發(fā)環(huán)境,是由藍色巨人IBM 所釋出。IBM 花了4 千萬美金來開發(fā)這個IDE(Integrated Development Environment)。第一版1.0 在2001 年11 月釋出,隨后逐漸受到歡迎。Eclipse已經(jīng)成為開放原始碼計劃(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)用程序,如當紅的網(wǎng)上數(shù)碼商城、阿里巴巴、易趣網(wǎng)等都是用java開發(fā)出來的。</p><p> Java是一種跨平臺,適合于分布式計算環(huán)境的面向?qū)ο缶幊陶Z言。具體來說
35、,它具有如下特性: </p><p> 簡單性、面向?qū)ο蟆⒎植际?、解釋型、可靠、安全、平臺無關(guān)、可移植、高性能、多線程、動態(tài)性等。 </p><p> 下面我們將重點介紹Java語言的面向?qū)ο?、平臺無關(guān)、分布式、多線程、可靠和安全等特性。 </p><p><b> 1 面向?qū)ο?</b></p><p> 面向
36、對象其實是現(xiàn)實世界模型的自然延伸?,F(xiàn)實世界中任何實體都可以看作是對象。對象之間通過消息相互作用。另外,現(xiàn)實世界中任何實體都可歸屬于某類事物,任何對象都是某一類事物的實例。如果說傳統(tǒng)的過程式編程語言是以過程為中心以算法為驅(qū)動的話,面向?qū)ο蟮木幊陶Z言則是以對象為中心以消息為驅(qū)動。用公式表示,過程式編程語言為:程序=算法+數(shù)據(jù);面向?qū)ο缶幊陶Z言為:程序=對象+消息。 </p><p> 所有面向?qū)ο缶幊陶Z言都支持三個
37、概念:封裝、多態(tài)性和繼承,Java也不例外?,F(xiàn)實世界中的對象均有屬性和行為,映射到計算機程序上,屬性則表示對象的數(shù)據(jù),行為表示對象的方法(其作用是處理數(shù)據(jù)或同外界交互)。所謂封裝,就是用一個自主式框架把對象的數(shù)據(jù)和方法聯(lián)在一起形成一個整體。可以說,對象是支持封裝的手段,是封裝的基本單位。Java語言的封裝性較強,因為Java無全程變量,無主函數(shù),在Java中絕大部分成員是對象,只有簡單的數(shù)字類型、字符類型和布爾類型除外。而對于這些類型,
38、Java也提供了相應(yīng)的對象類型以便與其他對象交互操作。 </p><p> 多態(tài)性就是多種表現(xiàn)形式,具體來說,可以用“一個對外接口,多個內(nèi)在實現(xiàn)方法”表示。舉一個例子,計算機中的堆??梢源鎯Ω鞣N格式的數(shù)據(jù),包括整型,浮點或字符。不管存儲的是何種數(shù)據(jù),堆棧的算法實現(xiàn)是一樣的。針對不同的數(shù)據(jù)類型,編程人員不必手工選擇,只需使用統(tǒng)一接口名,系統(tǒng)可自動選擇。運算符重載(operator overload)一直被認為是一
39、種優(yōu)秀的多態(tài)機制體現(xiàn),但由于考慮到它會使程序變得難以理解,所以Java最后還是把它取消了。 </p><p> 繼承是指一個對象直接使用另一對象的屬性和方法。事實上,我們遇到的很多實體都有繼承的含義。例如,若把汽車看成一個實體,它可以分成多個子實體,如:卡車、公共汽車等。這些子實體都具有汽車的特性,因此,汽車是它們的“父親”,而這些子實體則是汽車的“孩子”。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)用程序不用修改就可在不同的軟硬件平臺上運行。平臺無關(guān)有兩種:源代碼級和目標代碼級。C和C++具有一定程度的源代碼級平臺無關(guān),表明用C或C++寫的應(yīng)用程
41、序不用修改只需重新編譯就可以在不同平臺上運行。</p><p> Java主要靠Java虛擬機(JVM)在目標碼級實現(xiàn)平臺無關(guān)性。JVM是一種抽象機器,它附著在具體操作系統(tǒng)之上,本身具有一套虛機器指令,并有自己的棧、寄存器組等。但JVM通常是在軟件上而不是在硬件上實現(xiàn)。(目前,SUN系統(tǒng)公司已經(jīng)設(shè)計實現(xiàn)了Java芯片,主要使用在網(wǎng)絡(luò)計算機NC上。 </p><p> 另外,Java芯片
42、的出現(xiàn)也會使Java更容易嵌入到家用電器中。)JVM是Java平臺無關(guān)的基礎(chǔ),在JVM上,有一個Java解釋器用來解釋Java編譯器編譯后的程序。Java編程人員在編寫完程序后,通過Java編譯器將Java源程序編譯為JVM的字節(jié)代碼。任何一臺機器只要配備了Java解釋器,就可以運行這個程序,而不管這種字節(jié)碼是在何種平臺上生成的。另外,Java采用的是基于IEEE標準的數(shù)據(jù)類型。通過JVM保證數(shù)據(jù)類型的一致性,也確保了Java的平臺無關(guān)
43、性。 </p><p> Java的平臺無關(guān)性具有深遠意義。首先,它使得編程人員所夢寐以求的事情(開發(fā)一次軟件在任意平臺上運行)變成事實,這將大大加快和促進軟件產(chǎn)品的開發(fā)。其次Java的平臺無關(guān)性正好迎合了“網(wǎng)絡(luò)計算機”思想。如果大量常用的應(yīng)用軟件(如字處理軟件等)都用Java重新編寫,并且放在某個Internet服務(wù)器上,那么具有NC的用戶將不需要占用大量空間安裝軟件,他們只需要一個Java解釋器,每當需要使
44、用某種應(yīng)用軟件時,下載該軟件的字節(jié)代碼即可,運行結(jié)果也可以發(fā)回服務(wù)器。目前,已有數(shù)家公司開始使用這種新型的計算模式構(gòu)筑自己的企業(yè)信息系統(tǒng)。 </p><p><b> 3 分布式 </b></p><p> 分布式包括數(shù)據(jù)分布和操作分布。數(shù)據(jù)分布是指數(shù)據(jù)可以分散在網(wǎng)絡(luò)的不同主機上,操作分布是指把一個計算分散在不同主機上處理。 Java支持WWW客戶機/服務(wù)器計算模
45、式,因此,它支持這兩種分布性。對于前者,Java提供了一個叫作URL的對象,利用這個對象,你可以打開并訪問具有相同URL地址上的對象,訪問方式與訪問本地文件系統(tǒng)相同。對于后者,Java的applet小程序可以從服務(wù)器下載到客戶端,即部分計算在客戶端進行,提高系統(tǒng)執(zhí)行效率。 </p><p> Java提供了一整套網(wǎng)絡(luò)類庫,開發(fā)人員可以利用類庫進行網(wǎng)絡(luò)程序設(shè)計,方便得實現(xiàn)Java的分布式特性。 </p>
46、;<p> 4 可靠性和安全性 </p><p> Java最初設(shè)計目的是應(yīng)用于電子類消費產(chǎn)品,因此要求較高的可靠性。Java雖然源于C++,但它消除了許多C++不可靠因素,可以防止許多編程錯誤。首先,Java是強類型的語言,要求顯式的方法聲明,這保證了編譯器可以發(fā)現(xiàn)方法調(diào)用錯誤,保證程序更加可靠;其次,Java不支持指針,這杜絕了內(nèi)存的非法訪問;第三,Java的自動單元收集防止了內(nèi)存丟失等動態(tài)
47、內(nèi)存分配導(dǎo)致的問題;第四,Java解釋器運行時實施檢查,可以發(fā)現(xiàn)數(shù)組和字符串訪問的越界,最后,Java提供了異常處理機制,程序員可以把一組錯誤代碼放在一個地方,這樣可以簡化錯誤處理任務(wù)便于恢復(fù)。 </p><p> 由于Java主要用于網(wǎng)絡(luò)應(yīng)用程序開發(fā),因此對安全性有較高的要求。如果沒有安全保證,用戶從網(wǎng)絡(luò)下載程序執(zhí)行就非常危險。Java通過自己的安全機制防止了病毒程序的產(chǎn)生和下載程序?qū)Ρ镜叵到y(tǒng)的威脅破壞。當J
48、ava字節(jié)碼進入解釋器時,首先必須經(jīng)過字節(jié)碼校驗器的檢查,然后,Java解釋器將決定程序中類的內(nèi)存布局,隨后,類裝載器負責把來自網(wǎng)絡(luò)的類裝載到單獨的內(nèi)存區(qū)域,避免應(yīng)用程序之間相互干擾破壞。最后,客戶端用戶還可以限制從網(wǎng)絡(luò)上裝載的類只能訪問某些文件系統(tǒng)。 </p><p> 上述幾種機制結(jié)合起來,使得Java成為安全的編程語言。 </p><p><b> 5 多線程 <
49、/b></p><p> 線程是操作系統(tǒng)的一種新概念,它又被稱作輕量進程,是比傳統(tǒng)進程更小的可并發(fā)執(zhí)行的單位。 </p><p> C和C++采用單線程體系結(jié)構(gòu),而Java卻提供了多線程支持。Java在兩方面支持多線程。一方面,Java環(huán)境本身就是多線程的。若干個系統(tǒng)線程運行負責必要的無用單元回收,系統(tǒng)維護等系統(tǒng)級操作;另一方面,Java語言內(nèi)置多線程控制,可以大大簡化多線程應(yīng)用
50、程序開發(fā)。Java提供了一個類Thread,由它負責啟動運行,終止線程,并可檢查線程狀態(tài)。Java的線程還包括一組同步原語。這些原語負責對線程實行并發(fā)控制。利用Java的多線程編程接口,開發(fā)人員可以方便得寫出支持多線程的應(yīng)用程序,提高程序執(zhí)行效率。必須注意地是,Java的多線程支持在一定程度上受運行時支持平臺的限制。例如,如果操作系統(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的一個組成部分,它與J2SE、J2EE并稱。根據(jù)Sun的定義:J2ME是一種高度優(yōu)化的Java運行環(huán)境,主要針對消費類電子設(shè)備的,例如蜂窩電話和可視電話、數(shù)字機頂盒、汽車導(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平臺的標準版,J2EE不僅鞏固了標準版中的許多優(yōu)點,例如"編寫一次、隨處運行"的特性、方便存取數(shù)據(jù)庫
54、的JDBC 、PI、CORBA技術(shù)以及能夠在Internet應(yīng)用中保護數(shù)據(jù)的安全模式等等,同時還提供了對 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技術(shù)的全面支持。其最終目的就是成為一個能夠使企業(yè)開發(fā)者大幅縮短投放市場時間的體系結(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)點</p><p><b> 1 跨越平臺的限制</b></p><p> 盡管目前Windows桌面系統(tǒng)一統(tǒng)天下,但是服務(wù)器系統(tǒng)采用的操作系統(tǒng)卻具有多樣性,包括Linux、Unix、Windows NT/2000Server等系統(tǒng)都可以實現(xiàn)企業(yè)級應(yīng)用。即便是桌面系統(tǒng)
57、,中國政府出于安全和國家戰(zhàn)略的考慮,希望有自己的操作系統(tǒng),Linux的出現(xiàn)使這種想法變成了現(xiàn)實,不久也許國產(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投資無疑是一種巨大的風險。而采用Java語言實現(xiàn)的B/S架構(gòu)的軟件產(chǎn)品真正做到了“一次編寫處處運行
58、(Write Once, Run Anywhere)” ,對企業(yè)而言,可以規(guī)避將來更換操作系統(tǒng)所帶來的風險。</p><p><b> 2 健壯的系統(tǒng)</b></p><p> Java語言實現(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標準。EJB為企業(yè)級應(yīng)用中必不可少的數(shù)據(jù)封裝、事務(wù)處理、交易控制等功能提供了良好的技術(shù)基礎(chǔ)。至此,J2EE平臺的三大核心技術(shù)Servlet、JSP和EJB都已先后問世。1999年,Sun正式發(fā)布了J2EE的第一個版本。緊接著,遵循J2EE標準,為企業(yè)級應(yīng)用提供
60、支撐平臺的各類應(yīng)用服務(wù)軟件爭先恐后地涌現(xiàn)了出來。IBM的WebSphere、BEA的WebLogic都是這一領(lǐng)域里最為成功的商業(yè)軟件平臺。隨著開源運動的興起,JBoss等開源世界里的應(yīng)用服務(wù)新秀也吸引了許多用戶的注意力。到2003年時,Sun的J2EE版本已經(jīng)升級到了1.4版,其中三個關(guān)鍵組件的版本也演進到了Servlet 2.4、JSP 2.0和EJB 2.1。至此,J2EE體系及相關(guān)的軟件產(chǎn)品已經(jīng)成為了Web服務(wù)端開發(fā)的一個強有力的
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 代碼主要負責描述信息的顯示樣式,而程序代碼則用來
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 還有一個更為本質(zhì)的區(qū)別:兩種語言引擎用完全不同的方式處理頁面中嵌入的程序代碼。在 ASP 下, VBScript 代碼被 ASP 引擎解釋執(zhí)行;在 JSP 下,代碼被編譯成 Servlet 并由 Java 虛擬機執(zhí)行,這種編譯操作僅在對 JSP 頁面的第一次請求時發(fā)生。 </p><p> 2.2.2 JSP運行環(huán)境</p><p> Sun 公司的 JSP
64、主頁在 http://www.javasoft.com/products/jsp/index.html ,從這里還可以下載 JSP 規(guī)范,這些規(guī)范定義了供應(yīng)商在創(chuàng)建 JSP 引擎時所必須遵從的一些規(guī)則。在運行 JSP 示例頁面之前,請注意一下安裝 JSWDK 的目錄,特別是“ work ”子目錄下的內(nèi)容。執(zhí)行示例頁面時,可以在這里看到 JSP 頁面如何被轉(zhuǎn)換成 Java 源文件,然后又被編譯成 class
65、文件(即 Servlet )。 JSWDK 軟件包中的示例頁面分為兩類,它們或者是 JSP 文件,或者是包含一個表單的 HTML 文件,這些表單均由 JSP 代碼處理。與 ASP 一樣, JSP 中的 Java 代碼均在服務(wù)器端執(zhí)行。因此,在瀏覽器中使用“查看源文件”菜單是無法看到 JSP 源代碼的,只能看到結(jié)果 HTML 代碼。所有示例的源代碼均通過一個單獨的“ examples ”頁面提供。 </p>&
66、lt;p> 2.2.3 JSP頁面示例</p><p> 下面我們分析一個簡單的 JSP 頁面。您可以在 JSWDK 的 examples 目錄下創(chuàng)建另外一個目錄存放此文件,文件名字可以任意,但擴展名必須為 .jsp 。從下面的代碼清單中可以看到, JSP 頁面除了比普通 HTML 頁面多一些 Java 代碼外,兩者具有基本相同的結(jié)構(gòu)。 Java 代碼是通過 < % 和 %> 符號加入到 H
67、TML 代碼中間的,它的主要功能是生成并顯示一個從 0 到 9 的字符串。在這個字符串的前面和后面都是一些通過 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> 這個 JSP 頁面可以分成幾個部分來分析: </p><p> 首先是 JSP 指令。它描述的是頁面的基本信息,如所使用的語言、是否維持會話狀態(tài)、是否使用緩沖等。 JSP 指令由 < %@ 開始, %> 結(jié)束。在本例中,指令“ < %@ page language="java" %> ”只簡單地定義了本例使用的是 Java
71、 語言(當前,在 JSP 規(guī)范中 Java 是唯一被支持的語言)。 接下來的是 JSP 聲明。 JSP 聲明可以看成是定義類這一層次的變量和方法的地方。 JSP 聲明由 < %! 開始, %> 結(jié)束。如本例中的“ < %! String str="0"; %> ”定義了一個字符串變量。在每一項聲明的后面都必須有一個分號,就象在普通 Java 類中聲明成員變量一樣。 位于 < % 和 %&
72、gt; 之間的代碼塊是描述 JSP 頁面處理邏輯的 Java 代碼,如本例中的 for 循環(huán)所示。 最后,位于 < %= 和 %> 之間的代碼稱為 JSP 表達式,如本例中的“ < %= str %> ”所示。 JSP 表達式提供了一種將 JSP 生成的數(shù)值嵌入 HTML 頁面的簡單方法。</p><p> 會話狀態(tài)維持是 Web 應(yīng)用開發(fā)者必須面對的問題。有多種方法可以用來解決這個問
73、題,如使用 Cookies 、隱藏的表單輸入域,或直接將狀態(tài)信息附加到 URL 中。 Java Servlet 提供了一個在多個請求之間持續(xù)有效的會話對象,該對象允許用戶存儲和提取會話狀態(tài)信息。 JSP 也同樣支持 Servlet 中的這個概念。</p><p> 在 Sun 的 JSP 指南 中可以看到許多有關(guān)隱含對象的說明(隱含的含義是,這些對象可以直接引用,不需要顯式地聲明,也不需要專門的代碼創(chuàng)建其實例)
74、。例如 request 對象,它是 HttpServletRequest 的一個子類。該對象包含了所有有關(guān)當前瀏覽器請求的信息,包括 Cookies , HTML 表單變量等等。 session 對象也是這樣一個隱含對象。這個對象在第一個 JSP 頁面被裝載時自動創(chuàng)建,并被關(guān)聯(lián)到 request 對象上。與 ASP 中的會話對象相似, JSP 中的 session 對象對于那些希望通過多個頁面完成一個事務(wù)的應(yīng)用是非常有用的。為說明 s
75、ession 對象的具體應(yīng)用,接下來我們用三個頁面模擬一個多頁面的 Web 應(yīng)用。第一個頁面( q1.html )僅包含一個要求輸入用戶名字的 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>第三個頁面也是一個 JSP 頁面( q3.jsp ),主要任務(wù)是顯示問答結(jié)果。它從 session 對象提取 thename 的值并顯示它,以此證明雖然該值在第一個頁面輸入,但通過 session 對
78、象得以保留。 q3.jsp 的另外一個任務(wù)是提取在第二個頁面中的用戶輸入并顯示它:< 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)的一種變化或者改進的結(jié)構(gòu)。在這種結(jié)構(gòu)下,用戶工作界面通過WWW瀏覽器來實現(xiàn),極少部分事務(wù)邏輯在前端(Browser)實現(xiàn),主要事務(wù)邏輯在服務(wù)器端(Server)實現(xiàn)。大大簡化了客戶端電腦載荷,減少了系統(tǒng)維護與升級的成本和工作量,降低了用戶的總體成本。B/S方式可以形成所謂三層以上的結(jié)構(gòu)。B/S結(jié)構(gòu)是一次到
81、位開發(fā),能實現(xiàn)不同人員,從不同地點,以不同的接入方式訪問和操作共同的數(shù)據(jù)庫;它能有效地保護數(shù)據(jù)平臺和管理訪問權(quán)限,服務(wù)器數(shù)據(jù)庫也很安全。特別是在JAVA這樣的跨平臺語言出現(xiàn)之后,B/S架構(gòu)管理軟件更為方便、快捷、高效。B/S工作機制如圖3-1所示:</p><p> 傳統(tǒng)的C/S架構(gòu)(客戶機/服務(wù)器,Client/Server)方式中,業(yè)務(wù)邏輯位于客戶端,每完成一項事務(wù),都要頻繁地訪問數(shù)據(jù)庫,使得網(wǎng)絡(luò)上數(shù)據(jù)流量
82、非常大,對于慢速連接的用戶,甚至無法使用。</p><p> 圖 3.1 B/S工作機制</p><p> 2.3.1 Java程序框架</p><p> 為彌補上述C/S架構(gòu)的缺陷,人們發(fā)展出了三層或多層架構(gòu):客戶機—中間件(應(yīng)用服務(wù)器)—數(shù)據(jù)庫服務(wù)器(Client—Middle ware—Database Server)。在這種架構(gòu)中,業(yè)務(wù)邏輯放置于中間
83、件服務(wù)器上,大量的數(shù)據(jù)流也位于中間件和數(shù)據(jù)庫之間,而客戶機只是簡單地發(fā)出請求,中間件接受請求后進行事務(wù)處理并將處理的結(jié)果返回給客戶機,這一類型的客戶機也稱之為“廋客戶”。B/S架構(gòu)實際上是三層架構(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ù)</p><p> 將來所有的應(yīng)用系統(tǒng)幾乎都在互聯(lián)網(wǎng)或企業(yè)內(nèi)部廣域網(wǎng)上運行,發(fā)展電子商務(wù)成為企業(yè)不可避免的信息化道路。B/S架構(gòu)的軟件正是電子商務(wù)的基石,正是這類軟件使得移動辦公和分布式協(xié)同工作真正成為現(xiàn)實。無論在世界的那個角落,只需要一臺可以聯(lián)網(wǎng)的設(shè)備(計算機、PDA甚至手機)都可以方便地與客戶聯(lián)系和與他人協(xié)同工作
85、。</p><p> 2 軟件操作、維護和升級方式的革命</p><p> 軟件系統(tǒng)的改進和升級越來越頻繁,B/S架構(gòu)的產(chǎn)品在維護和升級方面具備顯著的優(yōu)勢。無論用戶的規(guī)模有多大,有多少分支機構(gòu)都不會增加任何維護升級的工作量,所有的操作只對服務(wù)器進行,通過遠程連接服務(wù)器,異地的運維人員甚至于可以做到遠程維護和升級,這對人力、時間、費用的節(jié)省是相當驚人的。所有的客戶端只是瀏覽器,所有的操作
86、都和上網(wǎng)瀏覽網(wǎng)頁類似,使用者接受的培訓(xùn)也僅限于業(yè)務(wù)邏輯而無需將大量精力浪費學習軟件操作上。</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)進行整合的方案。</p><p> 2.4 J2EE所運用到的數(shù)據(jù)庫技術(shù)</p><p> 關(guān)系數(shù)據(jù)庫應(yīng)用數(shù)學方法來處理數(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)從實驗室走向了社會,成為最重要、應(yīng)用最廣泛的數(shù)據(jù)庫系統(tǒng)
88、,大大促進了數(shù)據(jù)庫應(yīng)用領(lǐng)域的擴大和深入。</p><p> 關(guān)系數(shù)據(jù)庫的設(shè)計中,一個非常重要的被視為理論問題的內(nèi)容是如何構(gòu)造合理的關(guān)系,使之能準確地反應(yīng)現(xiàn)實世界,有利于應(yīng)用和具體的操作。這一問題就是關(guān)系規(guī)范化要研究的問題。主要包括:</p><p> 1函數(shù)依賴及Armstrong公理系統(tǒng);</p><p> 2為什么要對模式進行分解,如何分解;</p&
89、gt;<p> 3如何判斷關(guān)系模式達到幾范式;</p><p> 4如何求屬性的閉包及如何求最小函數(shù)依賴集,這幾種理論信息構(gòu)成了關(guān)系數(shù)據(jù)庫的骨架。</p><p> 2.4.1關(guān)系模型的基本概念 </p><p> 用二維表格結(jié)構(gòu)表示實體集,外鍵表示實體間聯(lián)系的數(shù)據(jù)模型稱為關(guān)系模型。數(shù)據(jù)模型是對現(xiàn)實世界的模擬。 </p&g
90、t;<p> 1 二維表格舉例--職工登記表,如表2.1</p><p> 表2.1 職工登記表</p><p><b> 2 鍵(KEY)</b></p><p> 鍵由一個或幾個屬性組成,在實際使用中,有下列幾種鍵:</p><p> ?。?) 超鍵(Super Key)
91、:在關(guān)系中能惟一標識元組的屬性集稱為關(guān)系模式的超鍵。(2) 候選鍵(Candidate Key):不含有多余屬性的超鍵稱為候選鍵。也就是在候選鍵中,若要再刪除屬性,就不是鍵了。(3) 主鍵:(Primary Key):用戶選作元組標識的一個侯選鍵稱為主鍵。一般,如不加說明,則鍵是指主鍵。3 關(guān)系的定義和性質(zhì)
92、我們可以用集合的觀點定義關(guān)系。關(guān)系是一個元數(shù)為K(K>=1)的元組的集合。把關(guān)系看成是一個集合,集合中的元素是元組,每個元組的屬性個數(shù)應(yīng)相同。在關(guān)系模型中,對關(guān)系作了下列規(guī)范性限制:</p><p> ?。?)關(guān)系中每一個屬性值都是不可分解的。</p><p> ?。?)關(guān)系中允許出現(xiàn)相同的元組(沒有重復(fù)元組)</p><p> (3)由于關(guān)系是一個集
93、合,因此不考慮元組間的順序,即沒有行序。</p><p> ?。?) 元組中,屬性在理論上也是無序的,但在使用時按習慣考慮列的順序。</p><p> 關(guān)系數(shù)據(jù)庫的設(shè)計理論主要包括三個方面的內(nèi)容:數(shù)據(jù)依賴、范式,模式設(shè)計方法。其中數(shù)據(jù)依賴起著核心的作用。</p><p> 4 函數(shù)依賴(Functional dependency , FD)的定義
94、</p><p> 設(shè)R(U)是一個關(guān)系模式,U是R的屬性集合,X和Y是U的子集。對于R(U)的任何一個可能的關(guān)系r,如果r中不存在兩個元組,它們在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> 在對表的形式進行了規(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àn),如果有則應(yīng)將重復(fù)項去掉。這個去掉重復(fù)項的過程就稱之為規(guī)范化處理。在本文所討論的開發(fā)方法里,1st NF實際上是沒有什么意義的。因為我們按規(guī)范化建立的指標體系和表的過程都自動保證了所有表都滿足1st NF。
97、第二范式(second normal form,簡稱 2nd NF)是指每個表必須有一個(而且僅一個)數(shù)據(jù)元素為主關(guān)鍵字(primary key),其它數(shù)據(jù)元素與主關(guān)鍵字一一對應(yīng)。例如,在圖l9.7中如果我們將合同號定義為主關(guān)鍵字(其它數(shù)據(jù)元素中的記錄數(shù)據(jù)都有可能重名,故不能作為主關(guān)鍵字),故只要知道了一個合同記錄的合同號,就可以唯一地在同一行中找到該合同的任何一項具</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> 在一個給定的應(yīng)用領(lǐng)域中,所有關(guān)系的集合構(gòu)成一個關(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)系模式在某一時刻對應(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> (1)傳
101、統(tǒng)的集合運算</p><p> 包括并(Union),差(Difference), 交(Intersection),笛卡爾積(Cartesian Product)。</p><p> 集合R和S具有相同的目n(即兩個關(guān)系都有n個屬性)并且相應(yīng)的屬性取自同一個域,則:</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īng)該是廣義的笛卡爾積(Extended Cartesian Product) </p><p> R: n目關(guān)系,k1個元組</p><p> S:
104、m目關(guān)系,k2個元組</p><p><b> R×S :</b></p><p> 列:(n+m)列元組的集合,元組的前n列是關(guān)系R的一個元組,后m列是關(guān)系S的一個元組</p><p> 行:k1×k2個元組</p><p> R×S = {tr ts |tr ?R ∧ ts?S
105、}</p><p> ?。?)專門的集合運算</p><p> 選擇(Selection),投影(Projection),連接(Join),除(Division)。</p><p> 選擇:又稱為限制(Restriction)。</p><p><b> 選擇運算符的含義:</b></p><p
106、> 在關(guān)系R中選擇滿足給定條件的諸元組</p><p> σF(R) = {t|t?R∧F(t)= '真'}。</p><p> 其中F:選擇條件,是一個邏輯表達式,基本形式為: 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> 連接運算的含義:從兩個關(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> θ:比較運算符 </b></p><p> 連接運算從R和S的廣義笛卡爾積R×S中選取(R關(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的除運算得到一個新的關(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雖然名為查詢語言,但實際上具有定義、查詢、更新和控制等多種功能。由于它使用方便、功能豐富、語言簡單易學,很快得到應(yīng)用和推廣。從20世紀70年代末起,在推出的關(guān)系數(shù)據(jù)庫系統(tǒng)產(chǎn)品ORACLE、SQL/DS、DB2、SYBASE上實現(xiàn)了SQL語言。很快,SQL語言被整個計算機界認可。1987年6月,國際標準化組織(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計---城市公交查詢系統(tǒng)的設(shè)計與實現(xiàn)
- 畢業(yè)設(shè)計--公交查詢系統(tǒng)
- 公交查詢系統(tǒng)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計論文 公交查詢系統(tǒng)設(shè)計
- 城市公交查詢系統(tǒng)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計----基于.net的城市公交查詢系統(tǒng)的設(shè)計與實現(xiàn)
- 公交查詢系統(tǒng)的設(shè)計與實現(xiàn).pdf
- 畢業(yè)論文——城市公交查詢系統(tǒng)的設(shè)計與實現(xiàn)
- 畢業(yè)論文---城市公交查詢系統(tǒng)的設(shè)計與實現(xiàn)
- 城市公交查詢系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)論文
- 公交查詢系統(tǒng)設(shè)計
- 城市公交查詢系統(tǒng)的設(shè)計與實現(xiàn).pdf
- 公交查詢系統(tǒng)設(shè)計
- 基于.net的城市公交查詢系統(tǒng)的設(shè)計與實現(xiàn)—免費畢業(yè)設(shè)計論文
- 城市公交查詢系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)論文
- 基于java的公交查詢系統(tǒng)設(shè)計與實現(xiàn)
- 智能公交查詢系統(tǒng)的設(shè)計與實現(xiàn).pdf
- 基于asp的公交查詢系統(tǒng)的設(shè)計與實現(xiàn)
- 基于物聯(lián)網(wǎng)公交查詢系統(tǒng)設(shè)計與實現(xiàn)
- 基于.net的城市公交查詢系統(tǒng)設(shè)計與實現(xiàn)
評論
0/150
提交評論