




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
軟件工程概論課后習(xí)題答案(第二版)第1章軟件與軟件工程的概念1.1舉出你所知道的應(yīng)用軟件的例子。辦公軟件、游戲軟件、財(cái)務(wù)軟件、銀行軟件、人事管理軟件、工資管理軟件、學(xué)籍管理軟件等。1.2認(rèn)為“軟件就是程序,軟件開(kāi)發(fā)就是編程序。”這種觀點(diǎn)是否正確?為什么?認(rèn)為“軟件就是程序,軟件開(kāi)發(fā)就是編程序?!边@種觀點(diǎn)是錯(cuò)誤的。首先,軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另一部分,它是包括程序,數(shù)據(jù)及其相關(guān)文檔的完整集合,程序只是軟件的組成部分之一;其次,在軟件開(kāi)發(fā)中,編程只是軟件開(kāi)發(fā)過(guò)程的一個(gè)階段。1.3如果將軟件開(kāi)發(fā)比作高樓大廈的建造,可以將軟件的設(shè)計(jì)比作什么?可以將軟件的設(shè)計(jì)比作建筑設(shè)計(jì),軟件設(shè)計(jì)的成果相當(dāng)于建筑設(shè)計(jì)的設(shè)計(jì)圖紙。1.4什么是軟件危機(jī)?它有哪些典型表現(xiàn)?為什么會(huì)出現(xiàn)軟件危機(jī)?軟件危機(jī):軟件危機(jī)是指在計(jì)算機(jī)軟件的開(kāi)發(fā)和維護(hù)過(guò)程中所遇到的一系列嚴(yán)重問(wèn)題。典型表現(xiàn):(1)對(duì)軟件開(kāi)發(fā)成本和進(jìn)度的估計(jì)常常很不準(zhǔn)確。(2)用戶(hù)對(duì)“已完成的”軟件系統(tǒng)不滿(mǎn)意的現(xiàn)象經(jīng)常發(fā)生。(3)軟件產(chǎn)品的質(zhì)量往往靠不住。(4)軟件常常是不可維護(hù)的。(5)軟件通常沒(méi)有適當(dāng)?shù)奈臋n資料。(6)軟件成本在計(jì)算機(jī)系統(tǒng)總成本中所占的比例逐年上升。(7)軟件開(kāi)發(fā)生產(chǎn)率提高的速度,既跟不上硬件的發(fā)展速度,也遠(yuǎn)遠(yuǎn)跟不上計(jì)算機(jī)應(yīng)用迅速普及深入的趨勢(shì)。產(chǎn)生軟件危機(jī)的原因:除了軟件本身的特點(diǎn),其原因主要有以下幾個(gè)方面:(1)缺乏軟件開(kāi)發(fā)的經(jīng)驗(yàn)和有關(guān)軟件開(kāi)發(fā)數(shù)據(jù)的積累,使得開(kāi)發(fā)工作計(jì)劃很難制定。(2)軟件人員與用戶(hù)的交流存在障礙,使得獲取的需求不充分或存在錯(cuò)誤。(3)軟件開(kāi)發(fā)過(guò)程不規(guī)范。如,沒(méi)有真正了解用戶(hù)的需求就開(kāi)始編程序。(4)隨著軟件規(guī)模的增大,其復(fù)雜性往往會(huì)呈指數(shù)級(jí)升高。需要很多人分工協(xié)作,不僅涉及技術(shù)問(wèn)題,更重要的是必須有科學(xué)嚴(yán)格的管理。(5)缺少有效的軟件評(píng)測(cè)手段,提交給用戶(hù)的軟件的質(zhì)量不能完全保證。1.5什么是軟件工程?軟件工程是指導(dǎo)計(jì)算機(jī)軟件開(kāi)發(fā)和維護(hù)的工程學(xué)科。采用工程的概念、原理、技術(shù)和方法來(lái)開(kāi)發(fā)和維護(hù)軟件,把經(jīng)過(guò)時(shí)間考驗(yàn)而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來(lái),以經(jīng)濟(jì)地開(kāi)發(fā)出高質(zhì)量的軟件并有效地維護(hù)它,這就是軟件工程。1.6簡(jiǎn)述軟件生存期由哪些主要的階段組成,每一階段的主要任務(wù)是什么?(1)問(wèn)題定義與可行性研究:?jiǎn)栴}定義必須回答的關(guān)鍵問(wèn)題是:“要解決的問(wèn)題是什么”??尚行匝芯恳卮鸬年P(guān)鍵問(wèn)題是:“在成本和時(shí)間的限制條件下能否解決問(wèn)題?是否值得做?”。(2)需求分析:這個(gè)階段的任務(wù)仍然不是具體地解決客戶(hù)的問(wèn)題,而是準(zhǔn)確地回答“目標(biāo)系統(tǒng)必須做什么”這個(gè)問(wèn)題。(3)軟件設(shè)計(jì):本階段要回答的關(guān)鍵問(wèn)題是“目標(biāo)系統(tǒng)如何做?”為此,必須在設(shè)計(jì)階段中制定設(shè)計(jì)方案,把已確定的各項(xiàng)需求轉(zhuǎn)換成相應(yīng)的軟件體系結(jié)構(gòu)。結(jié)構(gòu)中的每一組成部分都是意義明確的構(gòu)件,此即所謂概要設(shè)計(jì)。進(jìn)而具體描述每個(gè)構(gòu)件所要完成的工作,為源程序編寫(xiě)打下基礎(chǔ),此即所謂詳細(xì)設(shè)計(jì)。(4)程序編碼和單元測(cè)試:本階段要解決的問(wèn)題是“正確地實(shí)現(xiàn)已做的設(shè)計(jì)”,為此,需要選擇合適的編程語(yǔ)言,把軟件設(shè)計(jì)轉(zhuǎn)換成計(jì)算機(jī)可以接受的程序代碼,并對(duì)程序結(jié)構(gòu)中的各個(gè)模塊進(jìn)行單元測(cè)試,然后運(yùn)用調(diào)試的手段排除測(cè)試中發(fā)現(xiàn)的錯(cuò)誤。要求編寫(xiě)出的程序應(yīng)當(dāng)是結(jié)構(gòu)良好、清晰易讀的,且與設(shè)計(jì)相一致的。(5)集成測(cè)試和系統(tǒng)測(cè)試:集成測(cè)試的任務(wù)是將已測(cè)試過(guò)的模塊按設(shè)計(jì)規(guī)定的順序組裝起來(lái),在組裝的過(guò)程中檢查程序連接的問(wèn)題。系統(tǒng)測(cè)試的任務(wù)是根據(jù)需求規(guī)格說(shuō)明的要求,對(duì)必須實(shí)現(xiàn)的各項(xiàng)需求,逐項(xiàng)進(jìn)行確認(rèn),判定已開(kāi)發(fā)的軟件是否符合用戶(hù)需求,能否交付用戶(hù)使用。為了更有效地發(fā)現(xiàn)系統(tǒng)中的問(wèn)題,通常這個(gè)階段的工作由開(kāi)發(fā)人員、用戶(hù)之外的第三者承擔(dān)。(6)運(yùn)行維護(hù):已交付的軟件投入正式使用,便進(jìn)入運(yùn)行維護(hù)階段。這一階段可能持續(xù)若干年。軟件在運(yùn)行中可能由于多方面的原因,需要對(duì)它進(jìn)行維護(hù)。通常有四種類(lèi)型的維護(hù):改正性維護(hù)、適應(yīng)性維護(hù)、完善性維護(hù)和預(yù)防性維護(hù)。1.7常見(jiàn)的軟件生存期模型主要有哪些?每種模型的優(yōu)缺點(diǎn)是什么?常見(jiàn)的軟件生存期模型主要有瀑布模型、快速原型模型、增量模型、螺旋模型、噴泉模型和統(tǒng)一過(guò)程。(1)瀑布模型優(yōu)點(diǎn):可強(qiáng)迫開(kāi)發(fā)人員采用規(guī)范化的方法;嚴(yán)格地規(guī)定了每個(gè)階段必須提交的文檔;要求每個(gè)階段交出的所有產(chǎn)品都必須經(jīng)過(guò)質(zhì)量保證小組的仔細(xì)驗(yàn)證。缺點(diǎn):由于瀑布模型幾乎完全依賴(lài)于書(shū)面的規(guī)格說(shuō)明,很可能導(dǎo)致最終開(kāi)發(fā)出的軟件產(chǎn)品不能真正滿(mǎn)足用戶(hù)的需要;用戶(hù)往往需要等待很長(zhǎng)時(shí)間才能看到可以運(yùn)行的程序;適應(yīng)需求變更的能力比較差。適用范圍:瀑布模型只適用于項(xiàng)目開(kāi)始時(shí)需求已確定的情況。(2)快速原型模型優(yōu)點(diǎn):有助于滿(mǎn)足用戶(hù)的真實(shí)需求;原型系統(tǒng)已經(jīng)通過(guò)與用戶(hù)的交互而得到驗(yàn)證,據(jù)此產(chǎn)生的規(guī)格說(shuō)明文檔能夠正確地描述用戶(hù)需求。缺點(diǎn):要求開(kāi)發(fā)人員快速建立原型。適用范圍:適用于需求不明確的軟件項(xiàng)目。(3)增量模型優(yōu)點(diǎn):●能在較短時(shí)間內(nèi)向用戶(hù)提交可完成一些基本功能的產(chǎn)品,即從第一個(gè)構(gòu)件交付之日起,用戶(hù)就能做一些有用的工作?!裰鸩皆黾赢a(chǎn)品的功能可以使用戶(hù)有較充裕的時(shí)間學(xué)習(xí)和適應(yīng)新產(chǎn)品,從而減少一個(gè)全新的軟件可能給用戶(hù)組織帶來(lái)的沖擊?!耥?xiàng)目失敗的風(fēng)險(xiǎn)較低,雖然在某些增量構(gòu)件中可能遇到一些問(wèn)題,但其他增量構(gòu)件將能夠成功地交付給客戶(hù)。●優(yōu)先級(jí)最高的服務(wù)首先交付,然后再將其他增量構(gòu)件逐次集成進(jìn)來(lái)。因此,最重要的系統(tǒng)服務(wù)將接受最多的測(cè)試。缺點(diǎn):●在把每個(gè)新的增量構(gòu)件集成到現(xiàn)有軟件體系結(jié)構(gòu)中時(shí),必須不破壞原來(lái)已經(jīng)開(kāi)發(fā)出的產(chǎn)品?!褴浖w系結(jié)構(gòu)必須是開(kāi)放的,即向現(xiàn)有產(chǎn)品中加入新構(gòu)件的過(guò)程必須簡(jiǎn)單、方便。適用范圍:適用于工期緊張、功能可以劃分、比較復(fù)雜的軟件項(xiàng)目。軟件工程師必須有較高的技術(shù)水平,能夠設(shè)計(jì)出開(kāi)放的軟件體系結(jié)構(gòu)。(4)螺旋模型優(yōu)點(diǎn):●對(duì)可選方案和約束條件的強(qiáng)調(diào)有利于已有軟件的重用,也有助于把軟件質(zhì)量作為軟件開(kāi)發(fā)的一個(gè)重要目標(biāo);●減少了過(guò)多測(cè)試或測(cè)試不足所帶來(lái)的風(fēng)險(xiǎn);●在螺旋模型中維護(hù)只是模型的另一個(gè)周期,在維護(hù)和開(kāi)發(fā)之間并沒(méi)有本質(zhì)區(qū)別。缺點(diǎn):螺旋模型是風(fēng)險(xiǎn)驅(qū)動(dòng)的,因此要求軟件開(kāi)發(fā)人員必須具有豐富的風(fēng)險(xiǎn)評(píng)估經(jīng)驗(yàn)和這方面的專(zhuān)門(mén)知識(shí),否則將出現(xiàn)真正的風(fēng)險(xiǎn):當(dāng)項(xiàng)目實(shí)際上正在走向?yàn)?zāi)難時(shí),開(kāi)發(fā)人員可能還以為一切正常。適用范圍:適用于內(nèi)部開(kāi)發(fā)的大型軟件(開(kāi)發(fā)周期長(zhǎng)、比較容易受到社會(huì)因素影響的軟件項(xiàng)目),軟件開(kāi)發(fā)人員具有豐富的風(fēng)險(xiǎn)評(píng)估知識(shí)和經(jīng)驗(yàn)。(5)噴泉模型優(yōu)點(diǎn):在開(kāi)發(fā)過(guò)程中使用統(tǒng)一的概念和方法,各階段之間沒(méi)有明顯的界限,容易實(shí)現(xiàn)各個(gè)開(kāi)發(fā)過(guò)程的多次反復(fù)迭代,達(dá)到了認(rèn)識(shí)的逐步深化,降低了出錯(cuò)的可能性。缺點(diǎn):由于各個(gè)階段之間的界線(xiàn)不明確,容易造成軟件開(kāi)發(fā)過(guò)程的無(wú)序。適用范圍:適用于面向?qū)ο蟮能浖_(kāi)發(fā)。(6)統(tǒng)一過(guò)程優(yōu)點(diǎn):提高了團(tuán)隊(duì)生產(chǎn)力,在迭代的開(kāi)發(fā)過(guò)程、需求管理、基于組件的體系結(jié)構(gòu)、可視化軟件建模、驗(yàn)證軟件質(zhì)量及控制軟件變更等方面,針對(duì)所有關(guān)鍵的開(kāi)發(fā)活動(dòng)為每個(gè)開(kāi)發(fā)成員提供了必要的準(zhǔn)則、模板和工具指導(dǎo),并確保全體成員共享相同的知識(shí)基礎(chǔ)。它建立了簡(jiǎn)潔和清晰的過(guò)程結(jié)構(gòu),為開(kāi)發(fā)過(guò)程提供了較大的通用性。缺點(diǎn):RUP只是一個(gè)開(kāi)發(fā)過(guò)程,并沒(méi)有涵蓋軟件過(guò)程的全部?jī)?nèi)容,例如它缺少關(guān)于軟件運(yùn)行和支持等方面的內(nèi)容;此外,它沒(méi)有支持多項(xiàng)目的開(kāi)發(fā)結(jié)構(gòu),這在一定程度上降低了在開(kāi)發(fā)組織內(nèi)大范圍實(shí)現(xiàn)重用的可能性。適用范圍:適用于基于構(gòu)件的軟件開(kāi)發(fā)。第2章軟件工程方法與工具2.1軟件工程的三種基本要素是什么,各自的作用是什么?軟件工程的三種基本要素是方法、工具和過(guò)程。(1)軟件工程方法(method)為建造軟件提供技術(shù)上的解決方法(“如何做”)。目前使用得最廣泛的方法是傳統(tǒng)方法(結(jié)構(gòu)化方法)和面向?qū)ο蠓椒ā?2)工具為方法的運(yùn)用提供自動(dòng)的或半自動(dòng)的軟件支撐環(huán)境。(3)過(guò)程是為了獲得高質(zhì)量的軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。2.2簡(jiǎn)述傳統(tǒng)方法和面向?qū)ο蠓椒ǖ奶攸c(diǎn)。(1)傳統(tǒng)方法的特點(diǎn)傳統(tǒng)方法也稱(chēng)為生命周期方法或結(jié)構(gòu)化范型。它采用結(jié)構(gòu)化技術(shù)來(lái)完成軟件開(kāi)發(fā)的各項(xiàng)任務(wù)。這種方法學(xué)把軟件生命周期的全過(guò)程依次劃分為若干個(gè)階段,然后順序地逐步完成每個(gè)階段的任務(wù)。每一個(gè)階段的開(kāi)始和結(jié)束都有嚴(yán)格的標(biāo)準(zhǔn),對(duì)于任何兩個(gè)相鄰的階段而言,前一個(gè)階段的結(jié)束標(biāo)準(zhǔn)就是后一階段的開(kāi)始標(biāo)準(zhǔn)。傳統(tǒng)方法的主要缺點(diǎn)是在適應(yīng)需求變化方面不夠靈活,另外,結(jié)構(gòu)化方法要么面向行為,要么面向數(shù)據(jù),缺乏使兩者有機(jī)結(jié)合的機(jī)制。(2)面向?qū)ο蠓椒ǖ奶攸c(diǎn)面向?qū)ο蠓椒ò褦?shù)據(jù)和行為看成同等重要,是將數(shù)據(jù)和對(duì)數(shù)據(jù)的操作緊密地結(jié)合起來(lái)的方法,這也是面向?qū)ο蠓椒ㄅc傳統(tǒng)方法的重要區(qū)別。面向?qū)ο蠓椒ǖ某霭l(fā)點(diǎn)和基本原則,是盡量模擬人類(lèi)習(xí)慣的思維方式,使開(kāi)發(fā)軟件的方法和過(guò)程盡可能接近人類(lèi)認(rèn)識(shí)問(wèn)題和解決問(wèn)題的方法與過(guò)程,從而使描述問(wèn)題的問(wèn)題空間與其解空間在結(jié)構(gòu)上盡可能一致。對(duì)于大型、復(fù)雜及交互性比較強(qiáng)的系統(tǒng),使用面向?qū)ο蠓椒ǜ袃?yōu)勢(shì)。2.3形式化方法的特點(diǎn)是什么?形式化方法的主要特點(diǎn)是:(1)軟件需求規(guī)格說(shuō)明被細(xì)化為用數(shù)學(xué)記號(hào)表達(dá)的詳細(xì)的形式化規(guī)格說(shuō)明;(2)設(shè)計(jì)、實(shí)現(xiàn)和單元測(cè)試等開(kāi)發(fā)過(guò)程由一個(gè)變換開(kāi)發(fā)過(guò)程代替。通過(guò)一系列變換將形式的規(guī)格說(shuō)明細(xì)化成為程序。2.5安裝RationalRose2000/2002/2003,并練習(xí)基本操作。略。第3章軟件需求獲取與結(jié)構(gòu)化分析方法3.1為什么結(jié)構(gòu)化分析要叫“結(jié)構(gòu)化”?有其他可替代的術(shù)語(yǔ)嗎?“結(jié)構(gòu)化”一詞應(yīng)來(lái)源于“結(jié)構(gòu)化程序設(shè)計(jì)”,先有“結(jié)構(gòu)化程序設(shè)計(jì)”的思想,后有結(jié)構(gòu)化設(shè)計(jì)及結(jié)構(gòu)化分析。有時(shí)稱(chēng)傳統(tǒng)的分析方法,指的就是結(jié)構(gòu)化分析方法。3.2頂層數(shù)據(jù)流圖或稱(chēng)環(huán)境圖的作用是什么?頂層數(shù)據(jù)流圖(或稱(chēng)環(huán)境圖)僅包括一個(gè)數(shù)據(jù)處理過(guò)程,也就是要開(kāi)發(fā)的目標(biāo)系統(tǒng)。其作用如下:(1)確定系統(tǒng)在其環(huán)境中的位置,與系統(tǒng)有聯(lián)系的外部實(shí)體(包括硬件、軟件、組織機(jī)構(gòu)及人)有哪些。(2)通過(guò)確定系統(tǒng)的輸入和輸出與外部實(shí)體的關(guān)系確定系統(tǒng)的邊界,也就是要確定哪些功能或處理屬于系統(tǒng)范圍之內(nèi),哪些屬于系統(tǒng)范圍之外,需要由其他系統(tǒng)處理或人工處理。3.3在對(duì)數(shù)據(jù)流圖進(jìn)行分解時(shí)需要注意哪些問(wèn)題?在對(duì)數(shù)據(jù)流圖進(jìn)行分解時(shí),需要注意以下兩個(gè)問(wèn)題:(1)當(dāng)對(duì)數(shù)據(jù)流圖分層細(xì)化時(shí)必須保持信息連續(xù)性,也就是說(shuō),當(dāng)把一個(gè)處理分解為一系列處理時(shí),分解前和分解后的輸入/輸出數(shù)據(jù)流必須相同。(2)注意分層細(xì)化時(shí)對(duì)編號(hào)的處理方法。3.4銀行存款業(yè)務(wù)如下:客戶(hù)到銀行柜臺(tái)存款時(shí),首先填寫(xiě)存款單(包括帳號(hào)、姓名、存款金額、存款類(lèi)型),如果還沒(méi)有開(kāi)戶(hù),則需要先開(kāi)戶(hù),填寫(xiě)開(kāi)戶(hù)單(包括姓名、身份證號(hào)、地址、電話(huà)、是否留密碼)。填寫(xiě)完存款單或開(kāi)戶(hù)單后,交給營(yíng)業(yè)員,營(yíng)業(yè)員將存款單或開(kāi)戶(hù)單信息輸入計(jì)算機(jī),系統(tǒng)記錄開(kāi)戶(hù)信息或存款單信息,如果是開(kāi)戶(hù)并選擇留密碼,則需要客戶(hù)輸入密碼。最后印出開(kāi)戶(hù)單或存款單給用戶(hù)。請(qǐng)畫(huà)出銀行存款業(yè)務(wù)的分層數(shù)據(jù)流圖(至少畫(huà)出兩層)。(1)識(shí)別外部實(shí)體及輸入輸出數(shù)據(jù)流外部實(shí)體:儲(chǔ)戶(hù)、業(yè)務(wù)員。輸入數(shù)據(jù)流:存款單,開(kāi)戶(hù)單,密碼。可以將存款單和開(kāi)戶(hù)單抽象為事務(wù)。輸出數(shù)據(jù)流:存款單,開(kāi)戶(hù)單。(2)頂層數(shù)據(jù)流圖(3)一層數(shù)據(jù)流圖對(duì)銀行儲(chǔ)蓄系統(tǒng)進(jìn)行分解,從大的方面分解為接收事務(wù)、處理開(kāi)戶(hù)、處理存款三部分,得到一層數(shù)據(jù)流圖。(4)二層數(shù)據(jù)流圖對(duì)“處理存款”及“處理開(kāi)戶(hù)”進(jìn)行進(jìn)一步分解,得到二層數(shù)據(jù)流圖,即處理存款的數(shù)據(jù)流圖和處理開(kāi)戶(hù)的數(shù)據(jù)流圖。處理存款的數(shù)據(jù)流圖處理開(kāi)戶(hù)的數(shù)據(jù)流圖3.5按照以下描述,畫(huà)出ER圖。一本教材由許多章組成,每一章包含許多節(jié)、小結(jié)和習(xí)題組成,章和節(jié)都具有標(biāo)題和序號(hào)屬性。ER圖如下:第4章結(jié)構(gòu)化設(shè)計(jì)方法4.1當(dāng)你“編寫(xiě)”程序時(shí)你設(shè)計(jì)軟件嗎?軟件設(shè)計(jì)和編碼有什么不同嗎?在“編寫(xiě)”程序時(shí)并沒(méi)有設(shè)計(jì)軟件。軟件設(shè)計(jì)包括概要設(shè)計(jì)和詳細(xì)設(shè)計(jì),編碼是將詳細(xì)設(shè)計(jì)中的過(guò)程描述轉(zhuǎn)換成用程序設(shè)計(jì)語(yǔ)言來(lái)描述。4.4是否存在一種情況:復(fù)雜問(wèn)題需要較少的工作去解決?這樣的情況對(duì)模塊化觀點(diǎn)有什么影響?通過(guò)對(duì)復(fù)雜的問(wèn)題進(jìn)行合理分解,分解為若干個(gè)相對(duì)簡(jiǎn)單及獨(dú)立的子問(wèn)題,就可以用較少的工作去解決。這種情況能夠較好地支持模塊化的觀點(diǎn),每個(gè)子問(wèn)題用單獨(dú)的模塊去解決,模塊之間應(yīng)該是高內(nèi)聚、低耦合的,這樣才能減少工作量,否則,雖然每個(gè)模塊的工作簡(jiǎn)單了,但模塊之間的聯(lián)系很復(fù)雜,也增加了問(wèn)題解決的難度和工作量。4.8用面向數(shù)據(jù)流的方法設(shè)計(jì)第3章習(xí)題3.4所描述的銀行存款業(yè)務(wù)的軟件結(jié)構(gòu),并使用改進(jìn)方法對(duì)模塊結(jié)構(gòu)進(jìn)行精化。(1)對(duì)第3章習(xí)題3.4給出的數(shù)據(jù)流圖進(jìn)行精化,確定其邊界,如下圖所示。(2)對(duì)上圖按事務(wù)型數(shù)據(jù)流進(jìn)行處理,完成第一級(jí)分解,得到頂層和一層模塊結(jié)構(gòu)圖。第一級(jí)分解后的結(jié)構(gòu)圖(3)完成第二級(jí)分解。對(duì)上圖所示的“輸入數(shù)據(jù)”、“輸出數(shù)據(jù)”和“調(diào)度”模塊進(jìn)行分解,得到未經(jīng)精化的輸入結(jié)構(gòu)、輸出結(jié)構(gòu)和事務(wù)結(jié)構(gòu)。未經(jīng)精化的輸入結(jié)構(gòu)未經(jīng)精化的輸出結(jié)構(gòu)未經(jīng)精化的事務(wù)結(jié)構(gòu)將上面的三部分合在一起,得到初始的軟件結(jié)構(gòu),如下圖所示。初始軟件結(jié)構(gòu)圖(4)對(duì)軟件結(jié)構(gòu)進(jìn)行精化。1)由于調(diào)度模塊下只有兩種事務(wù),因此,可以將調(diào)度模塊合并到上級(jí)模塊中,如圖所示。將調(diào)度模塊合并到上級(jí)模塊后的軟件結(jié)構(gòu)2)“記錄密碼”模塊的作用范圍不在其控制范圍之內(nèi)(即“輸入密碼”模塊不在“記錄密碼”模塊的控制范圍之內(nèi)),需對(duì)其進(jìn)行調(diào)整,如圖所示。3)提高模塊獨(dú)立性,對(duì)模塊結(jié)構(gòu)進(jìn)行調(diào)整,如下圖所示。調(diào)整后的模塊結(jié)構(gòu)圖4.9將大的軟件劃分成模塊有什么好處?是不是模塊劃分得越小越好?劃分模塊的依據(jù)是什么?將大的軟件劃分成獨(dú)立命名且可獨(dú)立訪(fǎng)問(wèn)的模塊,不同的模塊通常具有不同的功能或職責(zé)。這種方法有利于將復(fù)雜的問(wèn)題簡(jiǎn)單化,是分而治之策略的具體表現(xiàn)。盡管模塊分解可以簡(jiǎn)化要解決的問(wèn)題,但模塊分解并不是越小越好。當(dāng)模塊數(shù)目增加時(shí),每個(gè)模塊的規(guī)模將減小,開(kāi)發(fā)單個(gè)模塊的成本確實(shí)減少了;但是,隨著模塊數(shù)目增加,模塊之間關(guān)系的復(fù)雜程度也會(huì)增加,設(shè)計(jì)模塊間接口所需要的工作量也將增加。劃分模塊的依據(jù)是,模塊只具有單一的功能且與其他模塊沒(méi)有太多的聯(lián)系。4.11結(jié)構(gòu)化程序設(shè)計(jì)禁止使用goto語(yǔ)句嗎?如果程序中使用了goto語(yǔ)句,是否就可以斷定它是非結(jié)構(gòu)化的?結(jié)構(gòu)化程序設(shè)計(jì)并不禁止使用goto語(yǔ)句。如果程序中使用了goto語(yǔ)句,并不能斷定它是非結(jié)構(gòu)化的。4.12對(duì)于給定的算法,如何判斷它是否是結(jié)構(gòu)化的?對(duì)于給定的算法,如果符合以下三條原則,就可以判斷它是結(jié)構(gòu)化的。(1)使用語(yǔ)言中的順序、選擇、重復(fù)等有限的基本控制結(jié)構(gòu)表示程序邏輯。
(2)選用的控制結(jié)構(gòu)只準(zhǔn)許有一個(gè)入口和一個(gè)出口。
(3)程序語(yǔ)句組成容易識(shí)別的塊(Block),每塊只有一個(gè)入口和一個(gè)出口。4.13對(duì)于圖4-49所示的流程圖,試分別用N-S圖和PAD表示之。圖4-49流程圖對(duì)應(yīng)的N-S圖如下:對(duì)應(yīng)的PAD如下:4.14圖4-50所示的流程圖完成的功能是使用二分查找方法在table數(shù)組中找出值為item的數(shù)是否存在。(1)判斷此算法是否是結(jié)構(gòu)化的,說(shuō)明理由。(2)若算法是非結(jié)構(gòu)化的,設(shè)計(jì)一個(gè)等價(jià)的結(jié)構(gòu)化算法,并用N-S圖表示。圖4-50二分查找算法的流程圖(1)不是結(jié)構(gòu)化的,最上面的循環(huán)有兩個(gè)出口,最下面的分支有三個(gè)入口。(2)等價(jià)的結(jié)構(gòu)化算法如下:或者或者4.15使用自頂向下、逐步細(xì)化方法設(shè)計(jì)算法,完成下列任務(wù):產(chǎn)生一個(gè)1010的二維隨機(jī)整數(shù)方陣,先求出每一行的最大值和每一列的最小值;然后求10個(gè)最大值中的最小者,10個(gè)最小值中的最大者;最后求這兩個(gè)數(shù)之差的平方。(1)首先寫(xiě)出下面的程序框架:main(){
定義1010的二維整數(shù)數(shù)組A,長(zhǎng)度為10的一維數(shù)組B,C;建立1010的二維隨機(jī)整數(shù)數(shù)組A;---------------------1
求A中每一行的最大值數(shù)組B;---------------------2求A中每一列的最小值數(shù)組C;---------------------3求數(shù)組B中的最小值minOfB;---------------------4求數(shù)組C中的最大值maxOfC;---------------------5(minOfB-maxOfC)^2result;}
(2)對(duì)后面加標(biāo)記的部分進(jìn)行細(xì)化main(){
定義1010的二維整數(shù)數(shù)組A,長(zhǎng)度為10的一維數(shù)組B,C;/*建立1010的二維隨機(jī)整數(shù)數(shù)組A*/--------------------1for(i=0;i<=9;i++)for(j=0;j<=9;j++)產(chǎn)生隨機(jī)整數(shù)A[i,j];
/*求A中每一行的最大值數(shù)組B*/---------------------2for(i=0;i<=9;i++){求數(shù)組A第i行的最大值B[i];--------------------------------------2.1}/*求A中每一列的最小值數(shù)組C*/---------------------3for(j=0;j<=9;j++){求數(shù)組A第j列的最小值C[j];--------------------------------------3.1}/*求數(shù)組B中的最小值minOfB*/---------------------4minOfB=B[0];for(i=1;i<=9;i++){if(minOfB<B[i]){minOfB=B[i];}}/*求數(shù)組C中的最大值maxOfC*/---------------------5maxOfC=C[0];for(i=1;i<=9;i++){if(maxOfC>C[i]){maxOfC=C[i];}}(minOfB-maxOfC)^2result;}
(3)下一步可以繼續(xù)對(duì)2.1和3.1進(jìn)行細(xì)化。具體略。4.16設(shè)計(jì)算法完成下列任務(wù):輸入一段英文后,無(wú)論輸入的文字都是大寫(xiě),還是小寫(xiě),或大小寫(xiě)任意混合,都能將其整理成除每個(gè)句子開(kāi)頭字母是大寫(xiě)外,其他都是小寫(xiě)的文字。假設(shè)在輸入的文字中,兩個(gè)單詞間只允許是空格、,、.、?、!,則在輸出的文字中,大寫(xiě)的情況有以下幾種:(1)整段文字的第一個(gè)字母是大寫(xiě);(2)“.”后的第一個(gè)字母是大寫(xiě);(3)“?”后的第一個(gè)字母是大寫(xiě);(4)“!”后的第一個(gè)字母是大寫(xiě);設(shè)變量a存儲(chǔ)輸入的字符串,變量b存儲(chǔ)結(jié)果字符串,變量c存儲(chǔ)當(dāng)前處理的字符,變量e存儲(chǔ)c之前的字符(當(dāng)c為第一個(gè)字符時(shí)除外)。算法如下:第5章編碼5.1有人說(shuō)程序編好后能上機(jī)運(yùn)行就可以了,為什么還要講究風(fēng)格和可讀性呢?你覺(jué)得對(duì)嗎?為什么?對(duì)于學(xué)生的練習(xí)題和作業(yè)題,程序編好后能上機(jī)運(yùn)行,一般認(rèn)為任務(wù)就完成了。但對(duì)于實(shí)際開(kāi)發(fā)的項(xiàng)目來(lái)說(shuō),任務(wù)并沒(méi)有結(jié)束。編碼人員編寫(xiě)完程序后,要對(duì)自己的程序進(jìn)行單元測(cè)試,測(cè)試人員要進(jìn)行集成測(cè)試和系統(tǒng)測(cè)試,提交用戶(hù)使用后,還需要對(duì)軟件進(jìn)行持續(xù)的維護(hù)修改工作。在軟件開(kāi)發(fā)和維護(hù)過(guò)程中,都需要閱讀程序。道理很簡(jiǎn)單,如果需要對(duì)某段程序進(jìn)行修改,首先要讀懂,閱讀程序是軟件開(kāi)發(fā)和維護(hù)過(guò)程中的一個(gè)重要組成部分,而且讀程序的時(shí)間比寫(xiě)程序的時(shí)間還要多。所以,程序的風(fēng)格和可讀性很重要,具有良好的程序風(fēng)格和可讀性的程序,有助于對(duì)程序的正確理解,可以大大減少閱讀理解程序的時(shí)間,從而提高維護(hù)工作的效率。5.2一般情況下,程序的效率和清晰性相比哪一個(gè)更重要?在計(jì)算機(jī)發(fā)展的早期,由于CPU效率低,內(nèi)存小,程序在運(yùn)行時(shí)容易出現(xiàn)運(yùn)行時(shí)間太長(zhǎng)或內(nèi)存溢出問(wèn)題。因此,人們?cè)诰帉?xiě)程序時(shí),很注重程序的時(shí)間效率和空間效率,而不太注重程序的清晰性。隨著計(jì)算機(jī)硬件性能的飛速發(fā)展以及軟件規(guī)模和復(fù)雜性的急劇增加,這種情況已經(jīng)發(fā)生了根本的轉(zhuǎn)變,程序的清晰性越來(lái)越受到重視,程序的清晰性不好會(huì)給測(cè)試、維護(hù)修改帶來(lái)困難,這對(duì)于規(guī)模龐大和復(fù)雜的軟件尤其明顯。軟件運(yùn)行的效率主要取決于軟件的體系結(jié)構(gòu)及算法,編碼階段雖然也有機(jī)會(huì)提高效率,但效果并不明顯。對(duì)于效率沒(méi)有特殊嚴(yán)格要求的系統(tǒng)來(lái)說(shuō),要將程序的清晰性放在第一位,在不影響清晰性的情況下,去改進(jìn)效率。5.6在一行內(nèi)只寫(xiě)一條語(yǔ)句,并且采取適當(dāng)?shù)囊菩懈袷剑钩绦虻倪壿嫼凸δ茏兊酶用鞔_。許多程序設(shè)計(jì)語(yǔ)言允許在一行內(nèi)寫(xiě)多個(gè)語(yǔ)句。但這種方式會(huì)使程序可讀性變差。下面是一段排序程序,請(qǐng)對(duì)其編碼風(fēng)格進(jìn)行改進(jìn),以增加其可讀性。for(i=1;i<=n-1;i++)for(j=1;j<=n-i;j++)if(a[j]>a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}改進(jìn)后的代碼如下:for(i=1;i<=n-1;i++)for(j=1;j<=n-i;j++)if(a[j]>a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}5.7請(qǐng)對(duì)下面代碼的布局進(jìn)行改進(jìn),使其符合規(guī)范其更容易理解。for(i=1;i<=n-1;i++){t=i;for(j=i+1;j<=n;j++)if(a[j]<a[t])t=j;if(t!=i){temp=a[t];a[t]=a[i];a[i]=temp}}改進(jìn)后的代碼如下:for(i=1;i<=n-1;i++){t=i;for(j=i+1;j<=n;j++){if(a[j]<a[t])t=j;}if(t!=i){temp=a[t];a[t]=a[i];a[i]=temp}}5.8使用你熟悉的語(yǔ)言編寫(xiě)出習(xí)題4.15的程序,注意編碼風(fēng)格。下面為使用C語(yǔ)言編寫(xiě)的習(xí)題4.15的程序:#include"math.h"#include"stdio.h"#include"stdlib.h"#include"time.h"/*求1010的二維數(shù)組a的每一行的最大值存入一維數(shù)組b,每一列的最小值存入一維數(shù)組c,minOfB存儲(chǔ)數(shù)組b的最小值,maxOfC存儲(chǔ)數(shù)組c的最大值,result存儲(chǔ)minOfB與maxOfC之差的平方。*/intmain(){inta[10][10],b[10],c[10];inti,j,minOfB,maxOfC,result;/*產(chǎn)生隨機(jī)數(shù)種子*/srand((unsignedint)time(NULL));/*建立1010的二維隨機(jī)整數(shù)數(shù)組a*/for(i=0;i<=9;i++)for(j=0;j<=9;j++)a[i][j]=rand()%100+1;//產(chǎn)生1-100之間的隨機(jī)數(shù)/*求a中每一行的最大值數(shù)組b*/for(i=0;i<=9;i++){/*求數(shù)組a第i行的最大值b[i]*/b[i]=a[i][0];for(j=1;j<=9;j++)if(a[i][j]>b[i])b[i]=a[i][j];}/*求a中每一列的最小值數(shù)組c*/for(j=0;j<=9;j++){/*求數(shù)組a第j列的最小值c[j];*/c[j]=a[0][j];for(i=1;i<=9;i++)if(a[i][j]<c[j])c[j]=a[i][j];}/*求數(shù)組b中的最小值minOfB*/minOfB=b[0];for(i=1;i<=9;i++)if(minOfB>b[i])minOfB=b[i];/*求數(shù)組c中的最大值maxOfC*/maxOfC=c[0];for(i=1;i<=9;i++)if(maxOfC<c[i])maxOfC=c[i];result=pow(minOfB-maxOfC,2);printf("結(jié)果是:%d",result);return(result);}5.9使用你熟悉的語(yǔ)言編寫(xiě)出習(xí)題4.16的程序,注意編碼風(fēng)格。下面為使用C語(yǔ)言編寫(xiě)的習(xí)題4.16的程序:#include"stdio.h"#include"string.h"#include"ctype.h"/*將一段英文輸入變量a(假設(shè)兩個(gè)單詞間只允許是空格、,、.、?、!),將其整理成每個(gè)句子開(kāi)頭字母是大寫(xiě)、其他都是小寫(xiě)的字符串存儲(chǔ)在變量b中。變量c存儲(chǔ)當(dāng)前處理的字符,變量e存儲(chǔ)c之前字符。*/voidmain(){chara[1000],b[1000],c,e;inti,n;gets(a);n=strlen(a);//將整段的第一個(gè)字母轉(zhuǎn)成大寫(xiě)。if(isalpha(a[0])){a[0]=toupper(a[0]);b[0]=a[0];}//處理第一個(gè)字符之后的每個(gè)字符,將.?!后面的字母改為大寫(xiě),其他改為小寫(xiě)。for(i=1;i<n;i++){c=a[i];e=a[i-1];if(isalpha(c)){if(strchr(".?!",e))c=toupper(c);elsec=tolower(c);}b[i]=c;}b[n]='\0';puts(b);}第6章軟件測(cè)試方法6.5假設(shè)汽車(chē)的車(chē)牌號(hào)可由車(chē)主人在規(guī)定范圍內(nèi)自選,若其規(guī)定為:(1)車(chē)牌上應(yīng)有7個(gè)字符;(2)為首的字符限定為漢字“京”;(3)第2個(gè)字符可任選一字母(A~Z);(4)第3~7個(gè)字符可選任意數(shù)字。請(qǐng)為相關(guān)的處理程序采用等價(jià)類(lèi)劃分方法設(shè)計(jì)等價(jià)類(lèi)表及相應(yīng)的測(cè)試用例。等價(jià)類(lèi)表輸入數(shù)據(jù)有效等價(jià)類(lèi)無(wú)效等價(jià)類(lèi)字符個(gè)數(shù)7個(gè)(1)0~6個(gè)(2),>7個(gè)(3)首字符“京”(4)非“京”(5)第2個(gè)字符字母(6)非字母(7)第3~7個(gè)字符數(shù)字(8)非數(shù)字(9)測(cè)試用例如下:1)京H87774}(1),(4),(6),(8)2)京H8777}(2)3)京H877745}(3)4)冀H87774}(5)5)京987774}(7)6)京BA7774}(9)6.6比較測(cè)試與測(cè)試,說(shuō)明其異同。測(cè)試與測(cè)試都是集成測(cè)試之后所進(jìn)行的測(cè)試,都屬于系統(tǒng)測(cè)試。所不同的是,測(cè)試是在開(kāi)發(fā)環(huán)境中所做的測(cè)試,主要由開(kāi)發(fā)方人員進(jìn)行。而測(cè)試則是在用戶(hù)實(shí)際工作環(huán)境中所做的測(cè)試,不受開(kāi)發(fā)人員的干預(yù)。補(bǔ)充題:設(shè)計(jì)下列偽碼程序的語(yǔ)句覆蓋和路徑覆蓋測(cè)試用例:STARTINPUT(A,B,C)IFA>5THENX=10ELSEX=1ENDIFIFB>10THENY=20ELSEY=2ENDIFIFC>15THENZ=30ELSEZ=3ENDIFPRINT(X,Y,Z)STOP設(shè)輸入數(shù)據(jù)為<A,B,C>,輸出數(shù)據(jù)為<X,Y,Z>。語(yǔ)句覆蓋測(cè)試用例:【<6,12,20>,<10,20,30>】,【<4,8,10>,<1,2,3>】路徑覆蓋測(cè)試用例:【<6,12,20>,<10,20,30>】【<6,12,10>,<10,20,3>】【<6,8,20>,<10,2,30>】【<6,8,10>,<10,2,3>】【<4,12,20>,<1,20,30>】【<4,12,10>,<1,20,3>】【<4,8,20>,<1,2,30>】【<4,8,10>,<1,2,3>】第7章統(tǒng)一建模語(yǔ)言UML概述7.2UML中有哪些關(guān)系?解釋類(lèi)圖中聚合和關(guān)聯(lián)的相同點(diǎn)和不同點(diǎn)。在UML中,常見(jiàn)的關(guān)系有泛化、聚合、關(guān)聯(lián)、依賴(lài)和實(shí)現(xiàn)。在類(lèi)圖中,關(guān)聯(lián)是一種結(jié)構(gòu)關(guān)系,它描述了兩個(gè)或多個(gè)類(lèi)的實(shí)例之間的連接關(guān)系。聚合描述了整體和部分之間的結(jié)構(gòu)關(guān)系。按照關(guān)聯(lián)關(guān)系的定義,聚合屬于一種特殊的關(guān)聯(lián)關(guān)系,只不過(guò)這種關(guān)聯(lián)關(guān)系具有明確的整體-部分含義而已。從耦合度的角度看,聚合關(guān)系要強(qiáng)于關(guān)聯(lián)關(guān)系。7.4討論順序圖與協(xié)作圖的關(guān)系,何時(shí)用順序圖建模優(yōu)于協(xié)作圖建模,以及相反的情況。順序圖和協(xié)作圖都能描述對(duì)象間的交互關(guān)系,但兩者的側(cè)重點(diǎn)不同,順序圖著重表現(xiàn)交互的時(shí)間順序,協(xié)作圖則著重表現(xiàn)交互對(duì)象的靜態(tài)鏈接關(guān)系。但即使他們各有側(cè)重,但從語(yǔ)義上來(lái)說(shuō)是等價(jià)的,可從一種圖自動(dòng)轉(zhuǎn)換為另一種圖。一般情況下,當(dāng)需要強(qiáng)調(diào)消息傳遞的時(shí)間順序時(shí),采用順序圖;當(dāng)表示涉及很多對(duì)象的模型時(shí),協(xié)作圖比順序圖更形象。順序圖在分析中更常用,而協(xié)作圖則在設(shè)計(jì)中更常用。7.5考慮銀行系統(tǒng)中的帳戶(hù)會(huì)有哪幾種狀態(tài),畫(huà)出帳戶(hù)對(duì)象的狀態(tài)圖。賬戶(hù)的狀態(tài)包括開(kāi)戶(hù)、正常使用、透支、休眠、凍結(jié)和注銷(xiāo)。賬戶(hù)對(duì)象的狀態(tài)圖如下圖所示。第8章面向?qū)ο蠓治?.1比較面向?qū)ο蟮姆治龇椒ê兔嫦驍?shù)據(jù)流的分析方法,闡述它們各自的特點(diǎn)。面向?qū)ο蟮姆治龇椒ㄊ褂糜美P蛠?lái)表示用戶(hù)的功能需求,用例模型相當(dāng)于功能模型,在對(duì)用例模型進(jìn)行細(xì)化的過(guò)程中,也伴隨著對(duì)功能的分解。但面向?qū)ο蟮姆治龇椒ú⒉皇且怨δ芊纸鉃楹诵模讷@取并分析用戶(hù)的功能需求之后,重點(diǎn)以類(lèi)和對(duì)象為核心,建立對(duì)象模型,交互模型也是圍繞對(duì)象模型進(jìn)行的。面向數(shù)據(jù)流的分析方法是從建立頂層數(shù)據(jù)流圖(環(huán)境圖)開(kāi)始,之后逐層對(duì)加工進(jìn)行分解。面向數(shù)據(jù)流的分析方法是以功能分解為核心的。8.2面向?qū)ο蠓治鲂枰⒌娜齻€(gè)模型是什么?面向?qū)ο蠓治鲂枰⒌?個(gè)模型是:由用例和場(chǎng)景表示的功能模型(用例模型);用類(lèi)和對(duì)象表示的靜態(tài)模型(對(duì)象模型);由狀態(tài)圖和順序圖表示的動(dòng)態(tài)模型(交互模型)。8.3用例建模的主要步驟是什么?用例建模的主要步驟如下:(1)確定業(yè)務(wù)參與者──可以是與系統(tǒng)有交互的外部硬件、軟件、組織、人等。(2)確定業(yè)務(wù)需求用例──參與者需要系統(tǒng)提供的完整功能。(3)創(chuàng)建用例圖──標(biāo)識(shí)參與者與用例之間、用例與用例之間的關(guān)系。8.5用例與用例之間的關(guān)系主要有哪兩種?其區(qū)別是什么?用例之間的關(guān)系主要有《包含》(也稱(chēng)《使用》)和《擴(kuò)展》。《包含》表示一個(gè)用例所執(zhí)行的功能中總是包括被包含用例的功能;《擴(kuò)展》是指一個(gè)用例的執(zhí)行可能需要由其他用例的功能來(lái)擴(kuò)展,《擴(kuò)展》聯(lián)系可用于對(duì)期望或可選的行為建模,但其主要用途是使基本用例的功能不依賴(lài)于擴(kuò)展用例。8.6對(duì)于復(fù)雜的系統(tǒng),其對(duì)象模型應(yīng)該由哪五個(gè)層次組成?對(duì)于復(fù)雜的系統(tǒng),對(duì)象模型應(yīng)該由下述5個(gè)層次組成:主題層(也稱(chēng)為范疇層)、類(lèi)-對(duì)象層、結(jié)構(gòu)層、屬性層和服務(wù)層,如圖所示。對(duì)象模型的五個(gè)層次8.7解釋關(guān)聯(lián)類(lèi)的作用,在什么時(shí)候需要使用關(guān)聯(lián)類(lèi)?關(guān)聯(lián)類(lèi)的作用是描述關(guān)聯(lián)的屬性。在關(guān)聯(lián)關(guān)系比較簡(jiǎn)單的情況下,關(guān)聯(lián)關(guān)系的語(yǔ)義用關(guān)聯(lián)關(guān)系的名字來(lái)概括。但在某些情況下,需要對(duì)關(guān)聯(lián)關(guān)系的語(yǔ)義做詳細(xì)的定義、存儲(chǔ)和訪(fǎng)問(wèn),為此可以建立關(guān)聯(lián)類(lèi)(associationclass)。8.8按照以下描述,畫(huà)出UML類(lèi)圖:一本教材由許多章組成,每一章包含許多節(jié)、小結(jié)和習(xí)題組成,章和節(jié)都具有標(biāo)題和序號(hào)屬性。UML類(lèi)圖如下:8.9考慮一個(gè)計(jì)算機(jī)超市,出售硬件、外設(shè)和軟件。分析誰(shuí)是這個(gè)系統(tǒng)的參與者?這個(gè)系統(tǒng)有哪些主要用例?畫(huà)出用例圖。系統(tǒng)的參與者:系統(tǒng)管理員(administrator),售貨員(salesperson),客戶(hù)(customer)。主要用例編號(hào)參與者用例說(shuō)明1administratorMaintainproductinformation(維護(hù)商品信息)增加、修改、刪除商品信息(商品編號(hào)、名稱(chēng)、型號(hào)、價(jià)格)2Maintainmembershipinformation(維護(hù)會(huì)員信息)增加、修改、刪除會(huì)員信息(會(huì)員編號(hào)、姓名、身份證號(hào)、辦卡日期)3salespersonScanmembershipcard(掃描會(huì)員卡)在商品出售之前,系統(tǒng)通過(guò)掃描儀刷卡(會(huì)員卡)來(lái)確認(rèn)顧客的會(huì)員身份4Scanproductcode(掃描商品的條形碼)通過(guò)掃描商品的條形碼,自動(dòng)識(shí)別商品的名稱(chēng)和價(jià)格5Inputamountofproduct(輸入商品數(shù)量)對(duì)于已經(jīng)掃描的條形碼,手工輸入購(gòu)買(mǎi)的此件商品的數(shù)量6salesperson,customerAcceptpayment(接收現(xiàn)金付款)Chargepaymenttocard(使用銀行卡付款)7salespersonPrintreceipt(打印收據(jù))用例圖如下:第10章面向?qū)ο笤O(shè)計(jì)10.1軟件模塊之間的依賴(lài)性可以從哪些角度和抽象層次進(jìn)行分析?在面向?qū)ο筌浖?,常?jiàn)的軟件模塊有類(lèi)、接口、包、構(gòu)件。因此,分析軟件模塊之間的依賴(lài)性就可以從類(lèi)、接口、包和構(gòu)件的角度和層次進(jìn)行分析。10.2消除包之間循環(huán)依賴(lài)性的方法是什么?本質(zhì)上,兩個(gè)包之間的依賴(lài)性來(lái)自于兩個(gè)包中類(lèi)之間的依賴(lài)性。類(lèi)之間的循環(huán)依賴(lài)性是個(gè)特別棘手的問(wèn)題,好在大多數(shù)情況下可以通過(guò)重新設(shè)計(jì)避免循環(huán)依賴(lài)性。具體方法是增加新包。舉例說(shuō)明如下:在下圖中,包A依賴(lài)于包B,反過(guò)來(lái)包B又依賴(lài)包A,構(gòu)成了循環(huán)依賴(lài)。具體解決辦法是:將包B依賴(lài)的包A中的元素從包A中分離出來(lái),組成包C,使得包B不再依賴(lài)包A,而是依賴(lài)包C。10.3請(qǐng)給出構(gòu)件的一般性定義,然后給出傳統(tǒng)的軟件工程環(huán)境及面向?qū)ο蟮能浖こ汰h(huán)境中構(gòu)件的定義,最后選擇你熟悉的編程語(yǔ)言說(shuō)明怎樣定義一個(gè)構(gòu)件。軟件構(gòu)件是一種組裝單元,它具有規(guī)范的接口規(guī)格說(shuō)明和顯式的語(yǔ)境依賴(lài)。軟件構(gòu)件可以被獨(dú)立部署,并由第三方任意組裝。OMGUML規(guī)范中將構(gòu)件定義為“系統(tǒng)中某一定型化的、可配置的和可替換的部件,該部件封裝了實(shí)現(xiàn)并暴露一系列接口”。在傳統(tǒng)的軟件工程環(huán)境中,一個(gè)構(gòu)件就是程序的一個(gè)功能要素,程序由處理邏輯和實(shí)現(xiàn)處理邏輯所需的內(nèi)部數(shù)據(jù)結(jié)構(gòu)以及能夠保證構(gòu)件被調(diào)用和實(shí)現(xiàn)數(shù)據(jù)傳遞的接口構(gòu)成。傳統(tǒng)的構(gòu)件也稱(chēng)為模塊,是軟件體系結(jié)構(gòu)的一部分。在面向?qū)ο蟮能浖こ汰h(huán)境中,面向?qū)ο蠹夹g(shù)已達(dá)到了類(lèi)級(jí)復(fù)用,而構(gòu)件級(jí)復(fù)用則是比類(lèi)級(jí)復(fù)用更高一級(jí)的復(fù)用,它是對(duì)一組類(lèi)的組合進(jìn)行封裝(當(dāng)然,在某些情況下,一個(gè)構(gòu)件可能只包含一個(gè)單獨(dú)的類(lèi)),并代表完成一個(gè)或多個(gè)功能的特定服務(wù),也為用戶(hù)提供了多個(gè)接口。一個(gè)構(gòu)件可以是一個(gè)編譯的類(lèi),可以是一組編譯的類(lèi),也可以是其他獨(dú)立的部署單元,如一個(gè)文本文件、一個(gè)圖片、一個(gè)數(shù)據(jù)文件、一個(gè)腳本等。選擇你熟悉的編程語(yǔ)言說(shuō)明怎樣定義一個(gè)構(gòu)件。(略)10.4典型的面向?qū)ο笤O(shè)計(jì)模型在邏輯上由哪幾部分組成?對(duì)每一部分進(jìn)行設(shè)計(jì)時(shí)所包含的主要內(nèi)容是什么?典型的面向?qū)ο笤O(shè)計(jì)模型在邏輯上將系統(tǒng)劃分為4個(gè)部分,分別是問(wèn)題域部分、人機(jī)交互部分、任務(wù)管理部分及數(shù)據(jù)管理部分。1)問(wèn)題域部分的設(shè)計(jì)在面向?qū)ο笤O(shè)計(jì)過(guò)程中,可能要對(duì)面向?qū)ο蠓治鏊贸龅膯?wèn)題域模型進(jìn)行補(bǔ)充或調(diào)整。例如,調(diào)整需求、復(fù)用已有的類(lèi)、把問(wèn)題域類(lèi)組合在一起、增添泛化類(lèi)以建立類(lèi)間的協(xié)議、調(diào)整繼承的支持級(jí)別、改進(jìn)性能等。2)人機(jī)交互部分的設(shè)計(jì)人機(jī)交互界面的設(shè)計(jì)質(zhì)量直接影響到用戶(hù)對(duì)軟件的使用。在設(shè)計(jì)階段,必須根據(jù)需求把交互細(xì)節(jié)加入到用戶(hù)界面設(shè)計(jì)中,包括人機(jī)交互所必需的實(shí)際顯示和輸入。3)任務(wù)管理部分的設(shè)計(jì)任務(wù)管理主要包括任務(wù)的選擇和調(diào)整。常見(jiàn)的任務(wù)有事件驅(qū)動(dòng)型任務(wù)、時(shí)鐘驅(qū)動(dòng)型任務(wù)、優(yōu)先任務(wù)、關(guān)鍵任務(wù)和協(xié)調(diào)任務(wù)等。設(shè)計(jì)任務(wù)管理子系統(tǒng)時(shí),需要確定各類(lèi)任務(wù),并將任務(wù)分配給適當(dāng)?shù)挠布蜍浖?zhí)行。4)數(shù)據(jù)管理的設(shè)計(jì)在采用面向?qū)ο蠓椒ㄟM(jìn)行軟件開(kāi)發(fā)時(shí),數(shù)據(jù)的存儲(chǔ)還是普遍使用關(guān)系數(shù)據(jù)庫(kù)。在面向?qū)ο笤O(shè)計(jì)中,可以將UML類(lèi)圖看作是數(shù)據(jù)庫(kù)的概念模型,一個(gè)類(lèi)可以映射為一個(gè)表或多個(gè)表,此外,還要考慮類(lèi)之間的關(guān)聯(lián)關(guān)系、繼承關(guān)系的映射。10.5用面向?qū)ο蠓椒ㄔO(shè)計(jì)網(wǎng)上購(gòu)書(shū)系統(tǒng)的軟件結(jié)構(gòu),網(wǎng)上購(gòu)書(shū)系統(tǒng)的業(yè)務(wù)如下:某書(shū)店為方便客戶(hù)通過(guò)Internet購(gòu)買(mǎi)相關(guān)圖書(shū),開(kāi)發(fā)一個(gè)“網(wǎng)上購(gòu)書(shū)系統(tǒng)”,客戶(hù)可以通過(guò)Web頁(yè)面注冊(cè)并登錄“網(wǎng)上購(gòu)書(shū)系統(tǒng)”,通過(guò)Web頁(yè)面查看、選擇圖書(shū),系統(tǒng)根據(jù)用戶(hù)選擇的圖書(shū)單價(jià)、數(shù)量,系統(tǒng)自動(dòng)生成訂單,并計(jì)算總價(jià)格??蛻?hù)在提交訂單之前,必須填寫(xiě)關(guān)于寄送地址和發(fā)票及付款方式等細(xì)節(jié),一旦訂單被提交,系統(tǒng)顯示確認(rèn)信息,并附上訂單的詳細(xì)信息??蛻?hù)可以在線(xiàn)查詢(xún)訂單的狀態(tài)。系統(tǒng)管理人員查看客戶(hù)的訂單,驗(yàn)證客戶(hù)的信用和付款方式,向倉(cāng)庫(kù)請(qǐng)求所購(gòu)圖書(shū),打印發(fā)票并發(fā)貨。本系統(tǒng)從邏輯結(jié)構(gòu)上分為三層,Web頁(yè)面層,業(yè)務(wù)邏輯層和數(shù)據(jù)庫(kù)層。Web頁(yè)面層負(fù)責(zé)接收用戶(hù)的請(qǐng)求,業(yè)務(wù)邏輯層在獲知用戶(hù)請(qǐng)求后,執(zhí)行相應(yīng)的業(yè)務(wù)邏輯,向數(shù)據(jù)庫(kù)層發(fā)出數(shù)據(jù)請(qǐng)求,獲得所需要的數(shù)據(jù)后,通知Web頁(yè)面層將數(shù)據(jù)呈現(xiàn)給用戶(hù)。從業(yè)務(wù)的角度,又可以將系統(tǒng)劃分為訂購(gòu)管理、客戶(hù)信息管理和系統(tǒng)管理三個(gè)子系統(tǒng)(包)。系統(tǒng)的軟件結(jié)構(gòu)如圖所示。10.6對(duì)10.5中的網(wǎng)上購(gòu)書(shū)系統(tǒng)設(shè)計(jì)其問(wèn)題域的類(lèi)圖。問(wèn)題域類(lèi)包括客戶(hù)、信用信息、訂單、圖書(shū)、發(fā)票及發(fā)貨單。類(lèi)圖如下所示:
數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論第五版課后習(xí)題答案第1章緒論1.試述數(shù)據(jù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)系統(tǒng)、數(shù)據(jù)庫(kù)管理系統(tǒng)的概念。答:(l)數(shù)據(jù)(Data):描述事物的符號(hào)記錄稱(chēng)為數(shù)據(jù)。數(shù)據(jù)的種類(lèi)有數(shù)字、文字、圖形、圖像、聲音、正文等。數(shù)據(jù)與其語(yǔ)義是不可分的。解析在現(xiàn)代計(jì)算機(jī)系統(tǒng)中數(shù)據(jù)的概念是廣義的。早期的計(jì)算機(jī)系統(tǒng)主要用于科學(xué)計(jì)算,處理的數(shù)據(jù)是整數(shù)、實(shí)數(shù)、浮點(diǎn)數(shù)等傳統(tǒng)數(shù)學(xué)中的數(shù)據(jù)?,F(xiàn)代計(jì)算機(jī)能存儲(chǔ)和處理的對(duì)象十分廣泛,表示這些對(duì)象的數(shù)據(jù)也越來(lái)越復(fù)雜。數(shù)據(jù)與其語(yǔ)義是不可分的。500這個(gè)數(shù)字可以表示一件物品的價(jià)格是500元,也可以表示一個(gè)學(xué)術(shù)會(huì)議參加的人數(shù)有500人,還可以表示一袋奶粉重500克。(2)數(shù)據(jù)庫(kù)(DataBase,簡(jiǎn)稱(chēng)DB):數(shù)據(jù)庫(kù)是長(zhǎng)期儲(chǔ)存在計(jì)算機(jī)內(nèi)的、有組織的、可共享的數(shù)據(jù)集合。數(shù)據(jù)庫(kù)中的數(shù)據(jù)按一定的數(shù)據(jù)模型組織、描述和儲(chǔ)存,具有較小的冗余度、較高的數(shù)據(jù)獨(dú)立性和易擴(kuò)展性,并可為各種用戶(hù)共享。(3)數(shù)據(jù)庫(kù)系統(tǒng)(DataBas。Sytem,簡(jiǎn)稱(chēng)DBS):數(shù)據(jù)庫(kù)系統(tǒng)是指在計(jì)算機(jī)系統(tǒng)中引入數(shù)據(jù)庫(kù)后的系統(tǒng)構(gòu)成,一般由數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系統(tǒng)(及其開(kāi)發(fā)工具)、應(yīng)用系統(tǒng)、數(shù)據(jù)庫(kù)管理員構(gòu)成。解析數(shù)據(jù)庫(kù)系統(tǒng)和數(shù)據(jù)庫(kù)是兩個(gè)概念。數(shù)據(jù)庫(kù)系統(tǒng)是一個(gè)人一機(jī)系統(tǒng),數(shù)據(jù)庫(kù)是數(shù)據(jù)庫(kù)系統(tǒng)的一個(gè)組成部分。但是在日常工作中人們常常把數(shù)據(jù)庫(kù)系統(tǒng)簡(jiǎn)稱(chēng)為數(shù)據(jù)庫(kù)。希望讀者能夠從人們講話(huà)或文章的上下文中區(qū)分“數(shù)據(jù)庫(kù)系統(tǒng)”和“數(shù)據(jù)庫(kù)”,不要引起混淆。(4)數(shù)據(jù)庫(kù)管理系統(tǒng)(DataBaseManagementsytem,簡(jiǎn)稱(chēng)DBMs):數(shù)據(jù)庫(kù)管理系統(tǒng)是位于用戶(hù)與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,用于科學(xué)地組織和存儲(chǔ)數(shù)據(jù)、高效地獲取和維護(hù)數(shù)據(jù)。DBMS的主要功能包括數(shù)據(jù)定義功能、數(shù)據(jù)操縱功能、數(shù)據(jù)庫(kù)的運(yùn)行管理功能、數(shù)據(jù)庫(kù)的建立和維護(hù)功能。解析DBMS是一個(gè)大型的復(fù)雜的軟件系統(tǒng),是計(jì)算機(jī)中的基礎(chǔ)軟件。目前,專(zhuān)門(mén)研制DBMS的廠(chǎng)商及其研制的DBMS產(chǎn)品很多。著名的有美國(guó)IBM公司的DBZ關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)和IMS層次數(shù)據(jù)庫(kù)管理系統(tǒng)、美國(guó)Oracle公司的orade關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)、s油ase公司的s油ase關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)、美國(guó)微軟公司的SQLServe,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)等。2.使用數(shù)據(jù)庫(kù)系統(tǒng)有什么好處?答:使用數(shù)據(jù)庫(kù)系統(tǒng)的好處是由數(shù)據(jù)庫(kù)管理系統(tǒng)的特點(diǎn)或優(yōu)點(diǎn)決定的。使用數(shù)據(jù)庫(kù)系統(tǒng)的好處很多,例如,可以大大提高應(yīng)用開(kāi)發(fā)的效率,方便用戶(hù)的使用,減輕數(shù)據(jù)庫(kù)系統(tǒng)管理人員維護(hù)的負(fù)擔(dān),等等。使用數(shù)據(jù)庫(kù)系統(tǒng)可以大大提高應(yīng)用開(kāi)發(fā)的效率。因?yàn)樵跀?shù)據(jù)庫(kù)系統(tǒng)中應(yīng)用程序不必考慮數(shù)據(jù)的定義、存儲(chǔ)和數(shù)據(jù)存取的具體路徑,這些工作都由DBMS來(lái)完成。用一個(gè)通俗的比喻,使用了DBMS就如有了一個(gè)好參謀、好助手,許多具體的技術(shù)工作都由這個(gè)助手來(lái)完成。開(kāi)發(fā)人員就可以專(zhuān)注于應(yīng)用邏輯的設(shè)計(jì),而不必為數(shù)據(jù)管理的許許多多復(fù)雜的細(xì)節(jié)操心。還有,當(dāng)應(yīng)用邏輯改變,數(shù)據(jù)的邏輯結(jié)構(gòu)也需要改變時(shí),由于數(shù)據(jù)庫(kù)系統(tǒng)提供了數(shù)據(jù)與程序之間的獨(dú)立性,數(shù)據(jù)邏輯結(jié)構(gòu)的改變是DBA的責(zé)任,開(kāi)發(fā)人員不必修改應(yīng)用程序,或者只需要修改很少的應(yīng)用程序,從而既簡(jiǎn)化了應(yīng)用程序的編制,又大大減少了應(yīng)用程序的維護(hù)和修改。使用數(shù)據(jù)庫(kù)系統(tǒng)可以減輕數(shù)據(jù)庫(kù)系統(tǒng)管理人員維護(hù)系統(tǒng)的負(fù)擔(dān)。因?yàn)镈BMS在數(shù)據(jù)庫(kù)建立、運(yùn)用和維護(hù)時(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)一的管理和控制,包括數(shù)據(jù)的完整性、安全性、多用戶(hù)并發(fā)控制、故障恢復(fù)等,都由DBMS執(zhí)行。總之,使用數(shù)據(jù)庫(kù)系統(tǒng)的優(yōu)點(diǎn)是很多的,既便于數(shù)據(jù)的集中管理,控制數(shù)據(jù)冗余,提高數(shù)據(jù)的利用率和一致性,又有利于應(yīng)用程序的開(kāi)發(fā)和維護(hù)。讀者可以在自己今后的工作中結(jié)合具體應(yīng)用,認(rèn)真加以體會(huì)和總結(jié)。3.試述文件系統(tǒng)與數(shù)據(jù)庫(kù)系統(tǒng)的區(qū)別和聯(lián)系。答:文件系統(tǒng)與數(shù)據(jù)庫(kù)系統(tǒng)的區(qū)別是:文件系統(tǒng)面向某一應(yīng)用程序,共享性差,冗余度大,數(shù)據(jù)獨(dú)立性差,記錄內(nèi)有結(jié)構(gòu),整體無(wú)結(jié)構(gòu),由應(yīng)用程序自己控制。數(shù)據(jù)庫(kù)系統(tǒng)面向現(xiàn)實(shí)世界,共享性高,冗余度小,具有較高的物理獨(dú)立性和一定的邏輯獨(dú)立性,整體結(jié)構(gòu)化,用數(shù)據(jù)模型描述,由數(shù)據(jù)庫(kù)管理系統(tǒng)提供數(shù)據(jù)的安全性、完整性、并發(fā)控制和恢復(fù)能力。文件系統(tǒng)與數(shù)據(jù)庫(kù)系統(tǒng)的聯(lián)系是:文件系統(tǒng)與數(shù)據(jù)庫(kù)系統(tǒng)都是計(jì)算機(jī)系統(tǒng)中管理數(shù)據(jù)的軟件。解析文件系統(tǒng)是操作系統(tǒng)的重要組成部分;而DBMS是獨(dú)立于操作系統(tǒng)的軟件。但是DBMS是在操作系統(tǒng)的基礎(chǔ)上實(shí)現(xiàn)的;數(shù)據(jù)庫(kù)中數(shù)據(jù)的組織和存儲(chǔ)是通過(guò)操作系統(tǒng)中的文件系統(tǒng)來(lái)實(shí)現(xiàn)的。4.舉出適合用文件系統(tǒng)而不是數(shù)據(jù)庫(kù)系統(tǒng)的例子;再舉出適合用數(shù)據(jù)庫(kù)系統(tǒng)的應(yīng)用例子。答:(l)適用于文件系統(tǒng)而不是數(shù)據(jù)庫(kù)系統(tǒng)的應(yīng)用例子數(shù)據(jù)的備份、軟件或應(yīng)用程序使用過(guò)程中的臨時(shí)數(shù)據(jù)存儲(chǔ)一般使用文件比較合適。早期功能比較簡(jiǎn)單、比較固定的應(yīng)用系統(tǒng)也適合用文件系統(tǒng)。(2)適用于數(shù)據(jù)庫(kù)系統(tǒng)而非文件系統(tǒng)的應(yīng)用例子目前,幾乎所有企業(yè)或部門(mén)的信息系統(tǒng)都以數(shù)據(jù)庫(kù)系統(tǒng)為基礎(chǔ),都使用數(shù)據(jù)庫(kù)。例如,一個(gè)工廠(chǎng)的管理信息系統(tǒng)(其中會(huì)包括許多子系統(tǒng),如庫(kù)存管理系統(tǒng)、物資采購(gòu)系統(tǒng)、作業(yè)調(diào)度系統(tǒng)、設(shè)備管理系統(tǒng)、人事管理系統(tǒng)等),學(xué)校的學(xué)生管理系統(tǒng),人事管理系統(tǒng),圖書(shū)館的圖書(shū)管理系統(tǒng),等等,都適合用數(shù)據(jù)庫(kù)系統(tǒng)。希望讀者能舉出自己了解的應(yīng)用例子。5.試述數(shù)據(jù)庫(kù)系統(tǒng)的特點(diǎn)。答:數(shù)據(jù)庫(kù)系統(tǒng)的主要特點(diǎn)有:(l)數(shù)據(jù)結(jié)構(gòu)化數(shù)據(jù)庫(kù)系統(tǒng)實(shí)現(xiàn)整體數(shù)據(jù)的結(jié)構(gòu)化,這是數(shù)據(jù)庫(kù)的主要特征之一,也是數(shù)據(jù)庫(kù)系統(tǒng)與文件系統(tǒng)的本質(zhì)區(qū)別。解析注意這里的“整體’夕兩個(gè)字。在數(shù)據(jù)庫(kù)系統(tǒng)中,數(shù)據(jù)不再針對(duì)某一個(gè)應(yīng)用,而是面向全組織,具有整體的結(jié)構(gòu)化。不僅數(shù)據(jù)是結(jié)構(gòu)化的,而且數(shù)據(jù)的存取單位即一次可以存取數(shù)據(jù)的大小也很靈活,可以小到某一個(gè)數(shù)據(jù)項(xiàng)(如一個(gè)學(xué)生的姓名),大到一組記錄(成千上萬(wàn)個(gè)學(xué)生記錄)。而在文件系統(tǒng)中,數(shù)據(jù)的存取單位只有一個(gè):記錄,如一個(gè)學(xué)生的完整記錄。(2)數(shù)據(jù)的共享性高,冗余度低,易擴(kuò)充數(shù)據(jù)庫(kù)的數(shù)據(jù)不再面向某個(gè)應(yīng)用而是面向整個(gè)系統(tǒng),因此可以被多個(gè)用戶(hù)、多個(gè)應(yīng)用以多種不同的語(yǔ)言共享使用。由于數(shù)據(jù)面向整個(gè)系統(tǒng),是有結(jié)構(gòu)的數(shù)據(jù),不僅可以被多個(gè)應(yīng)用共享使用,而且容易增加新的應(yīng)用,這就使得數(shù)據(jù)庫(kù)系統(tǒng)彈性大,易于擴(kuò)充。解析數(shù)據(jù)共享可以大大減少數(shù)據(jù)冗余,節(jié)約存儲(chǔ)空間,同時(shí)還能夠避免數(shù)據(jù)之間的不相容性與不一致性。所謂“數(shù)據(jù)面向某個(gè)應(yīng)用”是指數(shù)據(jù)結(jié)構(gòu)是針對(duì)某個(gè)應(yīng)用設(shè)計(jì)的,只被這個(gè)應(yīng)用程序或應(yīng)用系統(tǒng)使用,可以說(shuō)數(shù)據(jù)是某個(gè)應(yīng)用的“私有資源”。所謂“彈性大”是指系統(tǒng)容易擴(kuò)充也容易收縮,即應(yīng)用增加或減少時(shí)不必修改整個(gè)數(shù)據(jù)庫(kù)的結(jié)構(gòu),只需做很少的改動(dòng)??梢匀≌w數(shù)據(jù)的各種子集用于不同的應(yīng)用系統(tǒng),當(dāng)應(yīng)用需求改變或增加時(shí),只要重新選取不同的子集或加上一部分?jǐn)?shù)據(jù),便可以滿(mǎn)足新的需求。(3)數(shù)據(jù)獨(dú)立性高數(shù)據(jù)獨(dú)立性包括數(shù)據(jù)的物理獨(dú)立性和數(shù)據(jù)的邏輯獨(dú)立性。數(shù)據(jù)庫(kù)管理系統(tǒng)的模式結(jié)構(gòu)和二級(jí)映像功能保證了數(shù)據(jù)庫(kù)中的數(shù)據(jù)具有很高的物理獨(dú)立性和邏輯獨(dú)立性。(4)數(shù)據(jù)由DBMS統(tǒng)一管理和控制數(shù)據(jù)庫(kù)的共享是并發(fā)的共享,即多個(gè)用戶(hù)可以同時(shí)存取數(shù)據(jù)庫(kù)中的數(shù)據(jù)甚至可以同時(shí)存取數(shù)據(jù)庫(kù)中同一個(gè)數(shù)據(jù)。為此,DBMS必須提供統(tǒng)一的數(shù)據(jù)控制功能,包括數(shù)據(jù)的安全性保護(hù)、數(shù)據(jù)的完整性檢查、并發(fā)控制和數(shù)據(jù)庫(kù)恢復(fù)。解析DBMS數(shù)據(jù)控制功能包括四個(gè)方面:數(shù)據(jù)的安全性保護(hù):保護(hù)數(shù)據(jù)以防止不合法的使用造成的數(shù)據(jù)的泄密和破壞;數(shù)據(jù)的完整性檢查:將數(shù)據(jù)控制在有效的范圍內(nèi),或保證數(shù)據(jù)之間滿(mǎn)足一定的關(guān)系;并發(fā)控制:對(duì)多用戶(hù)的并發(fā)操作加以控制和協(xié)調(diào),保證并發(fā)操作的正確性;數(shù)據(jù)庫(kù)恢復(fù):當(dāng)計(jì)算機(jī)系統(tǒng)發(fā)生硬件故障、軟件故障,或者由于操作員的失誤以及故意的破壞影響數(shù)據(jù)庫(kù)中數(shù)據(jù)的正確性,甚至造成數(shù)據(jù)庫(kù)部分或全部數(shù)據(jù)的丟失時(shí),能將數(shù)據(jù)庫(kù)從錯(cuò)誤狀態(tài)恢復(fù)到某一已知的正確狀態(tài)(亦稱(chēng)為完整狀態(tài)或一致?tīng)顟B(tài))。下面可以得到“什么是數(shù)據(jù)庫(kù)”的一個(gè)定義:數(shù)據(jù)庫(kù)是長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi)有組織的大量的共享的數(shù)據(jù)集合,它可以供各種用戶(hù)共享,具有最小冗余度和較高的數(shù)據(jù)獨(dú)立性。DBMS在數(shù)據(jù)庫(kù)建立、運(yùn)用和維護(hù)時(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)一控制,以保證數(shù)據(jù)的完整性、安全性,并在多用戶(hù)同時(shí)使用數(shù)據(jù)庫(kù)時(shí)進(jìn)行并發(fā)控制,在發(fā)生故障后對(duì)系統(tǒng)進(jìn)行恢復(fù)。數(shù)據(jù)庫(kù)系統(tǒng)的出現(xiàn)使信息系統(tǒng)從以加工數(shù)據(jù)的程序?yàn)橹行霓D(zhuǎn)向圍繞共享的數(shù)據(jù)庫(kù)為中心的新階段。6.?dāng)?shù)據(jù)庫(kù)管理系統(tǒng)的主要功能有哪些?答:(l)數(shù)據(jù)庫(kù)定義功能;(2)數(shù)據(jù)存取功能;(3)數(shù)據(jù)庫(kù)運(yùn)行管理;(4)數(shù)據(jù)庫(kù)的建立和維護(hù)功能。7.什么是概念模型?試述概念模型的作用。答:概念模型,也稱(chēng)信息模型,是按用戶(hù)的觀點(diǎn)來(lái)對(duì)數(shù)據(jù)和信息建模,主要用于數(shù)據(jù)庫(kù)設(shè)計(jì)。概念模型實(shí)際上是現(xiàn)實(shí)世界到機(jī)器世界的一個(gè)中間層次。概念模型用于信息世界的建模,是現(xiàn)實(shí)世界到信息世界的第一層抽象,是數(shù)據(jù)庫(kù)設(shè)計(jì)人員進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)的有力工具,也是數(shù)據(jù)庫(kù)設(shè)計(jì)人員和用戶(hù)之間進(jìn)行交流的語(yǔ)言。8.定義并解釋概念模型中以下術(shù)語(yǔ):實(shí)體,實(shí)體型,實(shí)體集,實(shí)體之間的聯(lián)系。答:實(shí)體:客觀存在并可以相互區(qū)分的事物叫實(shí)體。實(shí)體型:具有相同屬性的實(shí)體具有相同的特征和性質(zhì),用實(shí)體名及其屬性名集合來(lái)抽象和刻畫(huà)同類(lèi)實(shí)體,稱(chēng)為實(shí)體型。實(shí)體集:同型實(shí)體的集合稱(chēng)為實(shí)體集;實(shí)體之間的聯(lián)系:通常是指不同實(shí)體型的實(shí)體集之間的聯(lián)系,實(shí)體之間的聯(lián)系有一對(duì)一,一對(duì)多和多對(duì)多等多種類(lèi)型。9.試述數(shù)據(jù)模型的概念、數(shù)據(jù)模型的作用和數(shù)據(jù)模型的三個(gè)要素。答:數(shù)據(jù)模型是數(shù)據(jù)庫(kù)中用來(lái)對(duì)現(xiàn)實(shí)世界進(jìn)行抽象的工具,是數(shù)據(jù)庫(kù)中用于提供信息表示和操作手段的形式構(gòu)架。一般地講,數(shù)據(jù)模型是嚴(yán)格定義的概念的集合。這些概念精確描述了系統(tǒng)的靜態(tài)特性、動(dòng)態(tài)特性和完整性約束條件。因此數(shù)據(jù)模型通常由數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和完整性約束三部分組成。(l)數(shù)據(jù)結(jié)構(gòu):是所研究的對(duì)象類(lèi)型的集合,是對(duì)系統(tǒng)靜態(tài)特性的描述。(2)數(shù)據(jù)操作:是指對(duì)數(shù)據(jù)庫(kù)中各種對(duì)象(型)的實(shí)例(值)允許進(jìn)行的操作的集合,包括操作及有關(guān)的操作規(guī)則,是對(duì)系統(tǒng)動(dòng)態(tài)特性的描述。(3)數(shù)據(jù)的約束條件:是一組完整性規(guī)則的集合。完整性規(guī)則是給定的數(shù)據(jù)模型中數(shù)據(jù)及其聯(lián)系所具有的制約和依存規(guī)則,用以限定符合數(shù)據(jù)模型的數(shù)據(jù)庫(kù)狀態(tài)以及狀態(tài)的變化,以保證數(shù)據(jù)的正確、有效、相容。解析數(shù)據(jù)模型是數(shù)據(jù)庫(kù)系統(tǒng)中最重要的概念之一。必須通過(guò)《概論》的學(xué)習(xí)真正掌握數(shù)據(jù)模型的概念和作用。數(shù)據(jù)模型是數(shù)據(jù)庫(kù)系統(tǒng)的基礎(chǔ)。任何一個(gè)DBMS都以某一個(gè)數(shù)據(jù)模型為基礎(chǔ),或者說(shuō)支持某一個(gè)數(shù)據(jù)模型。數(shù)據(jù)庫(kù)系統(tǒng)中,模型有不同的層次。根據(jù)模型應(yīng)用的不同目的,可以將模型分成兩類(lèi)或者說(shuō)兩個(gè)層次:一類(lèi)是概念模型,是按用戶(hù)的觀點(diǎn)來(lái)對(duì)數(shù)據(jù)和信息建模,用于信息世界的建模,強(qiáng)調(diào)語(yǔ)義表達(dá)能力,概念簡(jiǎn)單清晰;另一類(lèi)是數(shù)據(jù)模型,是按計(jì)算機(jī)系統(tǒng)的觀點(diǎn)對(duì)數(shù)據(jù)建模,用于機(jī)器世界,人們可以用它定義、操縱數(shù)據(jù)庫(kù)中的數(shù)據(jù),一般需要有嚴(yán)格的形式化定義和一組嚴(yán)格定義了語(yǔ)法和語(yǔ)義的語(yǔ)言,并有一些規(guī)定和限制,便于在機(jī)器上實(shí)現(xiàn)。10.試述層次模型的概念,舉出三個(gè)層次模型的實(shí)例。答:(l)教員學(xué)生層次數(shù)據(jù)庫(kù)模型(2)行政機(jī)構(gòu)層次數(shù)據(jù)庫(kù)模型(3)行政區(qū)域?qū)哟螖?shù)據(jù)庫(kù)模型11.試述網(wǎng)狀模型的概念,舉出三個(gè)網(wǎng)狀模型的實(shí)例。答:滿(mǎn)足下面兩個(gè)條件的基本層次聯(lián)系集合為網(wǎng)狀模型。(l)允許一個(gè)以上的結(jié)點(diǎn)無(wú)雙親;(2)一個(gè)結(jié)點(diǎn)可以有多于一個(gè)的雙親。實(shí)例1:實(shí)例2:實(shí)例3:12.試述網(wǎng)狀、層次數(shù)據(jù)庫(kù)的優(yōu)缺點(diǎn)。答:層次模型的優(yōu)點(diǎn)主要有:(l)模型簡(jiǎn)單,對(duì)具有一對(duì)多層次關(guān)系的部門(mén)描述非常自然、直觀,容易理解,這是層次數(shù)據(jù)庫(kù)的突出優(yōu)點(diǎn);(2)用層次模型的應(yīng)用系統(tǒng)性能好,特別是對(duì)于那些實(shí)體間聯(lián)系是固定的且預(yù)先定義好的應(yīng)用,采用層次模型來(lái)實(shí)現(xiàn),其性能優(yōu)于關(guān)系模型;(3)層次數(shù)據(jù)模型提供了良好的完整性支持。層次模型的缺點(diǎn)主要有:(l)現(xiàn)實(shí)世界中很多聯(lián)系是非層次性的,如多對(duì)多聯(lián)系、一個(gè)結(jié)點(diǎn)具有多個(gè)雙親等,層次模型不能自然地表示這類(lèi)聯(lián)系,只能通過(guò)引入冗余數(shù)據(jù)或引入虛擬結(jié)點(diǎn)來(lái)解決;(2)對(duì)插入和刪除操作的限制比較多;(3)查詢(xún)子女結(jié)點(diǎn)必須通過(guò)雙親結(jié)點(diǎn)。網(wǎng)狀數(shù)據(jù)模型的優(yōu)點(diǎn)主要有:(l)能夠更為直接地描述現(xiàn)實(shí)世界,如一個(gè)結(jié)點(diǎn)可以有多個(gè)雙親;(2)具有良好的性能,存取效率較高。網(wǎng)狀數(shù)據(jù)模型的缺點(diǎn)主要有:(l)結(jié)構(gòu)比較復(fù)雜,而且隨著應(yīng)用環(huán)境的擴(kuò)大,數(shù)據(jù)庫(kù)的結(jié)構(gòu)就變得越來(lái)越復(fù)雜,不利于最終用戶(hù)掌握;(2)其DDL、DML語(yǔ)言復(fù)雜,用戶(hù)不容易使用。由于記錄之間聯(lián)系是通過(guò)存取路徑實(shí)現(xiàn)的,應(yīng)用程序在訪(fǎng)問(wèn)數(shù)據(jù)時(shí)必須選擇適當(dāng)?shù)拇嫒÷窂?。因此,用?hù)必須了解系統(tǒng)結(jié)構(gòu)的細(xì)節(jié),加重了編寫(xiě)應(yīng)用程序的負(fù)擔(dān)。13.試述關(guān)系模型的概念,定義并解釋以下術(shù)語(yǔ):(l)關(guān)系(2)屬性(3)域(4)元組(5)主碼(6)分量(7)關(guān)系模式答:關(guān)系模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合和關(guān)系完整性約束三部分組成。在用戶(hù)觀點(diǎn)下,關(guān)系模型中數(shù)據(jù)的邏輯結(jié)構(gòu)是一張二維表,它由行和列組成。(l)關(guān)系:一個(gè)關(guān)系對(duì)應(yīng)通常說(shuō)的一張表;(2)屬性:表中的一列即為一個(gè)屬性;(3)域:屬性的取值范圍;(4)元組:表中的一行即為一個(gè)元組;(5)主碼:表中的某個(gè)屬性組,它可以惟一確定一個(gè)元組;(6)分量:元組中的一個(gè)屬性值;(7)關(guān)系模式:對(duì)關(guān)系的描述,一般表示為關(guān)系名(屬性1,屬性2,…,屬性n)14.試述關(guān)系數(shù)據(jù)庫(kù)的特點(diǎn)。答:關(guān)系數(shù)據(jù)模型具有下列優(yōu)點(diǎn):(l)關(guān)系模型與非關(guān)系模型不同,它是建立在嚴(yán)格的數(shù)學(xué)概念的基礎(chǔ)上的。(2)關(guān)系模型的概念單一,無(wú)論實(shí)體還是實(shí)體之間的聯(lián)系都用關(guān)系表示,操作的對(duì)象和操作的結(jié)果都是關(guān)系,所以其數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)單、清晰,用戶(hù)易懂易用。(3)關(guān)系模型的存取路徑對(duì)用戶(hù)透明,從而具有更高的數(shù)據(jù)獨(dú)立性、更好的安全保密性,也簡(jiǎn)化了程序員的工作和數(shù)據(jù)庫(kù)開(kāi)發(fā)建立的工作。當(dāng)然,關(guān)系數(shù)據(jù)模型也有缺點(diǎn),其中最主要的缺點(diǎn)是,由于存取路徑對(duì)用戶(hù)透明,查詢(xún)效率往往不如非關(guān)系數(shù)據(jù)模型。因此為了提高性能,必須對(duì)用戶(hù)的查詢(xún)請(qǐng)求進(jìn)行優(yōu)化,增加了開(kāi)發(fā)數(shù)據(jù)庫(kù)管理系統(tǒng)的難度。15.試述數(shù)據(jù)庫(kù)系統(tǒng)三級(jí)模式結(jié)構(gòu),這種結(jié)構(gòu)的優(yōu)點(diǎn)是什么?答:數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式結(jié)構(gòu)由外模式、模式和內(nèi)模式組成。(參見(jiàn)書(shū)上圖1.29)外模式,亦稱(chēng)子模式或用戶(hù)模式,是數(shù)據(jù)庫(kù)用戶(hù)(包括應(yīng)用程序員和最終用戶(hù))能夠看見(jiàn)和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)庫(kù)用戶(hù)的數(shù)據(jù)視圖,是與某一應(yīng)用有關(guān)的數(shù)據(jù)的邏輯表示。模式,亦稱(chēng)邏輯模式,是數(shù)據(jù)庫(kù)中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是所有用戶(hù)的公共數(shù)據(jù)視圖。模式描述的是數(shù)據(jù)的全局邏輯結(jié)構(gòu)。外模式涉及的是數(shù)據(jù)的局部邏輯結(jié)構(gòu),通常是模式的子集。內(nèi)模式,亦稱(chēng)存儲(chǔ)模式,是數(shù)據(jù)在數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)部的表示,即對(duì)數(shù)據(jù)的物理結(jié)構(gòu)和存儲(chǔ)方式的描述。數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式是對(duì)數(shù)據(jù)的三個(gè)抽象級(jí)別,它把數(shù)據(jù)的具體組織留給DBMs管理,使用戶(hù)能邏輯抽象地處理數(shù)據(jù),而不必關(guān)心數(shù)據(jù)在計(jì)算機(jī)中的表示和存儲(chǔ)。為了能夠在內(nèi)部實(shí)現(xiàn)這三個(gè)抽象層次的聯(lián)系和轉(zhuǎn)換,數(shù)據(jù)庫(kù)系統(tǒng)在這三級(jí)模式之間提供了兩層映像:外模式/模式映像和模式/內(nèi)模式映像。正是這兩層映像保證了數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)能夠具有較高的邏輯獨(dú)立性和物理獨(dú)立性。16.定義并解釋以下術(shù)語(yǔ):模式、外模式、內(nèi)模式、DDL、DML。模式、外模式、內(nèi)模式,亦稱(chēng)邏輯模式,是數(shù)據(jù)庫(kù)中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是所有用戶(hù)的公共數(shù)據(jù)視圖。模式描述的是數(shù)據(jù)的全局邏輯結(jié)構(gòu)。外模式涉及的是數(shù)據(jù)的局部邏輯結(jié)構(gòu),通常是模式的子集。內(nèi)模式,亦稱(chēng)存儲(chǔ)模式,是數(shù)據(jù)在數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)部的表示,即對(duì)數(shù)據(jù)的物理結(jié)構(gòu)和存儲(chǔ)方式的描述。DDL:數(shù)據(jù)定義語(yǔ)言,用來(lái)定義數(shù)據(jù)庫(kù)模式、外模式、內(nèi)模式的語(yǔ)言。DML:數(shù)據(jù)操縱語(yǔ)言,用來(lái)對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行查詢(xún)、插入、刪除和修改的語(yǔ)句。17.什么叫數(shù)據(jù)與程序的物理獨(dú)立性?什么叫數(shù)據(jù)與程序的邏輯獨(dú)立性?為什么數(shù)據(jù)庫(kù)系統(tǒng)具有數(shù)據(jù)與程序的獨(dú)立性?答:數(shù)據(jù)與程序的邏輯獨(dú)立性:當(dāng)模式改變時(shí)(例如增加新的關(guān)系、新的屬性、改變屬性的數(shù)據(jù)類(lèi)型等),由數(shù)據(jù)庫(kù)管理員對(duì)各個(gè)外模式/模式的映像做相應(yīng)改變,可以使外模式保持不變。應(yīng)用程序是依據(jù)數(shù)據(jù)的外模式編寫(xiě)的,從而應(yīng)用程序不必修改,保證了數(shù)據(jù)與程序的邏輯獨(dú)立性,簡(jiǎn)稱(chēng)數(shù)據(jù)的邏輯獨(dú)立性。數(shù)據(jù)與程序的物理獨(dú)立性:當(dāng)數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)改變了,由數(shù)據(jù)庫(kù)管理員對(duì)模式/內(nèi)模式映像做相應(yīng)改變,可以使模式保持不變,從而應(yīng)用程序也不必改變,保證了數(shù)據(jù)與程序的物理獨(dú)立性,簡(jiǎn)稱(chēng)數(shù)據(jù)的物理獨(dú)立性。數(shù)據(jù)庫(kù)管理系統(tǒng)在三級(jí)模式之間提供的兩層映像保證了數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)能夠具有較高的邏輯獨(dú)立性和物理獨(dú)立性。18.試述數(shù)據(jù)庫(kù)系統(tǒng)的組成。答:數(shù)據(jù)庫(kù)系統(tǒng)一般由數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系統(tǒng)(及其開(kāi)發(fā)工具)、應(yīng)用系統(tǒng)、數(shù)據(jù)庫(kù)管理員和用戶(hù)構(gòu)成。19.?dāng)?shù)據(jù)庫(kù)管理員、系統(tǒng)分析員、數(shù)據(jù)庫(kù)設(shè)計(jì)人員、應(yīng)用程序員的職責(zé)是什么?答:數(shù)據(jù)庫(kù)管理員的職責(zé):(1)決定數(shù)據(jù)庫(kù)中的信息內(nèi)容和結(jié)構(gòu);(2)決定數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)和存取策略;(3)定義數(shù)據(jù)的安全性要求和完整性約束條件;(4)監(jiān)控?cái)?shù)據(jù)庫(kù)的使用和運(yùn)行;(5)數(shù)據(jù)庫(kù)的改進(jìn)和重組、重構(gòu)。系統(tǒng)分析員負(fù)責(zé)應(yīng)用系統(tǒng)的需求分析和規(guī)范說(shuō)明,系統(tǒng)分析員要和用戶(hù)及DBA相結(jié)合,確定系統(tǒng)的硬件、軟件配置,并參與數(shù)據(jù)庫(kù)系統(tǒng)的概要設(shè)計(jì)。數(shù)據(jù)庫(kù)設(shè)計(jì)人員負(fù)責(zé)數(shù)據(jù)庫(kù)中數(shù)據(jù)的確定、數(shù)據(jù)庫(kù)各級(jí)模式的設(shè)計(jì)。數(shù)據(jù)庫(kù)設(shè)計(jì)人員必須參加用戶(hù)需求調(diào)查和系統(tǒng)分析,然后進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)。在很多情況下,數(shù)據(jù)庫(kù)設(shè)計(jì)人員就由數(shù)據(jù)庫(kù)管理員擔(dān)任。應(yīng)用程序員負(fù)責(zé)設(shè)計(jì)和編寫(xiě)應(yīng)用系統(tǒng)的程序模塊,并進(jìn)行調(diào)試和安裝。第二章關(guān)系數(shù)據(jù)庫(kù)1.試述關(guān)系模型的三個(gè)組成部分。
答:關(guān)系模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合和關(guān)系完整性約束三部分組成。2.試述關(guān)系數(shù)據(jù)語(yǔ)言的特點(diǎn)和分類(lèi)。答:關(guān)系數(shù)據(jù)語(yǔ)言可以分為三類(lèi):關(guān)系代數(shù)語(yǔ)言。關(guān)系演算語(yǔ)言:元組關(guān)系演算語(yǔ)言和域關(guān)系演算語(yǔ)言。SQL:具有關(guān)系代數(shù)和關(guān)系演算雙重特點(diǎn)的語(yǔ)言。這些關(guān)系數(shù)據(jù)語(yǔ)言的共同特點(diǎn)是,語(yǔ)言具有完備的表達(dá)能力,是非過(guò)程化的集合操作語(yǔ)言,功能強(qiáng),能夠嵌入高級(jí)語(yǔ)言中使用。3(略)4.5.述關(guān)系模型的完整性規(guī)則。在參照完整性中,為什么外部碼屬性的值也可以為空?什么情況下才可以為空?答:實(shí)體完整性規(guī)則是指若屬性A是基本關(guān)系R的主屬性,則屬性A不能取空值。若屬性(或?qū)傩越M)F是基本關(guān)系R的外碼,它與基本關(guān)系S的主碼Ks相對(duì)應(yīng)(基本關(guān)系R和S不一定是不同的關(guān)系),則對(duì)于R中每個(gè)元組在F上的值必須為:或者取空值(F的每個(gè)屬性值均為空值);或者等于S中某個(gè)元組的主碼值。即屬性F本身不是主屬性,則可以取空值,否則不能取空值。6.設(shè)有一個(gè)SPJ數(shù)據(jù)庫(kù),包括S,P,J,SPJ四個(gè)關(guān)系模式:1)求供應(yīng)工程J1零件的供應(yīng)商號(hào)碼SNO:πSno(σJno=‘J1’(SPJ))2)求供應(yīng)工程J1零件P1的供應(yīng)商號(hào)碼SNO:πSno(σJno=‘J1’∧Pno=‘P1‘(SPJ))3)求供應(yīng)工程J1零件為紅色的供應(yīng)商號(hào)碼SNO:πSno(πSno,,Pno(σJno=‘J1‘(SPJ))∞πPno(σCOLOR=’紅‘(P)))4)求沒(méi)有使用天津供應(yīng)商生產(chǎn)的紅色零件的工程號(hào)JNO:πJno(SPJ)-πJNO(σcity=‘天津’∧Color=‘紅‘(S∞SPJ∞P)5)求至少用了供應(yīng)商S1所供應(yīng)的全部零件的工程號(hào)JNO:πJno,Pno(SPJ)÷πPno(σSno=‘S1‘(SPJ))7.試述等值連接與自然連接的區(qū)別和聯(lián)系。答:連接運(yùn)算符是“=”的連接運(yùn)算稱(chēng)為等值連接。它是從關(guān)系R與S的廣義笛卡爾積中選取A,B屬性值相等的那些元組自然連接是一種特殊的等值連接,它要求兩個(gè)關(guān)系中進(jìn)行比較的分量必須是相同的屬性組,并且在結(jié)果中把重復(fù)的屬性列去掉。8.關(guān)系代數(shù)的基本運(yùn)算有哪些?如何用這些基本運(yùn)算來(lái)表示其他運(yùn)算?答:并、差、笛卡爾積、投影和選擇5種運(yùn)算為基本的運(yùn)算。其他3種運(yùn)算,即交、連接和除,均可以用這5種基本運(yùn)算來(lái)表達(dá)。第三章關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言SQL1.試述sQL語(yǔ)言的特點(diǎn)。答:(l)綜合統(tǒng)一。sQL語(yǔ)言集數(shù)據(jù)定義語(yǔ)言DDL、數(shù)據(jù)操縱語(yǔ)言DML、數(shù)據(jù)控制語(yǔ)言DCL的功能于一體。(2)高度非過(guò)程化。用sQL語(yǔ)言進(jìn)行數(shù)據(jù)操作,只要提出“做什么”,而無(wú)需指明“怎么做”,因此無(wú)需了解存取路徑,存取路徑的選擇以及sQL語(yǔ)句的操作過(guò)程由系統(tǒng)自動(dòng)完成。(3)面向集合的操作方式。sQL語(yǔ)言采用集合操作方式,不僅操作對(duì)象、查找結(jié)果可以是元組的集合,而且一次插入、刪除、更新操作的對(duì)象也可以是元組的集合。(4)以同一種語(yǔ)法結(jié)構(gòu)提供兩種使用方式。sQL語(yǔ)言既是自含式語(yǔ)言,又是嵌入式語(yǔ)言。作為自含式語(yǔ)言,它能夠獨(dú)立地用于聯(lián)機(jī)交互的使用方式;作為嵌入式語(yǔ)言,它能夠嵌入到高級(jí)語(yǔ)言程序中,供程序員設(shè)計(jì)程序時(shí)使用。(5)語(yǔ)言簡(jiǎn)捷,易學(xué)易用。2.3(1)select*fromSwhereA='10';(2)selectA,BfromS;(3)selectA,B,S.C,S.D,E,FfromS,TwhereS.C=T.CandS.D=T.D;(4)select*fromS,TwhereS.C=T.C;(5)select*fromS,TwhereS.A<T.E;(6)selectS.C,S.D,T.*fromS,T;4.用sQL語(yǔ)句建立第二章習(xí)題6中的4個(gè)表。答:對(duì)于S表:S(SNO,SNAME,STATUS,CITY);建S表:CREATETABLES(SnoC(2)UNIQUE,SnameC(6),StatusC(2),CityC(4));對(duì)于P表:P(PNO,PNAME,COLOR,WEIGHT);建P表:CREATETABLEP(PnoC(2)UNIQUE,PnameC(6),COLORC(2),WEIGHTINT);對(duì)于J表:J(JNO,JNAME,CITY);建J表:CREATETABLEJ(JnoC(2)UNlQUE,JNAMEC(8),CITYC(4))對(duì)于sPJ表:sPJ(sNo,PNo,JNo,QTY);建SPJ表:SPJ(SNO,PNO,JNO,QTY)CREATETABLESPJ(SnoC(2),PnoC(2),JNOC(2),QTYINT))針對(duì)建立的4個(gè)表用sQL語(yǔ)言完成第二章習(xí)題6中的查詢(xún)。(l)求供應(yīng)工程Jl零件的供應(yīng)商號(hào)碼SNO;SELECTDISTSNOFROMSPJWHEREJNO=’J1’(2)求供應(yīng)工程Jl零件Pl的供應(yīng)商號(hào)碼SNO;SELECTDISTSNOFROMSPJWHEREJNO='J1'ANDPNO='P1'(3)求供應(yīng)工程Jl零件為紅色的供應(yīng)商號(hào)碼SNO;SELECTSNOFROMSPJ,PWHEREJNO='J1'ANDSPJ.PNO=P.PNOANDCOLOR='紅'(4)求沒(méi)有使用天津供應(yīng)商生產(chǎn)的紅色零件的工程號(hào)JNO;SELECTDISTJNOFROMSPJWHEREJNONOTIN(SELEJNOFROMSPJ,P,SWHERES.CITY='天津'ANDCOLOR='紅'ANDS.SNO=SPJ.SNOANDP.PNO=SPJ.PNO)。(5)求至少用了供應(yīng)商Sl所供應(yīng)的全部零件的工程號(hào)JNO;由于VFP不允許子查詢(xún)嵌套太深,將查詢(xún)分為兩步A、查詢(xún)S1供應(yīng)商供應(yīng)的零件號(hào)SELECTDISTPNOFROMSPJWHERESNO='S1'結(jié)果是(P1,P2)B、查詢(xún)哪一個(gè)工程既使用P1零件又使用P2零件。SELECTJNOFROMSPJWHEREPNO='P1'ANDJNOIN(SELECTJNOFROMSPJWHEREPNO='P2')5.針對(duì)上題中的四個(gè)表試用SQL語(yǔ)言完成以下各項(xiàng)操作:(1)找出所有供應(yīng)商的姓名和所在城市。SELECTSNAME,CITYFROMS(2)找出所有零件的名稱(chēng)、顏色、重量。SELECTPNAME,COLOR,WEIGHTFROMP(3)找出使用供應(yīng)商S1所供應(yīng)零件的工程號(hào)碼。SELECTDISTJNOFR
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度船舶建造與設(shè)計(jì)合同年度更新
- 2025年度跨境電商代理記賬與稅務(wù)合規(guī)支持協(xié)議
- 2025年度人工智能技術(shù)研發(fā)合作協(xié)議(全新版)
- 2025年度創(chuàng)意產(chǎn)業(yè)園區(qū)租賃合同及創(chuàng)業(yè)支持協(xié)議
- 2025年度租賃合同范本(含違約責(zé)任)
- 持續(xù)反饋機(jī)制的建立與實(shí)施計(jì)劃
- 加強(qiáng)數(shù)據(jù)安全管理的實(shí)施措施計(jì)劃
- 2025年CO2氣體保護(hù)藥芯焊絲合作協(xié)議書(shū)
- 定期舉辦學(xué)術(shù)交流活動(dòng)計(jì)劃
- 生產(chǎn)計(jì)劃科學(xué)制定
- 煤礦技術(shù)員必須會(huì)的知識(shí)
- (高清版)JTGT 3650-01-2022 公路橋梁施工監(jiān)控技術(shù)規(guī)程
- 2024年山東藥品食品職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)含答案
- 《行政倫理學(xué)教程(第四版)》課件 張康之 第8-13章 行政組織倫理-技術(shù)時(shí)代的行政倫理
- 進(jìn)出潔凈室培訓(xùn)
- 《提案與方案優(yōu)化設(shè)計(jì)》課件-第一部分 常見(jiàn)戶(hù)型問(wèn)題解析及平面布局優(yōu)化
- (正式版)SHT 3078-2024 立式圓筒形料倉(cāng)工程設(shè)計(jì)規(guī)范
- 2024年高考語(yǔ)文標(biāo)點(diǎn)符號(hào)的基本用法大全(新標(biāo)準(zhǔn))
- 2024ABB IRB IRB6700Inv IRB6700I產(chǎn)品手冊(cè)指南
- 正弦函數(shù)圖像與性質(zhì).課件
- 認(rèn)識(shí)職業(yè):醫(yī)生
評(píng)論
0/150
提交評(píng)論