數(shù)據(jù)庫課后答案_第1頁
數(shù)據(jù)庫課后答案_第2頁
數(shù)據(jù)庫課后答案_第3頁
數(shù)據(jù)庫課后答案_第4頁
數(shù)據(jù)庫課后答案_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、數(shù)據(jù)庫系統(tǒng)及應用(第二版)習題解答習題一1. 什么是數(shù)據(jù)庫?數(shù)據(jù)庫是相互關(guān)聯(lián)的數(shù)據(jù)的集合,它用綜合的方法組織數(shù)據(jù),具有較小的數(shù)據(jù)冗余,可供多個用戶共享,具有較高的數(shù)據(jù)獨立性,具有安全控制機制,能夠保證數(shù)據(jù)的安全、可靠,允許并發(fā)地使用數(shù)據(jù)庫,能有效、及時地處理數(shù)據(jù),并能保證數(shù)據(jù)的一致性和完整性。2. 簡要概述數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)和數(shù)據(jù)庫系統(tǒng)各自的含義。數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)和數(shù)據(jù)庫系統(tǒng)是三個不同的概念,數(shù)據(jù)庫強調(diào)的是相互關(guān)聯(lián)的數(shù)據(jù),數(shù)據(jù)庫管理系統(tǒng)是管理數(shù)據(jù)庫的系統(tǒng)軟件,而數(shù)據(jù)庫系統(tǒng)強調(diào)的是基于數(shù)據(jù)庫的計算機應用系統(tǒng)。3. 數(shù)據(jù)獨立性的含義是什么?數(shù)據(jù)獨立性是指數(shù)據(jù)的組織和存儲方法與應用程序互不

2、依賴、彼此獨立的特性。這種特性使數(shù)據(jù)的組織和存儲方法與應用程序互不依賴,從而大大降低應用程序的開發(fā)代價和維護代價。4. 數(shù)據(jù)完整性的含義是什么?保證數(shù)據(jù)正確的特性在數(shù)據(jù)庫中稱之為數(shù)據(jù)完整性。5. 簡要概述數(shù)據(jù)庫管理員的職責。數(shù)據(jù)庫管理員的職責可以概括如下:(1) 首先在數(shù)據(jù)庫規(guī)劃階段要參與選擇和評價與數(shù)據(jù)庫有關(guān)的計算機軟件和硬件,要與數(shù)據(jù)庫用戶共同確定數(shù)據(jù)庫系統(tǒng)的目標和數(shù)據(jù)庫應用需求,要確定數(shù)據(jù)庫的開發(fā)計劃;(2) 在數(shù)據(jù)庫設計階段要負責數(shù)據(jù)庫標準的制定和共用數(shù)據(jù)字典的研制,要負責各級數(shù)據(jù)庫模式的設計,負責數(shù)據(jù)庫安全、可靠方面的設計;(3) 在數(shù)據(jù)庫運行階段首先要負責對用戶進行數(shù)據(jù)庫方面的培訓

3、;負責數(shù)據(jù)庫的轉(zhuǎn)儲和恢復;負責對數(shù)據(jù)庫中的數(shù)據(jù)進行維護;負責監(jiān)視數(shù)據(jù)庫的性能,并調(diào)整、改善數(shù)據(jù)庫的性能,提高系統(tǒng)的效率;繼續(xù)負責數(shù)據(jù)庫安全系統(tǒng)的管理;在運行過程中發(fā)現(xiàn)問題、解決問題。6. 文件系統(tǒng)用于數(shù)據(jù)管理存在哪些明顯的缺陷?文件系統(tǒng)用于數(shù)據(jù)管理明顯存在如下缺陷:(1) 數(shù)據(jù)冗余大。這是因為每個文件都是為特定的用途設計的,因此就會造成同樣的數(shù)據(jù)在多個文件中重復存儲。(2) 數(shù)據(jù)不一致性。這往往是由數(shù)據(jù)冗余造成的,在進行更新時,稍不謹慎就會造成同一數(shù)據(jù)在不同文件中的不一致。(3) 程序和數(shù)據(jù)之間的獨立性差。應用程序依賴于文件的存儲結(jié)構(gòu),使得若修改文件的存儲結(jié)構(gòu)則必須修改程序。(4) 數(shù)據(jù)聯(lián)系弱

4、。文件與文件之間是獨立的,文件之間的聯(lián)系必須通過程序來構(gòu)造。因此,文件系統(tǒng)是一個不具有彈性的、無結(jié)構(gòu)的數(shù)據(jù)集合,不能反映現(xiàn)實世界事物之間的聯(lián)系。習題二1. 數(shù)據(jù)的三種范疇的含義是什么?數(shù)據(jù)需要我們的認識、理解、整理、規(guī)范和加工,然后才能存放到數(shù)據(jù)庫中。數(shù)據(jù)從現(xiàn)實生活進入到數(shù)據(jù)庫實際經(jīng)歷了現(xiàn)實世界階段(認識、理解)、信息世界階段(規(guī)范、提升)和機器世界階段(管理),我們也把之稱為數(shù)據(jù)的三種范疇,數(shù)據(jù)在三種范疇中的概念、術(shù)語都有些不同。2. 對以下問題分析實體之間的聯(lián)系,并分別畫出E-R圖:略3. 試述為什么要討論實體之間的聯(lián)系類型?實體之間的聯(lián)系類型決定了數(shù)據(jù)庫設計時的結(jié)果,與數(shù)據(jù)庫的設計質(zhì)量密

5、切相關(guān)。4. 多對多聯(lián)系如何轉(zhuǎn)換成一對多聯(lián)系?并舉例說明。通過引入一個表示聯(lián)系的實體,將原來兩個實體之間的一個多對多的聯(lián)系轉(zhuǎn)換成分別與表示聯(lián)系的實體之間的兩個一對多的聯(lián)系。例如,倉庫和材料兩個實體之間存在著多對多的聯(lián)系,即一個倉庫可以存放多種材料,一種材料可以存放在多個倉庫;通過引入一個庫存實體轉(zhuǎn)換為倉庫與庫存之間的一對多聯(lián)系和材料與庫存之間的一對多聯(lián)系。5. 解釋連接陷阱的概念,在操作數(shù)據(jù)庫時如何避免連接陷阱?所謂連接陷阱就是誤認為本來不存在聯(lián)系的兩個實體之間存在聯(lián)系,從而強行進行連接操作,自然得到錯誤的結(jié)果。為了避免連接陷阱,必須明確實體之間的聯(lián)系和聯(lián)系類型,只在有聯(lián)系的實體之間進行關(guān)聯(lián)操

6、作。6. 傳統(tǒng)的三大數(shù)據(jù)模型是哪些?它們分別是如何表示實體之間的聯(lián)系的?傳統(tǒng)的三大數(shù)據(jù)模型是層次模型、網(wǎng)狀模型和關(guān)系模型。層次模型用層次結(jié)構(gòu)表示聯(lián)系,它的典型代表IMS用層次型表示聯(lián)系;網(wǎng)狀模型用網(wǎng)狀結(jié)構(gòu)表示聯(lián)系,它的典型代表CODASYL用系表示聯(lián)系;關(guān)系模型用關(guān)系表示聯(lián)系。7. 解釋存儲數(shù)據(jù)獨立性和概念數(shù)據(jù)獨立性的區(qū)別。存儲數(shù)據(jù)獨立性強調(diào)的是應用程序與數(shù)據(jù)的存儲結(jié)構(gòu)相互獨立的特性,即修改數(shù)據(jù)的存儲方法或數(shù)據(jù)結(jié)構(gòu)時不影響應用程序;而概念數(shù)據(jù)獨立性強調(diào)的是應用程序與數(shù)據(jù)的概念結(jié)構(gòu)相互獨立的特性,即修改概念結(jié)構(gòu)中的字段時不影響應用程序。8. 為什么說概念數(shù)據(jù)庫和外部數(shù)據(jù)庫物理上并不真正存在?只有

7、存儲數(shù)據(jù)庫是物理上存在的數(shù)據(jù)庫,概念數(shù)據(jù)庫是存儲數(shù)據(jù)庫的抽象,它反映了數(shù)據(jù)庫的全局邏輯結(jié)構(gòu);而外部數(shù)據(jù)庫是概念數(shù)據(jù)庫的部分抽取,它反映了數(shù)據(jù)庫的局部邏輯結(jié)構(gòu)。9. 說明在DBMS中存儲模式、概念模式和外部模式的作用。存儲模式描述了數(shù)據(jù)庫的存儲結(jié)構(gòu),它包括對存儲數(shù)據(jù)庫中每個文件以及字段的描述,包括用于實現(xiàn)輔助關(guān)鍵字或存儲文件間聯(lián)系的指針字段的細節(jié)。存儲數(shù)據(jù)庫利用存儲模式組織和存取存儲數(shù)據(jù)庫中的文件。如果要修改存儲數(shù)據(jù)庫的結(jié)構(gòu)(例如,用倒排文件代替多鏈表),那么僅僅需要把這些修改反映在存儲模式中,以使數(shù)據(jù)庫存儲系統(tǒng)能夠操作新的存儲數(shù)據(jù)庫。按這種方法,數(shù)據(jù)庫管理系統(tǒng)可以提供存儲(物理)數(shù)據(jù)獨立性。概

8、念模式是對概念數(shù)據(jù)庫的描述,它包括對概念文件及概念文件之間聯(lián)系的描述。概念數(shù)據(jù)庫不包含真正的數(shù)據(jù),一切都是由存儲數(shù)據(jù)庫決定的。外部模式則是對外部數(shù)據(jù)庫的描述,它需要說明外部文件、構(gòu)成外部文件的字段及這些外部文件之間的聯(lián)系。數(shù)據(jù)庫管理系統(tǒng)提供了外部模式與概念模式之間的映象以及概念模式與存儲模式之間的映象,使用戶通過外部數(shù)據(jù)庫或概念數(shù)據(jù)庫來操作存儲數(shù)據(jù)庫。習題三1. 解釋屬性與值域的區(qū)別。屬性是二維表中的列,而值域是列或?qū)傩缘娜≈捣秶?. 關(guān)系模型的三個組成部分是什么?關(guān)系數(shù)據(jù)模型包括關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合和關(guān)系完整性約束三個重要因素。3. 對關(guān)系模型的操作都包括哪些?關(guān)系數(shù)據(jù)模型中的操作包

9、括:(1) 傳統(tǒng)的集合運算:并(Union)、交(Intersection)、差(Difference)、廣義笛卡爾積(Extended Cartesian Product);(2) 專門的關(guān)系運算:選擇(Select)、投影(Project)、連接(Join)、除(Divide);(3) 有關(guān)的數(shù)據(jù)操作:查詢(Query)、插入(Insert)、刪除(Delete)、修改(Update)。4. 關(guān)系模型的完整性規(guī)則都有哪些?在關(guān)系數(shù)據(jù)模型中一般將數(shù)據(jù)完整性分為實體完整性、參照完整性和用戶定義完整性。5. 試述外部關(guān)鍵字的概念和作用,外部關(guān)鍵字是否允許為空值,為什么?如果一個屬性集不是所在關(guān)系

10、的關(guān)鍵字,但是是其他關(guān)系的關(guān)鍵字,則該屬性集稱為外部關(guān)鍵字。外部關(guān)鍵字用于實現(xiàn)表與表之間的參照完整性。外部關(guān)鍵字是否允許為空值取決于語義的規(guī)定。外部關(guān)鍵字的取值或者為空值、或者為被參照關(guān)系中的某個關(guān)鍵字字段的值。6. 分別敘述在進行插入、刪除、更新操作時都需要進行哪些完整性檢查,并說明理由。(1) 執(zhí)行插入操作時需要分別檢查實體完整性規(guī)則、參照完整性規(guī)則和用戶定義完整性規(guī)則。首先檢查實體完整性規(guī)則,如果插入元組的主關(guān)鍵字的屬性不為空值、并且相應的屬性值在關(guān)系中不存在(即保持唯一性),則可以執(zhí)行插入操作,否則不可以執(zhí)行插入操作。接著再檢查參照完整性規(guī)則,如果是向被參照關(guān)系插入元組,則無須檢查參照

11、完整性;如果是向參照關(guān)系插入元組,則要檢查外部關(guān)鍵字屬性上的值是否在被參照關(guān)系中存在對應的主關(guān)鍵字的值,如果存在則可以執(zhí)行插入操作,否則不允許執(zhí)行插入操作。另外,如果插入元組的外部關(guān)鍵字允許為空值,則當外部關(guān)鍵字是空值時也允許執(zhí)行插入操作。最后檢查用戶定義完整性規(guī)則,如果插入的元組在相應的屬性值上遵守了用戶定義完整性規(guī)則,則可以執(zhí)行插入操作,否則不可以執(zhí)行插入操作。(2) 執(zhí)行刪除操作時一般只需要檢查參照完整性規(guī)則。如果刪除的是參照關(guān)系的元組,則不需要進行參照完整性檢查,可以執(zhí)行刪除操作。如果刪除的是被參照關(guān)系的元組,則檢查被刪除元組的主關(guān)鍵字屬性的值是否被參照關(guān)系中某個元組的外部關(guān)鍵字引用,

12、如果未被引用則可以執(zhí)行刪除操作;否則可能有三種情況:1) 不可以執(zhí)行刪除操作,即拒絕刪除;2) 可以刪除,但需同時將參照關(guān)系中引用了該元組的對應元組一起刪除,即執(zhí)行級聯(lián)刪除;3) 可以刪除,但需同時將參照關(guān)系中引用了該元組的對應元組的外部關(guān)鍵字置為空值,即空值刪除。(3) 執(zhí)行更新操作可以看作是先刪除舊的元組,然后再插入新的元組。所以執(zhí)行更新操作時的完整性檢查綜合了上述兩種情況。7. 試述關(guān)系的自然連接和等值連接的異同之處。自然連接和等值連接都是基于相等比較運算的連接,但是自然連接要去掉重復的屬性,而等值連接卻不需要去掉重復的屬性。8. 以圖3-6的數(shù)據(jù)庫為例(可參照圖5-1,該數(shù)據(jù)庫的實例)

13、,用關(guān)系代數(shù)完成以下檢索:注意:此處暫以 * 表示連接運算符。1) 檢索在倉庫WH2工作的職工的工資。職工號,工資(倉庫號="WH2"(職工)2) 檢索在上海工作的職工的工資。職工號,工資(城市="上海"(倉庫) * 職工)3) 檢索北京的供應商的名稱。供應商名(地址="北京"(供應商)4) 檢索目前與職工E6有業(yè)務聯(lián)系的供應商的名稱。供應商名(職工號="E6"(訂購單) * 供應商)5) 檢索所有職工的工資都大于1220元的倉庫所在的城市。城市(倉庫) -城市(工資<=1220(職工) * 倉庫)6) 檢索

14、和北京的所有供應商都有業(yè)務聯(lián)系的職工的工資。職工號,工資(職工 * (訂購單÷供應商號(地址="北京"(供應商)7) 檢索至少和職工E1、E4、E7都有聯(lián)系的供應商的名稱。供應商名(訂購單÷(“E1”,”E4”,”E7”) * 供應商)9. 試述關(guān)系數(shù)據(jù)庫系統(tǒng)的三層模式結(jié)構(gòu)。略習題四1. 簡述客戶/服務器結(jié)構(gòu)的概念,并說明客戶/服務器結(jié)構(gòu)與文件服務器網(wǎng)絡結(jié)構(gòu)的區(qū)別??蛻?服務器結(jié)構(gòu)的基本思想是應用程序或應用邏輯可以根據(jù)需要劃分在服務器和客戶工作站中,它既不像集中式系統(tǒng)那樣所有的應用程序都在主機上執(zhí)行,也不像文件服務器網(wǎng)絡那樣所有的應用程序都在客戶端執(zhí)行,

15、它可以使應用程序合理負擔在服務器和客戶端??蛻?服務器結(jié)構(gòu)與文件服務器網(wǎng)絡結(jié)構(gòu)的硬件拓撲結(jié)構(gòu)很相似,它們的根本區(qū)別在于:客戶/服務器結(jié)構(gòu)的服務器可以執(zhí)行應用程序;而文件服務器的服務器只是一個數(shù)據(jù)共享器,它不能執(zhí)行應用程序。2. 在客戶/服務器結(jié)構(gòu)中,數(shù)據(jù)庫服務器和客戶端計算機是如何分工的?數(shù)據(jù)庫服務器應完成數(shù)據(jù)管理、信息共享、安全管理、以及一些更高級的管理。它是一個開放的體系結(jié)構(gòu),可以接受來自各種應用程序和開發(fā)工具的客戶端的連接;它除了要管理集中的數(shù)據(jù)庫之外,還要處理來自客戶端的數(shù)據(jù)訪問請求和將結(jié)果反饋給用戶(包括管理請求隊列、管理緩存、響應服務、管理結(jié)果和通知服務完成等)的工作。而客戶端計算

16、機是面向最終用戶的,所以它的主要任務是提供友好的用戶界面,提交數(shù)據(jù)訪問請求以及接收和處理數(shù)據(jù)庫的返回結(jié)果,組織返回數(shù)據(jù)的輸出(如生成數(shù)據(jù)瀏覽窗口、生成數(shù)據(jù)報表和圖形等),提供初步的數(shù)據(jù)驗證功能等。3. SQL Server在安裝后默認創(chuàng)建了哪幾個系統(tǒng)數(shù)據(jù)庫?分別敘述它們的作用。SQL Server在安裝后默認創(chuàng)建了4系統(tǒng)數(shù)據(jù)庫,它們是:(1) master數(shù)據(jù)庫。master數(shù)據(jù)庫用于存儲SQL Server系統(tǒng)的所有系統(tǒng)級信息,包括所有的其它數(shù)據(jù)庫(如建立的用戶數(shù)據(jù)庫)的信息(包括數(shù)據(jù)庫的設置、對應的操作系統(tǒng)文件名稱和位置等)、所有數(shù)據(jù)庫注冊用戶的信息以及系統(tǒng)配置設置等。(2) tempdb

17、數(shù)據(jù)庫。tempdb數(shù)據(jù)庫用于保存所有的臨時表和臨時存儲過程,它還可以滿足任何其它的臨時存儲要求。(3) model 數(shù)據(jù)庫。model數(shù)據(jù)庫是一個模板數(shù)據(jù)庫,當使用CREATE DATABASE命令建立新的數(shù)據(jù)庫時,新數(shù)據(jù)庫的第一部分總是通過復制model數(shù)據(jù)庫中的內(nèi)容創(chuàng)建,剩余部分由空頁填充。(4) msdb數(shù)據(jù)庫。msdb數(shù)據(jù)庫用于SQL Server代理程序調(diào)度報警和作業(yè)等系統(tǒng)操作。4. 試述SQL Server的CREATE DATABASE命令在創(chuàng)建數(shù)據(jù)庫時是如何申請物理存儲空間的?通過指定的物理文件名、文件的大小等向操作系統(tǒng)申請物理存儲空間。5. 試述SQL Server企業(yè)管理

18、器的功能。略。習題五1. 試概述SQL語言的功能。SQL是一種一體化的語言,它包括了數(shù)據(jù)定義、數(shù)據(jù)查詢、數(shù)據(jù)操縱和數(shù)據(jù)控制等方面的功能,它可以完成數(shù)據(jù)庫活動中的全部工作。2. 以圖5-1的數(shù)據(jù)庫為例,用SQL完成以下檢索: 1) 檢索在北京的供應商的名稱。SELECT * FROM 供應商 WHERE 地址=北京2) 檢索發(fā)給供應商S6的訂購單號。SELECT 訂購單號 FROM 訂購單 WHERE 供應商號=S63) 檢索出職工E6發(fā)給供應商S6的訂購單信息。SELECT * FROM 訂購單 WHERE 供應商號=S6 AND 職工號=E64) 檢索出向供應商S3發(fā)過訂購單的職工的職工號和

19、倉庫號。SELECT 職工號,倉庫號 FROM 職工 WHERE 職工號 IN( SELECT 職工號 FROM 訂購單 WHERE 供應商號=S3 )5) 檢索出目前與S3供應商沒有聯(lián)系的職工信息。SELECT * FROM 職工 WHERE 職工號 NOT IN( SELECT 職工號 FROM 訂購單 WHERE 供應商號=S3 )6) 檢索出目前沒有任何訂購單的供應商信息。SELECT * FROM 供應商 WHERE NOT EXISTS( SELECT * FROM 訂購單 WHERE 供應商號=供應商.供應商號 )7) 檢索出和職工E1、E3都有聯(lián)系的北京的供應商信息。SELEC

20、T * FROM 供應商 WHERE 供應商號 IN( SELECT 供應商號 FROM 訂購單 WHERE 職工號=E1 )AND 供應商號 IN( SELECT 供應商號 FROM 訂購單 WHERE 職工號=E3 )8) 檢索出目前和華通電子公司有業(yè)務聯(lián)系的每個職工的工資。SELECT 職工號,工資 FROM 職工 WHERE 職工號 IN(SELECT 職工號 FROM 訂購單 WHERE 供應商號 IN(SELECT 供應商號 FROM 供應商 WHERE 供應商名=華通電子公司)9) 檢索出與工資在1220元以下的職工沒有聯(lián)系的供應商的名稱。SELECT 供應商名 FROM 供應商

21、 WHERE 供應商號 IN(SELECT 供應商號 FROM 訂購單 WHERE 職工號 NOT IN(SELECT 職工號 FROM 職工 WHERE 工資 < 1220)10) 檢索出向S4供應商發(fā)出訂購單的倉庫所在的城市。SELECT 城市 FROM 倉庫 WHERE 倉庫號 IN(SELECT 倉庫號 FROM 職工 WHERE 職工號 IN(SELECT 職工號 FROM 訂購單 WHERE 供應商號=S4)11) 檢索出在上海工作并且向S6供應商發(fā)出了訂購單的職工號。SELECT 職工號 FROM 職工 WHERE 倉庫號 IN(SELECT 倉庫號 FROM 倉庫 WHE

22、RE 城市=上海) AND 職工號 IN(SELECT 職工號 FROM 訂購單 WHERE 供應商號=S6)12) 檢索出在廣州工作并且只向S6供應商發(fā)出了訂購單的職工號。SELECT 職工號 FROM 職工 WHERE 倉庫號 IN(SELECT 倉庫號 FROM 倉庫 WHERE 城市=廣州) AND 職工號 IN(SELECT 職工號 FROM 訂購單 WHERE 供應商號=S6) AND 職工號 NOT IN(SELECT 職工號 FROM 訂購單 WHERE 供應商號!=S6)13) 檢索出由工資多于1230元的職工向北京的供應商發(fā)出的訂購單號。SELECT 訂購單號 FROM 訂

23、購單 WHERE 職工號 IN(SELECT 職工號 FROM 職工 WHERE 工資>1230) AND 供應商號 IN(SELECT 供應商號 FROM 供應商 WHERE 地址=北京)14) 檢索出倉庫的個數(shù)。SELECT COUNT(*) FROM 倉庫15) 檢索出有最大面積的倉庫信息。SELECT * FROM 倉庫 WHERE 面積=(SELECT MAX(面積) FROM 倉庫)16) 檢索出所有倉庫的平均面積。SELECT AVG(面積) FROM 倉庫17) 檢索出向S4供應商發(fā)出訂購單的那些倉庫的平均面積。SELECT AVG(面積) FROM 倉庫 WHERE 倉

24、庫號 IN(SELECT 倉庫號 FROM 職工 WHERE 職工號 IN(SELECT 職工號 FROM 訂購單 WHERE 供應商號=S4)18) 檢索出每個城市的供應商個數(shù)。SELECT 地址,COUNT(*) FROM 供應商 GROUP BY 地址19) 檢索出每個倉庫中工資多于1220元的職工個數(shù)。SELECT 倉庫號,COUNT(*) FROM 職工 WHERE 工資>1220 GROUP BY 倉庫號20) 檢索出和面積最小的倉庫有聯(lián)系的供應商的個數(shù)。SELECT COUNT(*) FROM 供應商 WHERE 供應商號 IN(SELECT 供應商號 FROM 訂購單 W

25、HERE 職工號 IN(SELECT 職工號 FROM 職工 WHERE 倉庫號 IN(SELECT 倉庫號 FROM 倉庫 WHERE 面積=(SELECT MIN(面積) FROM 倉庫)21) 檢索出工資低于本倉庫平均工資的職工信息。SELECT * FROM 職工 out WHERE 工資<(SELECT AVG(工資) FROM 職工 inne WHERE 倉庫號=out.倉庫號)3. 試述關(guān)系數(shù)據(jù)庫中視圖(View)的含義和作用。在關(guān)系數(shù)據(jù)庫中,視圖也稱作窗口,即視圖是操作基本表的窗口。在三層數(shù)據(jù)庫體系結(jié)構(gòu)中,視圖是外部數(shù)據(jù)庫,它是從基本表中派生出來的并依賴于基本表,它并不獨

26、立存在。利用視圖一方面可以限定對數(shù)據(jù)的訪問(對數(shù)據(jù)列起到安全保護的作用),另一方面又可以簡化對數(shù)據(jù)的訪問(用戶可以直接通過視圖訪問數(shù)據(jù)庫)。除此之外,從三層數(shù)據(jù)庫體系結(jié)構(gòu)的角度它還提供了概念數(shù)據(jù)獨立性。4. 以圖5-1的數(shù)據(jù)庫為例,用SQL語句完成以下更新操作,并討論數(shù)據(jù)完整性約束對這些操作的影響:1) 插入一個新的供應商元組(S9,智通公司,沈陽)。INSERT INTO 供應商 VALUES(S9,智通公司,沈陽)2) 刪除目前沒有任何訂購單的供應商。DELETE FROM 供應商 WHERE 供應商號 NOT IN(SELECT 供應商號 FROM 訂購單)3) 刪除由在上海倉庫工作的職

27、工發(fā)出的所有訂購單。DELETE FROM 訂購單 WHERE 職工號 IN(SELECT 職工號 FROM 職工 WHERE 倉庫號 IN(SELECT 倉庫號 FROM 倉庫 WHERE 城市=上海)4) 北京的所有倉庫增加100m2的面積。UPDATE 倉庫 SET 面積=面積+100 WHERE 城市=北京5) 給低于所有職工平均工資的職工提高5%的工資。UPDATE 職工 SET 工資=工資*1.05 WHERE 工資<(SELECT AVG(工資) FROM 職工)5. SQL要嵌入到宿主語言中使用要解決哪幾方面的問題?把SQL嵌入到宿主語言中使用必須要解決以下三個方面的問題

28、:1) 嵌入識別問題。宿主語言的編譯程序不能識別SQL語句,所以首要的問題就是要解決如何區(qū)分宿主語言的語句和SQL語句。2) 宿主語言與SQL語言的數(shù)據(jù)交互問題。SQL語句的查詢結(jié)果必須能夠交給宿主語言處理,宿主語言的數(shù)據(jù)也要能夠交給SQL語句使用。3) 宿主語言的單記錄與SQL的多記錄的問題。宿主語言一般一次處理一條記錄,而SQL常常處理的是記錄(元組)的集合,這個矛盾必須解決。6. 試述預編譯的作用。宿主語言的編譯系統(tǒng)不能識別SQL語句。解決這個問題的一般方法是,為SQL語句加一個特殊的前綴,在用宿主語言的編譯系統(tǒng)編譯源程序之前,首先由預編譯系統(tǒng)將SQL語句轉(zhuǎn)換為宿主語言的合法函數(shù)調(diào)用。7

29、. 試述游標(Cursor)的作用,并解釋實現(xiàn)此功能的諸條語句的用途。宿主語言一般只能在單記錄方式下工作,即一次處理一個記錄。而SQL語句的查詢結(jié)果常常是一張表,它包含多個記錄,為此需要用游標(CURSOR)作為橋梁做一些特殊處理,即利用游標來臨時存放SQL語句的查詢結(jié)果,并利用游標與宿主語言的主變量進行數(shù)據(jù)交互。與游標有關(guān)的命令共有四條:DECLARE CURSOR、OPEN、FETCH和CLOSE。其中DECLARE CURSOR用SQL SELECT語句說明一個游標;OPEN打開游標,即執(zhí)行說明游標的SQL SELECT語句;FETCH從游表中讀一條記錄到主變量;CLOSE關(guān)閉游標。8.

30、 試述為什么需要動態(tài)SQL語句,分析游標和動態(tài)游標的區(qū)別。有時候在編程序時SQL語句或語句的參數(shù)和格式不能確定,應用程序只能在執(zhí)行時才知道需要什么樣的SQL語句,即必須在應用程序執(zhí)行時動態(tài)建立SQL語句。定義游標的SQL語句是靜態(tài)的;而定義動態(tài)游標的SQL語句是動態(tài)生成的。習題六1. 什么是存儲過程?為什么要使用存儲過程?存儲過程是經(jīng)過預編譯的T-SQL語句的集合,它存放在數(shù)據(jù)庫中,當用戶執(zhí)行存儲過程時,存儲過程在數(shù)據(jù)庫服務器上運行。利用存儲過程可以避免在網(wǎng)絡上傳輸大量無用的信息或原始數(shù)據(jù),只需要傳輸調(diào)用存儲過程的指令和數(shù)據(jù)庫服務器返回的處理結(jié)果,這樣可以大大提高網(wǎng)絡數(shù)據(jù)庫應用系統(tǒng)的性能。2.

31、 試為如下問題編寫、建立存儲過程,并定義合適的過程返回狀態(tài)碼和信息(均以圖5-1的數(shù)據(jù)庫為例):1) 插入一個新的供應商元組。CREATE PROCEDURE ins_sup(sno CHAR(3),sname CHAR (16),addr CHAR (10)ASINSERT INTO 供應商 VALUES(sno,sname,addr)IF ERROR = 0 RETURN 0ELSERETURN -12) 給指定城市的所有倉庫增加x m2的面積。CREATE PROCEDURE upd_wh_area(city char(10),area numeric)ASUPDATE 倉庫 SET 面

32、積=面積 + area WHERE 城市=cityIF ERROR = 0 RETURN 0ELSERETURN -13) 檢索某職工發(fā)給某供應商的訂購單信息。CREATE PROCEDURE get_ord(eno CHAR(4),sno CHAR(3)ASSELECT * FROM 訂購單 WHERE 職工號=eno AND 供應商號=snoIF ERROR = 0 RETURN 0ELSERETURN -11.列出向項目J1提供零件P1的供應商號;SELECT SNO FROM SPJ WHERE PNO=P1 AND JNO=J1;2.列出零件號碼,該零件是由供應商提供給在同一城市的工

33、程項目;SELECT UNIQUE PNO FROM S,SPJ,J WHERE S.SNO=SPJ.SNO AND SPJ.JNO=J.JNO AND J.CITY=S.CITY;3.列出供應商號,該供應商提供了最小號碼的紅色零件;SELECT SNO FROM SPJ WHERE PNO=(SELECT MIN(PNO) FROM P WHERE COLOR=RED);4.列出供應商號碼,該供應商至少提供一種由提供了紅色零件的供應商提供的零件;SELECT UNIQUE SNO FROM SPJ WHERE PNO IN (SELECT PNO FROM SPJ WHERE SNO IN

34、(SELECT SNO FROM SPJ WHERE PNO IN (SELECT PNO FROM P WHERE COLOR=COLOR);5.列出在工程項目J1中由一個以上供應商提供的零件號碼.SELECT PNO FROM SPJ WHERE JNO=J1 GROUP BY PNO HAVING COUNT(*)>1;4) 檢索在某城市工作并且向某供應商發(fā)了訂購單的職工號。CREATE PROCEDURE get_eno(city CHAR(10),sno CHAR(3)ASSELECT 職工號 FROM 職工 WHERE 倉庫號 IN (SELECT 倉庫號 FROM 倉庫 W

35、HERE 城市=city) AND 職工號 IN(SELECT 職工號 FROM 訂購單 WHERE 供應商號=sno)IF ERROR = 0 RETURN 0ELSERETURN 13. 試述觸發(fā)器的概念和作用。觸發(fā)器可以看作是一類特殊的存儲過程,它在滿足某個特定條件時自動觸發(fā)執(zhí)行。觸發(fā)器是為表上的更新、插入、刪除操作定義的,也就是說當表上發(fā)生更新、插入或刪除操作時觸發(fā)器將執(zhí)行。觸發(fā)器可以用于數(shù)據(jù)參照完整性和以下一些場合:s 觸發(fā)器可以通過級聯(lián)的方式對相關(guān)的表進行修改。比如,對父表的修改,可以引起對子孫表的一系列修改,從而保證數(shù)據(jù)的一致性和完整性。s 觸發(fā)器可以禁止或撤消違反參照完整性的修

36、改。s 觸發(fā)器可以強制比用CHECK約束定義更加復雜的限制。4. 利用觸發(fā)器為圖5-1數(shù)據(jù)庫的訂購單關(guān)系建立參照完整性。建立插入觸發(fā)器CREATE TRIGGER ord_ins_triggerON 訂購單 FOR INSERTASIF (SELECT COUNT(*) FROM 職工 e,INSERTED i WHERE e.職工號=i.職工號)=0 OR(SELECT COUNT(*) FROM 供應商 s,INSERTED i WHERE s.供應商號=i. 供應商號)=0)BEGINRAISERROR ('非法職工號或非法供應商號', 1, 1)ROLLBACK TRA

37、NSACTIONEND建立更新觸發(fā)器略習題七1. 討論數(shù)據(jù)庫安全都與哪些安全問題有關(guān)?數(shù)據(jù)庫安全實際涉及到很多方面,除了數(shù)據(jù)庫管理系統(tǒng)應該具有安全保護功能之外,還需要從管理機制、人員行為、操作系統(tǒng)安全和網(wǎng)絡安全等多個方面采取措施。2. 試述數(shù)據(jù)庫的自主存取控制和強制存取控制的區(qū)別和各自的特點。自主存取控制的特點是由用戶“自主”地控制數(shù)據(jù)庫對象的訪問權(quán)限;而強制存取控制的特點是嚴格的分層次管理,有嚴格的等級制度。3. 試述角色管理在數(shù)據(jù)庫安全控制中的作用。角色管理類似于用戶組的管理,可以將數(shù)據(jù)庫的所有用戶劃分成不同的角色,這樣可以簡化用戶管理,使用戶管理和權(quán)限管理更加簡潔、清楚。4. 試述SQL

38、 Server的系統(tǒng)預定義角色為安全管理提供了哪些便利。SQL Server的系統(tǒng)管理是由系統(tǒng)管理員(默認是sa用戶)負責的,而系統(tǒng)預定義角色正是系統(tǒng)管理員職責的分解,通過一些系統(tǒng)預定義角色的用戶來協(xié)助系統(tǒng)管理員進行管理,可以減輕系統(tǒng)管理員(sa用戶)的工作負擔,對系統(tǒng)管理來說又有更明確的職責劃分。5. 試述語句授權(quán)和對象授權(quán)各自的含義和作用。語句授權(quán)是指對執(zhí)行創(chuàng)建數(shù)據(jù)庫對象的語句的授權(quán),這種權(quán)限一般歸系統(tǒng)管理員(sa)或數(shù)據(jù)庫管理員(DBO)管理;對象授權(quán)是指對可以在數(shù)據(jù)庫對象執(zhí)行的操作的授權(quán),這種權(quán)限一般由數(shù)據(jù)庫對象擁有者(DBOO)管理,也可以由系統(tǒng)管理員(sa)或數(shù)據(jù)庫管理員(DBO)

39、管理。6. 試述GRANT語句中WITH GRANT OPTION子句的作用。WITH GRANT OPTION子句說明被授權(quán)用戶可以將指定的對象權(quán)限授予其他用戶。該子句僅對對象權(quán)限有效,對語句權(quán)限無效。7. 試述在REVOKE語句中GRANT OPTION FOR子句和CASCADE子句的作用。GRANT OPTION FOR說明只收回WITH GRANT OPTION權(quán)限;CASCADE說明級聯(lián)收回由于WITH GRANT OPTION授予的所有權(quán)限。GRANT OPTION FOR要與CASCADE一同使用,因為要收回WITH GRANT OPTION權(quán)限,也應該一同收回由于該子句產(chǎn)生的

40、所有授權(quán)。8. 試述禁止權(quán)限語句DENY的作用。禁止權(quán)限語句DENY的作用是禁止用戶從角色繼承指定的權(quán)限。9. 什么是數(shù)據(jù)庫的審計功能?系統(tǒng)管理員(或數(shù)據(jù)庫管理員)可以通過審計日志審計、跟蹤所有用戶對數(shù)據(jù)庫的操作活動,可以確定哪些客戶、什么時間、進行了哪些操作(任何操作)等,這種功能稱作數(shù)據(jù)庫的審計功能。10. 統(tǒng)計數(shù)據(jù)庫有哪些特殊的安全性問題?統(tǒng)計數(shù)據(jù)庫的安全性問題主要是指不允許從統(tǒng)計信息推導出名細信息。習題八1. 什么是事務?事務是構(gòu)成單一邏輯工作單元的操作集合。2. 解釋事務的ACID性質(zhì)。事務的ACID性質(zhì)指事務具有原子性(即不可分割)、一致性(要能保證數(shù)據(jù)庫的一致性)、隔離性(事務的

41、原子性和一致性不受其他事務的影響)和持久性(事務對數(shù)據(jù)庫所施加的所有更新都是永久的)。3. 并發(fā)控制都會產(chǎn)生哪些干擾問題?并討論之。并發(fā)事務可能會存在的干擾問題主要有:s 丟失更新問題s 未提交依賴問題s 不一致分析問題s 幻象讀問題討論略。4. 請舉出兩個并發(fā)的程序進行更新操作時相互干擾的例子。略5. 利用事務概念和封鎖技術(shù)重做第4題,使干擾不發(fā)生。略6. 分別解釋共享封鎖、更新封鎖和獨占封鎖的含義。共享封鎖是為讀操作設置的一種封鎖,目的是想讀到一組不變的數(shù)據(jù),也就是在讀數(shù)據(jù)的過程中,不允許其他用戶對該數(shù)據(jù)進行任何修改操作。這種封鎖可以保證最大的并發(fā)性,任何數(shù)量的用戶都可以同時對同樣的數(shù)據(jù)施

42、加這種共享鎖。當需要對一個記錄或一組記錄進行更新時(只是修改,不包括插入和刪除)使用更新封鎖,該封鎖的目的是防止其他用戶在同一時刻修改同一記錄。已經(jīng)實施更新封鎖的記錄,拒絕來自其他用戶的更新封鎖或獨占封鎖。獨占封鎖也叫排他封鎖,這是最嚴格的一類封鎖。當需要對表實施插入、刪除或修改操作時,應該使用獨占封鎖。已經(jīng)實施獨占封鎖的表,拒絕來自其他用戶的任何封鎖,但不拒絕其他用戶的一般讀操作。7. 什么是死鎖?如何避免發(fā)生死鎖?當兩個(或多個)并發(fā)的事務分別等待對方釋放封鎖的資源,而使事務處于長期等待狀態(tài)的現(xiàn)象稱為死鎖。為了避免死鎖,一般可以采取兩種方式:s 相同順序法:所有的事務約定都按相同的順序來封

43、鎖表;s 一次封鎖法:為了完成一個事務,一次性封鎖所需要的全部表。8. 什么是事務的隔離性?如何劃分事務的隔離級別?事務的隔離性是指一個事務應該與其他事務“隔離”,它在完成過程中不受其他事務的影響和干擾。“隔離”則意味著并發(fā)程度的降低。為了既能保證數(shù)據(jù)的一致性、又盡可能提高系統(tǒng)的并發(fā)執(zhí)行效率,為此將隔離級別劃分為如下4個級別:s 未提交讀(READ UNCOMMITTED):事務隔離的最低級別,僅可保證不讀取物理損壞的數(shù)據(jù),這是4個隔離級別中限制最小的級別。s 提交讀(READ COMMITTED):可以保證不讀取“臟”數(shù)據(jù)。s 可重復讀(REPEATABLE READ):可以保證讀一致性,避

44、免不一致分析問題。s 可串行化(SERIALIZABLE):事務隔離的最高級別,事務之間完全隔離;如果事務在可串行化隔離級別上運行,則可以保證任何并發(fā)重疊事務均是串行的。9. 試敘述在備份與恢復技術(shù)中數(shù)據(jù)庫日志的作用。日志則是對備份的補充,它可以看作是一個值班日記,它將記錄下所有對數(shù)據(jù)庫的更新操作。這樣就可以在備份完成時立刻刷新并啟用一個數(shù)據(jù)庫日志,數(shù)據(jù)庫日志是實時的,它將忠實地記錄下所有對數(shù)據(jù)庫的更新操作。因此,當磁盤出現(xiàn)故障造成數(shù)據(jù)庫損壞時,就可以首先利用備份恢復數(shù)據(jù)庫(恢復大部分數(shù)據(jù)),然后再運行數(shù)據(jù)庫日志,即將備份后所做的更新操作再重新做一遍,從而將數(shù)據(jù)庫完全恢復。10. 試述在SQL

45、 Server中利用文件和文件組備份為數(shù)據(jù)庫恢復提供了什么樣的便利?利用文件和文件組進行備份,則當建立數(shù)據(jù)庫的某個物理存儲介質(zhì)出現(xiàn)故障時,可以只恢復發(fā)生故障的存儲介質(zhì)上的物理文件或文件組,而不需要恢復整個數(shù)據(jù)庫,這可以大大縮短數(shù)據(jù)庫恢復所需要的時間。11. 針對不同的故障類型(事務故障和介質(zhì)故障),試討論恢復的策略和方法。略12. 試討論備份系統(tǒng)數(shù)據(jù)庫的重要性。系統(tǒng)數(shù)據(jù)庫(在SQL Server上特別是master數(shù)據(jù)庫)是管理用戶數(shù)據(jù)庫的數(shù)據(jù)庫,如果系統(tǒng)數(shù)據(jù)庫一旦損壞,整個系統(tǒng)的使用都將受到影響。所以系統(tǒng)數(shù)據(jù)庫的安全和可靠是用戶數(shù)據(jù)庫可以正常使用的基礎。習題九1. 理解、定義如下術(shù)語,并分別

46、給出兩個例子:函數(shù)依賴、部分函數(shù)依賴、完全函數(shù)依賴、傳遞函數(shù)依賴、主屬性。略2. 找出圖5-1所示數(shù)據(jù)庫各個關(guān)系中的函數(shù)依賴。倉庫關(guān)系上的函數(shù)依賴:倉庫號城市,倉庫號面積職工關(guān)系上的函數(shù)依賴:職工號倉庫號,職工號工資訂購單關(guān)系上的函數(shù)依賴:訂購單號職工號,訂購單號供應商號,訂購單號訂購日期供應商關(guān)系上的函數(shù)依賴:供應商號供應商名,供應商名供應商號,供應商號地址,供應商名地址3. 試證明如下結(jié)論(引理9.1):XA1A2An的充分必要條件是XAk成立(k=1,2, ,n)。證明:略4. 設有關(guān)系模式R(U,F),U=A,B,C,D,E,F(xiàn)=ABE,DEB,BC,CE,EA1) 計算所有函數(shù)依賴左

47、部關(guān)于函數(shù)依賴集F的屬性集閉包;(AB)+=A,B,C,E(DE)+=A,B,C,D,EB+=A,B,C,EC+=A,C,EE+=A,E2) 確定關(guān)系模式R上的所有侯選關(guān)鍵字;DE3) 求F的所有最小覆蓋。Fm=F-AB->E5. 假設有一個名為參加的關(guān)系,該關(guān)系有屬性:職工(職工名)、工程(工程名)、時數(shù)(花費在工程上的小時數(shù))和工資(職工的工資);一個參加記錄描述一個職工花費在一個工程上的總時數(shù)和他的工資;另外,一個職工可以參加多個工程,多個職工可以參加同一個工程。請回答如下各問題:用A、B、C、D分別代表屬性職工、工程、時數(shù)和工資,則:1) 確定這個關(guān)系的關(guān)鍵字;AB2) 找出這個

48、關(guān)系中的所有函數(shù)依賴;AB->C , A->D3) 指出這個關(guān)系上的哪些函數(shù)依賴會帶來操作異?,F(xiàn)象;D對關(guān)鍵字AB的部分函數(shù)依賴可能會帶來如下問題:數(shù)據(jù)冗余:一個職工參加多個工程,則職工的工資值會重復;更新異常:當改變職工的工資時,可能會只修改了一部分,從而造成數(shù)據(jù)不一致;插入異常:當一個職工尚未承擔工程,但要插入職工信息(如工資)則不允許(因為沒有完整的關(guān)鍵字);刪除異常:當某個工程結(jié)束,刪除工程信息時,可能會將職工信息(如工資)一同刪除(如果職工只參加了一項工程)。4) 這個關(guān)系是第幾范式關(guān)系?2NF5) 計算該關(guān)系上函數(shù)依賴集的最小覆蓋;Fm=AB->C, A->

49、D6) 將該關(guān)系分解成盡可能高的范式,并指明是第幾范式?分解為R1(A,B,C)和R2(A,D)結(jié)果為4NF6. 一個關(guān)系有4個字段A、B、C、D,這里A和B構(gòu)成復合關(guān)鍵字,問滿足下列函數(shù)依賴的關(guān)系是第幾范式?1) A、B、C、D都函數(shù)依賴于AB。BCNF或4NF2) A、B、C、D都函數(shù)依賴于AB,而D還函數(shù)依賴于C。2NF3) A、B、C、D都函數(shù)依賴于AB,而D還函數(shù)依賴于B。1NF4) A、B、C、D都函數(shù)依賴于AB,而B還函數(shù)依賴于C。3NF7. 設有關(guān)系模式R(A, B, C, D, E),并有函數(shù)依賴ABD, ACE, BCD,DA,EB,現(xiàn)將R分解成關(guān)系模式S(A, B, C)

50、和其他一些關(guān)系模式,請給出在關(guān)系模式S上成立的函數(shù)依賴。ACB,BCA習題十1. 試敘述概念數(shù)據(jù)庫設計和邏輯數(shù)據(jù)庫設計的區(qū)別,并說明各自的主要工作內(nèi)容。概念數(shù)據(jù)庫設計是不依賴于任何數(shù)據(jù)庫管理系統(tǒng)的,它是對用戶信息需求的歸納。概念設計的結(jié)果得到的是數(shù)據(jù)庫的概念結(jié)構(gòu),或稱概念數(shù)據(jù)模型,由于它是從現(xiàn)實世界的角度進行的抽象和描述,所以與具體的硬件環(huán)境和軟件環(huán)境均無關(guān)。而在邏輯數(shù)據(jù)庫首先要考慮實現(xiàn)數(shù)據(jù)庫的數(shù)據(jù)庫管理系統(tǒng)所支持的數(shù)據(jù)模型是什么,并將概念數(shù)據(jù)模型轉(zhuǎn)換為數(shù)據(jù)庫管理系統(tǒng)支持的數(shù)據(jù)模型。一般在概念設計階段主要工作內(nèi)容有:s 確定實體;s 確定實體的屬性;s 確定實體的標識屬性(關(guān)鍵字);s 確定實

51、體間的聯(lián)系和聯(lián)系類型;s 確定實現(xiàn)實體間聯(lián)系的屬性(外部關(guān)鍵字或連接屬性);s 畫出表示概念模型的E-R圖;除此之外,為了以后對模式進行規(guī)范化,還需要:s 確定屬性間的依賴關(guān)系。而在邏輯設計階段一般主要工作內(nèi)容有:s 確定各個關(guān)系模式的主關(guān)鍵字,考慮實體完整性;s 確定各個關(guān)系模式的外部關(guān)鍵字,考慮參照完整性;s 確定各個關(guān)系模式中屬性的約束、規(guī)則和默認值,考慮域完整性;s 根據(jù)用戶需求設計視圖;s 考慮安全方案和用戶使用權(quán)限等。2. 物理數(shù)據(jù)庫設計主要包括哪些內(nèi)容?物理數(shù)據(jù)庫設計的內(nèi)容是設計數(shù)據(jù)庫的存儲結(jié)構(gòu)和物理實現(xiàn)方法。一般包括如下內(nèi)容:s 估算數(shù)據(jù)庫的數(shù)據(jù)存儲量;s 設計數(shù)據(jù)庫設備;s

52、安排數(shù)據(jù)庫的存儲;s 設計索引;s 設計備份策略等。3. 到Sybase公司的網(wǎng)站()下載PowerDesigner的試用版,實踐利用PowerDesigner進行數(shù)據(jù)庫建模的方法和過程。略習題十一1. 面向?qū)ο髷?shù)據(jù)庫是在什么背景下產(chǎn)生的?為什么需要面向?qū)ο髷?shù)據(jù)庫?在信息管理領域之外還有很多新的應用領域迫切需要使用數(shù)據(jù)庫,如計算機輔助設計(CAD)、多媒體技術(shù)(音頻、視頻文件的存儲和處理)等,這些應用往往需要存儲大量的復雜類型的數(shù)據(jù),同時面向?qū)ο蟮母拍詈图夹g(shù)也強烈地引發(fā)了數(shù)據(jù)庫對復雜數(shù)據(jù)類型的支持,從而推動了面向?qū)ο髷?shù)據(jù)庫的發(fā)展。由于關(guān)系數(shù)據(jù)庫不直接支持復雜數(shù)據(jù)類型,致使一些必須使用復雜數(shù)據(jù)類

53、型的應用實現(xiàn)起來不是很方便、并且效率較低。另外關(guān)系模型也不支持構(gòu)造類型和繼承,這都使得人們希望發(fā)展面向?qū)ο蟮臄?shù)據(jù)庫。2. 什么是對象的封裝性、繼承性和多態(tài)性?封裝性是指將類的數(shù)據(jù)和操作封裝在類定義中,對用戶來講類的“功能”是可見的,而實現(xiàn)部分是封裝在類定義中的,用戶是看不見的。這種封閉性保證了每個對象的實現(xiàn)都獨立于其他對象的細節(jié),從而有利于保證軟件的質(zhì)量。繼承性是指可以利用已有的類去定義新的類。如果根據(jù)類A定義類B,則說類B繼承了類A,同時把類A稱作基類,把類B稱作子類。子類不僅可以繼承基類的所有性質(zhì),還可以在子類中定義新的性質(zhì)。繼承性使得基類中的代碼可以共享和重用,所以繼承性有助于軟件可重用

54、性的實現(xiàn)。多態(tài)性是指同一個函數(shù)可以有多種作用,即: 同一個函數(shù)根據(jù)不同的引用對象可以完成不同的功能; 同一個函數(shù)即便引用同一個對象,但由于傳遞的參數(shù)不同也可以完成不同的功能。多態(tài)性可以為整個應用和所有對象內(nèi)部提供一個一致的接口,沒有必要為相同的動作命名和編寫不同的函數(shù),它完全可以根據(jù)引用的對象不同、傳遞的消息不同來完成不同的功能。這樣做也與現(xiàn)實世界中管理和運作方法相吻合。3. 面向?qū)ο髷?shù)據(jù)庫的研究方法主要有哪些?面向?qū)ο髷?shù)據(jù)庫的研究方法目前主要有以下三種:s 擴充關(guān)系數(shù)據(jù)模型。將成熟的關(guān)系數(shù)據(jù)庫與面向?qū)ο髷?shù)據(jù)庫方法結(jié)合起來,可減少研制工作量、縮短研制周期。這種方法的弱點是不能全面支持面向?qū)ο蟮?/p>

55、特征。s 在面向?qū)ο笳Z言中嵌入數(shù)據(jù)庫功能而形成面向?qū)ο髷?shù)據(jù)庫。該方法的關(guān)鍵是如何在面向?qū)ο笳Z言中增加持久性對象的存儲管理。使用此方法受到面向?qū)ο笳Z言的一些限制。s 開發(fā)全新的數(shù)據(jù)模型,從底層實現(xiàn)面向?qū)ο髷?shù)據(jù)庫系統(tǒng)。這是最徹底的方法,缺點是難度大,一方面缺乏統(tǒng)一的數(shù)據(jù)模式及形式化理論,另一方面在查詢優(yōu)化、視圖及數(shù)據(jù)庫工具方面仍為空白。4. 面向?qū)ο髷?shù)據(jù)庫應該具備哪些基本特征?一個面向?qū)ο髷?shù)據(jù)庫系統(tǒng)應該具備如下的基本內(nèi)容和特征:s 在數(shù)據(jù)模型方面支持對象、復合對象、封裝、類、繼承、重載、滯后聯(lián)編、多態(tài)性等基本概念。其中復合對象的概念包括支持生成復合對象的構(gòu)造器(元組、集合、包、列表、數(shù)組等)。s

56、數(shù)據(jù)庫管理系統(tǒng)除了具有傳統(tǒng)的數(shù)據(jù)庫管理系統(tǒng)所具有的功能(如并發(fā)控制、故障和恢復)外,還支持永久對象、長事務處理和嵌套事務,具有版本管理和模式演化的能力,能維護數(shù)據(jù)完整性,適合在分布式環(huán)境下工作。s 數(shù)據(jù)庫訪問界面要支持消息傳遞,提供計算能力完備的數(shù)據(jù)庫程序設計語言,能解決數(shù)據(jù)庫語言與宿主語言的某些不匹配問題,提供類似SQL的非過程化查詢功能。5. SQL99支持ORDBMS、還是OODBMS?SQL99支持的是ORDBMS。6. 比較RDBMS、ORDBMS和OODBMS,然后分別描述一個適合使用RDBMS、ORDBMS和OODBMS的應用,并說明原因。略習題十二1. 解釋ODBC的概念。ODBC(O

溫馨提示

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

評論

0/150

提交評論