




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、·28·數據庫系統及應用習題解答數據庫系統及應用(第二版)習題解答習題一1. 什么是數據庫?數據庫是相互關聯的數據的集合,它用綜合的方法組織數據,具有較小的數據冗余,可供多個用戶共享,具有較高的數據獨立性,具有安全控制機制,能夠保證數據的安全、可靠,允許并發地使用數據庫,能有效、及時地處理數據,并能保證數據的一致性和完整性。2. 簡要概述數據庫、數據庫管理系統和數據庫系統各自的含義。數據庫、數據庫管理系統和數據庫系統是三個不同的概念,數據庫強調的是相互關聯的數據,數據庫管理系統是管理數據庫的系統軟件,而數據庫系統強調的是基于數據庫的計算機應用系統。3. 數據獨立性的含義是什
2、么?數據獨立性是指數據的組織和存儲方法與應用程序互不依賴、彼此獨立的特性。這種特性使數據的組織和存儲方法與應用程序互不依賴,從而大大降低應用程序的開發代價和維護代價。4. 數據完整性的含義是什么?保證數據正確的特性在數據庫中稱之為數據完整性。5. 簡要概述數據庫管理員的職責。數據庫管理員的職責可以概括如下:(1) 首先在數據庫規劃階段要參與選擇和評價與數據庫有關的計算機軟件和硬件,要與數據庫用戶共同確定數據庫系統的目標和數據庫應用需求,要確定數據庫的開發計劃;(2) 在數據庫設計階段要負責數據庫標準的制定和共用數據字典的研制,要負責各級數據庫模式的設計,負責數據庫安全、可靠方面的設計;(3)
3、在數據庫運行階段首先要負責對用戶進行數據庫方面的培訓;負責數據庫的轉儲和恢復;負責對數據庫中的數據進行維護;負責監視數據庫的性能,并調整、改善數據庫的性能,提高系統的效率;繼續負責數據庫安全系統的管理;在運行過程中發現問題、解決問題。6. 文件系統用于數據管理存在哪些明顯的缺陷?文件系統用于數據管理明顯存在如下缺陷:(1) 數據冗余大。這是因為每個文件都是為特定的用途設計的,因此就會造成同樣的數據在多個文件中重復存儲。(2) 數據不一致性。這往往是由數據冗余造成的,在進行更新時,稍不謹慎就會造成同一數據在不同文件中的不一致。(3) 程序和數據之間的獨立性差。應用程序依賴于文件的存儲結構,使得若
4、修改文件的存儲結構則必須修改程序。(4) 數據聯系弱。文件與文件之間是獨立的,文件之間的聯系必須通過程序來構造。因此,文件系統是一個不具有彈性的、無結構的數據集合,不能反映現實世界事物之間的聯系。習題二1. 數據的三種范疇的含義是什么?數據需要我們的認識、理解、整理、規范和加工,然后才能存放到數據庫中。數據從現實生活進入到數據庫實際經歷了現實世界階段(認識、理解)、信息世界階段(規范、提升)和機器世界階段(管理),我們也把之稱為數據的三種范疇,數據在三種范疇中的概念、術語都有些不同。2. 對以下問題分析實體之間的聯系,并分別畫出E-R圖:略3. 試述為什么要討論實體之間的聯系類型?實體之間的聯
5、系類型決定了數據庫設計時的結果,與數據庫的設計質量密切相關。4. 多對多聯系如何轉換成一對多聯系?并舉例說明。通過引入一個表示聯系的實體,將原來兩個實體之間的一個多對多的聯系轉換成分別與表示聯系的實體之間的兩個一對多的聯系。例如,倉庫和材料兩個實體之間存在著多對多的聯系,即一個倉庫可以存放多種材料,一種材料可以存放在多個倉庫;通過引入一個庫存實體轉換為倉庫與庫存之間的一對多聯系和材料與庫存之間的一對多聯系。5. 解釋連接陷阱的概念,在操作數據庫時如何避免連接陷阱?所謂連接陷阱就是誤認為本來不存在聯系的兩個實體之間存在聯系,從而強行進行連接操作,自然得到錯誤的結果。為了避免連接陷阱,必須明確實體
6、之間的聯系和聯系類型,只在有聯系的實體之間進行關聯操作。6. 傳統的三大數據模型是哪些?它們分別是如何表示實體之間的聯系的?傳統的三大數據模型是層次模型、網狀模型和關系模型。層次模型用層次結構表示聯系,它的典型代表IMS用層次型表示聯系;網狀模型用網狀結構表示聯系,它的典型代表CODASYL用系表示聯系;關系模型用關系表示聯系。7. 解釋存儲數據獨立性和概念數據獨立性的區別。存儲數據獨立性強調的是應用程序與數據的存儲結構相互獨立的特性,即修改數據的存儲方法或數據結構時不影響應用程序;而概念數據獨立性強調的是應用程序與數據的概念結構相互獨立的特性,即修改概念結構中的字段時不影響應用程序。8. 為
7、什么說概念數據庫和外部數據庫物理上并不真正存在?只有存儲數據庫是物理上存在的數據庫,概念數據庫是存儲數據庫的抽象,它反映了數據庫的全局邏輯結構;而外部數據庫是概念數據庫的部分抽取,它反映了數據庫的局部邏輯結構。9. 說明在DBMS中存儲模式、概念模式和外部模式的作用。存儲模式描述了數據庫的存儲結構,它包括對存儲數據庫中每個文件以及字段的描述,包括用于實現輔助關鍵字或存儲文件間聯系的指針字段的細節。存儲數據庫利用存儲模式組織和存取存儲數據庫中的文件。如果要修改存儲數據庫的結構(例如,用倒排文件代替多鏈表),那么僅僅需要把這些修改反映在存儲模式中,以使數據庫存儲系統能夠操作新的存儲數據庫。按這種方
8、法,數據庫管理系統可以提供存儲(物理)數據獨立性。概念模式是對概念數據庫的描述,它包括對概念文件及概念文件之間聯系的描述。概念數據庫不包含真正的數據,一切都是由存儲數據庫決定的。外部模式則是對外部數據庫的描述,它需要說明外部文件、構成外部文件的字段及這些外部文件之間的聯系。數據庫管理系統提供了外部模式與概念模式之間的映象以及概念模式與存儲模式之間的映象,使用戶通過外部數據庫或概念數據庫來操作存儲數據庫。習題三1. 解釋屬性與值域的區別。屬性是二維表中的列,而值域是列或屬性的取值范圍。2. 關系模型的三個組成部分是什么?關系數據模型包括關系數據結構、關系操作集合和關系完整性約束三個重要因素。3.
9、 對關系模型的操作都包括哪些?關系數據模型中的操作包括:(1) 傳統的集合運算:并(Union)、交(Intersection)、差(Difference)、廣義笛卡爾積(Extended Cartesian Product);(2) 專門的關系運算:選擇(Select)、投影(Project)、連接(Join)、除(Divide);(3) 有關的數據操作:查詢(Query)、插入(Insert)、刪除(Delete)、修改(Update)。4. 關系模型的完整性規則都有哪些?在關系數據模型中一般將數據完整性分為實體完整性、參照完整性和用戶定義完整性。5. 試述外部關鍵字的概念和作用,外部關鍵
10、字是否允許為空值,為什么?如果一個屬性集不是所在關系的關鍵字,但是是其他關系的關鍵字,則該屬性集稱為外部關鍵字。外部關鍵字用于實現表與表之間的參照完整性。外部關鍵字是否允許為空值取決于語義的規定。外部關鍵字的取值或者為空值、或者為被參照關系中的某個關鍵字字段的值。6. 分別敘述在進行插入、刪除、更新操作時都需要進行哪些完整性檢查,并說明理由。(1) 執行插入操作時需要分別檢查實體完整性規則、參照完整性規則和用戶定義完整性規則。首先檢查實體完整性規則,如果插入元組的主關鍵字的屬性不為空值、并且相應的屬性值在關系中不存在(即保持唯一性),則可以執行插入操作,否則不可以執行插入操作。接著再檢查參照完
11、整性規則,如果是向被參照關系插入元組,則無須檢查參照完整性;如果是向參照關系插入元組,則要檢查外部關鍵字屬性上的值是否在被參照關系中存在對應的主關鍵字的值,如果存在則可以執行插入操作,否則不允許執行插入操作。另外,如果插入元組的外部關鍵字允許為空值,則當外部關鍵字是空值時也允許執行插入操作。最后檢查用戶定義完整性規則,如果插入的元組在相應的屬性值上遵守了用戶定義完整性規則,則可以執行插入操作,否則不可以執行插入操作。(2) 執行刪除操作時一般只需要檢查參照完整性規則。如果刪除的是參照關系的元組,則不需要進行參照完整性檢查,可以執行刪除操作。如果刪除的是被參照關系的元組,則檢查被刪除元組的主關鍵
12、字屬性的值是否被參照關系中某個元組的外部關鍵字引用,如果未被引用則可以執行刪除操作;否則可能有三種情況:1) 不可以執行刪除操作,即拒絕刪除;2) 可以刪除,但需同時將參照關系中引用了該元組的對應元組一起刪除,即執行級聯刪除;3) 可以刪除,但需同時將參照關系中引用了該元組的對應元組的外部關鍵字置為空值,即空值刪除。(3) 執行更新操作可以看作是先刪除舊的元組,然后再插入新的元組。所以執行更新操作時的完整性檢查綜合了上述兩種情況。7. 試述關系的自然連接和等值連接的異同之處。自然連接和等值連接都是基于相等比較運算的連接,但是自然連接要去掉重復的屬性,而等值連接卻不需要去掉重復的屬性。8. 以圖
13、3-6的數據庫為例(可參照圖5-1,該數據庫的實例),用關系代數完成以下檢索:注意:此處暫以 * 表示連接運算符。1) 檢索在倉庫WH2工作的職工的工資。職工號,工資(倉庫號="WH2"(職工)2) 檢索在上海工作的職工的工資。職工號,工資(城市="上海"(倉庫) * 職工)3) 檢索北京的供應商的名稱。供應商名(地址="北京"(供應商)4) 檢索目前與職工E6有業務聯系的供應商的名稱。供應商名(職工號="E6"(訂購單) * 供應商)5) 檢索所有職工的工資都大于1220元的倉庫所在的城市。城市(倉庫) -城市(
14、工資<=1220(職工) * 倉庫)6) 檢索和北京的所有供應商都有業務聯系的職工的工資。職工號,工資(職工 * (訂購單÷供應商號(地址="北京"(供應商)7) 檢索至少和職工E1、E4、E7都有聯系的供應商的名稱。供應商名(訂購單÷(“E1”,”E4”,”E7”) * 供應商)9. 試述關系數據庫系統的三層模式結構。略習題四1. 簡述客戶/服務器結構的概念,并說明客戶/服務器結構與文件服務器網絡結構的區別??蛻?服務器結構的基本思想是應用程序或應用邏輯可以根據需要劃分在服務器和客戶工作站中,它既不像集中式系統那樣所有的應用程序都在主機上執行,也
15、不像文件服務器網絡那樣所有的應用程序都在客戶端執行,它可以使應用程序合理負擔在服務器和客戶端??蛻?服務器結構與文件服務器網絡結構的硬件拓撲結構很相似,它們的根本區別在于:客戶/服務器結構的服務器可以執行應用程序;而文件服務器的服務器只是一個數據共享器,它不能執行應用程序。2. 在客戶/服務器結構中,數據庫服務器和客戶端計算機是如何分工的?數據庫服務器應完成數據管理、信息共享、安全管理、以及一些更高級的管理。它是一個開放的體系結構,可以接受來自各種應用程序和開發工具的客戶端的連接;它除了要管理集中的數據庫之外,還要處理來自客戶端的數據訪問請求和將結果反饋給用戶(包括管理請求隊列、管理緩存、響應
16、服務、管理結果和通知服務完成等)的工作。而客戶端計算機是面向最終用戶的,所以它的主要任務是提供友好的用戶界面,提交數據訪問請求以及接收和處理數據庫的返回結果,組織返回數據的輸出(如生成數據瀏覽窗口、生成數據報表和圖形等),提供初步的數據驗證功能等。3. SQL Server在安裝后默認創建了哪幾個系統數據庫?分別敘述它們的作用。SQL Server在安裝后默認創建了4系統數據庫,它們是:(1) master數據庫。master數據庫用于存儲SQL Server系統的所有系統級信息,包括所有的其它數據庫(如建立的用戶數據庫)的信息(包括數據庫的設置、對應的操作系統文件名稱和位置等)、所有數據庫注
17、冊用戶的信息以及系統配置設置等。(2) tempdb數據庫。tempdb數據庫用于保存所有的臨時表和臨時存儲過程,它還可以滿足任何其它的臨時存儲要求。(3) model 數據庫。model數據庫是一個模板數據庫,當使用CREATE DATABASE命令建立新的數據庫時,新數據庫的第一部分總是通過復制model數據庫中的內容創建,剩余部分由空頁填充。(4) msdb數據庫。msdb數據庫用于SQL Server代理程序調度報警和作業等系統操作。4. 試述SQL Server的CREATE DATABASE命令在創建數據庫時是如何申請物理存儲空間的?通過指定的物理文件名、文件的大小等向操作系統申請
18、物理存儲空間。5. 試述SQL Server企業管理器的功能。略。習題五1. 試概述SQL語言的功能。SQL是一種一體化的語言,它包括了數據定義、數據查詢、數據操縱和數據控制等方面的功能,它可以完成數據庫活動中的全部工作。2. 以圖5-1的數據庫為例,用SQL完成以下檢索: 1) 檢索在北京的供應商的名稱。SELECT * FROM 供應商 WHERE 地址=北京2) 檢索發給供應商S6的訂購單號。SELECT 訂購單號 FROM 訂購單 WHERE 供應商號=S63) 檢索出職工E6發給供應商S6的訂購單信息。SELECT * FROM 訂購單 WHERE 供應商號=S6 AND 職工號=E
19、64) 檢索出向供應商S3發過訂購單的職工的職工號和倉庫號。SELECT 職工號,倉庫號 FROM 職工 WHERE 職工號 IN( SELECT 職工號 FROM 訂購單 WHERE 供應商號=S3 )5) 檢索出目前與S3供應商沒有聯系的職工信息。SELECT * FROM 職工 WHERE 職工號 NOT IN( SELECT 職工號 FROM 訂購單 WHERE 供應商號=S3 )6) 檢索出目前沒有任何訂購單的供應商信息。SELECT * FROM 供應商 WHERE NOT EXISTS( SELECT * FROM 訂購單 WHERE 供應商號=供應商.供應商號 )7) 檢索出和
20、職工E1、E3都有聯系的北京的供應商信息。SELECT * FROM 供應商 WHERE 供應商號 IN( SELECT 供應商號 FROM 訂購單 WHERE 職工號=E1 )AND 供應商號 IN( SELECT 供應商號 FROM 訂購單 WHERE 職工號=E3 )8) 檢索出目前和華通電子公司有業務聯系的每個職工的工資。SELECT 職工號,工資 FROM 職工 WHERE 職工號 IN(SELECT 職工號 FROM 訂購單 WHERE 供應商號 IN(SELECT 供應商號 FROM 供應商 WHERE 供應商名=華通電子公司)9) 檢索出與工資在1220元以下的職工沒有聯系的供
21、應商的名稱。SELECT 供應商名 FROM 供應商 WHERE 供應商號 IN(SELECT 供應商號 FROM 訂購單 WHERE 職工號 NOT IN(SELECT 職工號 FROM 職工 WHERE 工資 < 1220)10) 檢索出向S4供應商發出訂購單的倉庫所在的城市。SELECT 城市 FROM 倉庫 WHERE 倉庫號 IN(SELECT 倉庫號 FROM 職工 WHERE 職工號 IN(SELECT 職工號 FROM 訂購單 WHERE 供應商號=S4)11) 檢索出在上海工作并且向S6供應商發出了訂購單的職工號。SELECT 職工號 FROM 職工 WHERE 倉庫號
22、 IN(SELECT 倉庫號 FROM 倉庫 WHERE 城市=上海) AND 職工號 IN(SELECT 職工號 FROM 訂購單 WHERE 供應商號=S6)12) 檢索出在廣州工作并且只向S6供應商發出了訂購單的職工號。SELECT 職工號 FROM 職工 WHERE 倉庫號 IN(SELECT 倉庫號 FROM 倉庫 WHERE 城市=廣州) AND 職工號 IN(SELECT 職工號 FROM 訂購單 WHERE 供應商號=S6) AND 職工號 NOT IN(SELECT 職工號 FROM 訂購單 WHERE 供應商號!=S6)13) 檢索出由工資多于1230元的職工向北京的供應商
23、發出的訂購單號。SELECT 訂購單號 FROM 訂購單 WHERE 職工號 IN(SELECT 職工號 FROM 職工 WHERE 工資>1230) AND 供應商號 IN(SELECT 供應商號 FROM 供應商 WHERE 地址=北京)14) 檢索出倉庫的個數。SELECT COUNT(*) FROM 倉庫15) 檢索出有最大面積的倉庫信息。SELECT * FROM 倉庫 WHERE 面積=(SELECT MAX(面積) FROM 倉庫)16) 檢索出所有倉庫的平均面積。SELECT AVG(面積) FROM 倉庫17) 檢索出向S4供應商發出訂購單的那些倉庫的平均面積。SELE
24、CT AVG(面積) FROM 倉庫 WHERE 倉庫號 IN(SELECT 倉庫號 FROM 職工 WHERE 職工號 IN(SELECT 職工號 FROM 訂購單 WHERE 供應商號=S4)18) 檢索出每個城市的供應商個數。SELECT 地址,COUNT(*) FROM 供應商 GROUP BY 地址19) 檢索出每個倉庫中工資多于1220元的職工個數。SELECT 倉庫號,COUNT(*) FROM 職工 WHERE 工資>1220 GROUP BY 倉庫號20) 檢索出和面積最小的倉庫有聯系的供應商的個數。SELECT COUNT(*) FROM 供應商 WHERE 供應商號
25、 IN(SELECT 供應商號 FROM 訂購單 WHERE 職工號 IN(SELECT 職工號 FROM 職工 WHERE 倉庫號 IN(SELECT 倉庫號 FROM 倉庫 WHERE 面積=(SELECT MIN(面積) FROM 倉庫)21) 檢索出工資低于本倉庫平均工資的職工信息。SELECT * FROM 職工 out WHERE 工資<(SELECT AVG(工資) FROM 職工 inne WHERE 倉庫號=out.倉庫號)3. 試述關系數據庫中視圖(View)的含義和作用。在關系數據庫中,視圖也稱作窗口,即視圖是操作基本表的窗口。在三層數據庫體系結構中,視圖是外部數據
26、庫,它是從基本表中派生出來的并依賴于基本表,它并不獨立存在。利用視圖一方面可以限定對數據的訪問(對數據列起到安全保護的作用),另一方面又可以簡化對數據的訪問(用戶可以直接通過視圖訪問數據庫)。除此之外,從三層數據庫體系結構的角度它還提供了概念數據獨立性。4. 以圖5-1的數據庫為例,用SQL語句完成以下更新操作,并討論數據完整性約束對這些操作的影響:1) 插入一個新的供應商元組(S9,智通公司,沈陽)。INSERT INTO 供應商 VALUES(S9,智通公司,沈陽)2) 刪除目前沒有任何訂購單的供應商。DELETE FROM 供應商 WHERE 供應商號 NOT IN(SELECT 供應商
27、號 FROM 訂購單)3) 刪除由在上海倉庫工作的職工發出的所有訂購單。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要嵌入到宿主語言中使用要解決哪幾方面的問題?把S
28、QL嵌入到宿主語言中使用必須要解決以下三個方面的問題:1) 嵌入識別問題。宿主語言的編譯程序不能識別SQL語句,所以首要的問題就是要解決如何區分宿主語言的語句和SQL語句。2) 宿主語言與SQL語言的數據交互問題。SQL語句的查詢結果必須能夠交給宿主語言處理,宿主語言的數據也要能夠交給SQL語句使用。3) 宿主語言的單記錄與SQL的多記錄的問題。宿主語言一般一次處理一條記錄,而SQL常常處理的是記錄(元組)的集合,這個矛盾必須解決。6. 試述預編譯的作用。宿主語言的編譯系統不能識別SQL語句。解決這個問題的一般方法是,為SQL語句加一個特殊的前綴,在用宿主語言的編譯系統編譯源程序之前,首先由預
29、編譯系統將SQL語句轉換為宿主語言的合法函數調用。7. 試述游標(Cursor)的作用,并解釋實現此功能的諸條語句的用途。宿主語言一般只能在單記錄方式下工作,即一次處理一個記錄。而SQL語句的查詢結果常常是一張表,它包含多個記錄,為此需要用游標(CURSOR)作為橋梁做一些特殊處理,即利用游標來臨時存放SQL語句的查詢結果,并利用游標與宿主語言的主變量進行數據交互。與游標有關的命令共有四條:DECLARE CURSOR、OPEN、FETCH和CLOSE。其中DECLARE CURSOR用SQL SELECT語句說明一個游標;OPEN打開游標,即執行說明游標的SQL SELECT語句;FETCH
30、從游表中讀一條記錄到主變量;CLOSE關閉游標。8. 試述為什么需要動態SQL語句,分析游標和動態游標的區別。有時候在編程序時SQL語句或語句的參數和格式不能確定,應用程序只能在執行時才知道需要什么樣的SQL語句,即必須在應用程序執行時動態建立SQL語句。定義游標的SQL語句是靜態的;而定義動態游標的SQL語句是動態生成的。習題六1. 什么是存儲過程?為什么要使用存儲過程?存儲過程是經過預編譯的T-SQL語句的集合,它存放在數據庫中,當用戶執行存儲過程時,存儲過程在數據庫服務器上運行。利用存儲過程可以避免在網絡上傳輸大量無用的信息或原始數據,只需要傳輸調用存儲過程的指令和數據庫服務器返回的處理
31、結果,這樣可以大大提高網絡數據庫應用系統的性能。2. 試為如下問題編寫、建立存儲過程,并定義合適的過程返回狀態碼和信息(均以圖5-1的數據庫為例):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
32、 numeric)ASUPDATE 倉庫 SET 面積=面積 + area WHERE 城市=cityIF ERROR = 0 RETURN 0ELSERETURN -13) 檢索某職工發給某供應商的訂購單信息。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
34、PNO FROM SPJ WHERE SNO IN (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) 檢索在某城市工作并且向某供應商發了訂購單的職工號。CREATE PROCEDURE get_eno(city CHAR(10),sno CHAR(3)ASSELECT 職工號 FROM 職工 WHERE 倉庫
35、號 IN (SELECT 倉庫號 FROM 倉庫 WHERE 城市=city) AND 職工號 IN(SELECT 職工號 FROM 訂購單 WHERE 供應商號=sno)IF ERROR = 0 RETURN 0ELSERETURN 13. 試述觸發器的概念和作用。觸發器可以看作是一類特殊的存儲過程,它在滿足某個特定條件時自動觸發執行。觸發器是為表上的更新、插入、刪除操作定義的,也就是說當表上發生更新、插入或刪除操作時觸發器將執行。觸發器可以用于數據參照完整性和以下一些場合:s 觸發器可以通過級聯的方式對相關的表進行修改。比如,對父表的修改,可以引起對子孫表的一系列修改,從而保證數據的一致性
36、和完整性。s 觸發器可以禁止或撤消違反參照完整性的修改。s 觸發器可以強制比用CHECK約束定義更加復雜的限制。4. 利用觸發器為圖5-1數據庫的訂購單關系建立參照完整性。建立插入觸發器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 ('非法職工號或非法供應
37、商號', 1, 1)ROLLBACK TRANSACTIONEND建立更新觸發器略習題七1. 討論數據庫安全都與哪些安全問題有關?數據庫安全實際涉及到很多方面,除了數據庫管理系統應該具有安全保護功能之外,還需要從管理機制、人員行為、操作系統安全和網絡安全等多個方面采取措施。2. 試述數據庫的自主存取控制和強制存取控制的區別和各自的特點。自主存取控制的特點是由用戶“自主”地控制數據庫對象的訪問權限;而強制存取控制的特點是嚴格的分層次管理,有嚴格的等級制度。3. 試述角色管理在數據庫安全控制中的作用。角色管理類似于用戶組的管理,可以將數據庫的所有用戶劃分成不同的角色,這樣可以簡化用戶管理,
38、使用戶管理和權限管理更加簡潔、清楚。4. 試述SQL Server的系統預定義角色為安全管理提供了哪些便利。SQL Server的系統管理是由系統管理員(默認是sa用戶)負責的,而系統預定義角色正是系統管理員職責的分解,通過一些系統預定義角色的用戶來協助系統管理員進行管理,可以減輕系統管理員(sa用戶)的工作負擔,對系統管理來說又有更明確的職責劃分。5. 試述語句授權和對象授權各自的含義和作用。語句授權是指對執行創建數據庫對象的語句的授權,這種權限一般歸系統管理員(sa)或數據庫管理員(DBO)管理;對象授權是指對可以在數據庫對象執行的操作的授權,這種權限一般由數據庫對象擁有者(DBOO)管理
39、,也可以由系統管理員(sa)或數據庫管理員(DBO)管理。6. 試述GRANT語句中WITH GRANT OPTION子句的作用。WITH GRANT OPTION子句說明被授權用戶可以將指定的對象權限授予其他用戶。該子句僅對對象權限有效,對語句權限無效。7. 試述在REVOKE語句中GRANT OPTION FOR子句和CASCADE子句的作用。GRANT OPTION FOR說明只收回WITH GRANT OPTION權限;CASCADE說明級聯收回由于WITH GRANT OPTION授予的所有權限。GRANT OPTION FOR要與CASCADE一同使用,因為要收回WITH GRAN
40、T OPTION權限,也應該一同收回由于該子句產生的所有授權。8. 試述禁止權限語句DENY的作用。禁止權限語句DENY的作用是禁止用戶從角色繼承指定的權限。9. 什么是數據庫的審計功能?系統管理員(或數據庫管理員)可以通過審計日志審計、跟蹤所有用戶對數據庫的操作活動,可以確定哪些客戶、什么時間、進行了哪些操作(任何操作)等,這種功能稱作數據庫的審計功能。10. 統計數據庫有哪些特殊的安全性問題?統計數據庫的安全性問題主要是指不允許從統計信息推導出名細信息。習題八1. 什么是事務?事務是構成單一邏輯工作單元的操作集合。2. 解釋事務的ACID性質。事務的ACID性質指事務具有原子性(即不可分割
41、)、一致性(要能保證數據庫的一致性)、隔離性(事務的原子性和一致性不受其他事務的影響)和持久性(事務對數據庫所施加的所有更新都是永久的)。3. 并發控制都會產生哪些干擾問題?并討論之。并發事務可能會存在的干擾問題主要有:s 丟失更新問題s 未提交依賴問題s 不一致分析問題s 幻象讀問題討論略。4. 請舉出兩個并發的程序進行更新操作時相互干擾的例子。略5. 利用事務概念和封鎖技術重做第4題,使干擾不發生。略6. 分別解釋共享封鎖、更新封鎖和獨占封鎖的含義。共享封鎖是為讀操作設置的一種封鎖,目的是想讀到一組不變的數據,也就是在讀數據的過程中,不允許其他用戶對該數據進行任何修改操作。這種封鎖可以保證
42、最大的并發性,任何數量的用戶都可以同時對同樣的數據施加這種共享鎖。當需要對一個記錄或一組記錄進行更新時(只是修改,不包括插入和刪除)使用更新封鎖,該封鎖的目的是防止其他用戶在同一時刻修改同一記錄。已經實施更新封鎖的記錄,拒絕來自其他用戶的更新封鎖或獨占封鎖。獨占封鎖也叫排他封鎖,這是最嚴格的一類封鎖。當需要對表實施插入、刪除或修改操作時,應該使用獨占封鎖。已經實施獨占封鎖的表,拒絕來自其他用戶的任何封鎖,但不拒絕其他用戶的一般讀操作。7. 什么是死鎖?如何避免發生死鎖?當兩個(或多個)并發的事務分別等待對方釋放封鎖的資源,而使事務處于長期等待狀態的現象稱為死鎖。為了避免死鎖,一般可以采取兩種方
43、式:s 相同順序法:所有的事務約定都按相同的順序來封鎖表;s 一次封鎖法:為了完成一個事務,一次性封鎖所需要的全部表。8. 什么是事務的隔離性?如何劃分事務的隔離級別?事務的隔離性是指一個事務應該與其他事務“隔離”,它在完成過程中不受其他事務的影響和干擾?!案綦x”則意味著并發程度的降低。為了既能保證數據的一致性、又盡可能提高系統的并發執行效率,為此將隔離級別劃分為如下4個級別:s 未提交讀(READ UNCOMMITTED):事務隔離的最低級別,僅可保證不讀取物理損壞的數據,這是4個隔離級別中限制最小的級別。s 提交讀(READ COMMITTED):可以保證不讀取“臟”數據。s 可重復讀(R
44、EPEATABLE READ):可以保證讀一致性,避免不一致分析問題。s 可串行化(SERIALIZABLE):事務隔離的最高級別,事務之間完全隔離;如果事務在可串行化隔離級別上運行,則可以保證任何并發重疊事務均是串行的。9. 試敘述在備份與恢復技術中數據庫日志的作用。日志則是對備份的補充,它可以看作是一個值班日記,它將記錄下所有對數據庫的更新操作。這樣就可以在備份完成時立刻刷新并啟用一個數據庫日志,數據庫日志是實時的,它將忠實地記錄下所有對數據庫的更新操作。因此,當磁盤出現故障造成數據庫損壞時,就可以首先利用備份恢復數據庫(恢復大部分數據),然后再運行數據庫日志,即將備份后所做的更新操作再重
45、新做一遍,從而將數據庫完全恢復。10. 試述在SQL Server中利用文件和文件組備份為數據庫恢復提供了什么樣的便利?利用文件和文件組進行備份,則當建立數據庫的某個物理存儲介質出現故障時,可以只恢復發生故障的存儲介質上的物理文件或文件組,而不需要恢復整個數據庫,這可以大大縮短數據庫恢復所需要的時間。11. 針對不同的故障類型(事務故障和介質故障),試討論恢復的策略和方法。略12. 試討論備份系統數據庫的重要性。系統數據庫(在SQL Server上特別是master數據庫)是管理用戶數據庫的數據庫,如果系統數據庫一旦損壞,整個系統的使用都將受到影響。所以系統數據庫的安全和可靠是用戶數據庫可以正
46、常使用的基礎。習題九1. 理解、定義如下術語,并分別給出兩個例子:函數依賴、部分函數依賴、完全函數依賴、傳遞函數依賴、主屬性。略2. 找出圖5-1所示數據庫各個關系中的函數依賴。倉庫關系上的函數依賴:倉庫號城市,倉庫號面積職工關系上的函數依賴:職工號倉庫號,職工號工資訂購單關系上的函數依賴:訂購單號職工號,訂購單號供應商號,訂購單號訂購日期供應商關系上的函數依賴:供應商號供應商名,供應商名供應商號,供應商號地址,供應商名地址3. 試證明如下結論(引理9.1):XA1A2An的充分必要條件是XAk成立(k=1,2, ,n)。證明:略4. 設有關系模式R(U,F),U=A,B,C,D,E,F=AB
47、E,DEB,BC,CE,EA1) 計算所有函數依賴左部關于函數依賴集F的屬性集閉包;(AB)+=A,B,C,E(DE)+=A,B,C,D,EB+=A,B,C,EC+=A,C,EE+=A,E2) 確定關系模式R上的所有侯選關鍵字;DE3) 求F的所有最小覆蓋。Fm=F-AB->E5. 假設有一個名為參加的關系,該關系有屬性:職工(職工名)、工程(工程名)、時數(花費在工程上的小時數)和工資(職工的工資);一個參加記錄描述一個職工花費在一個工程上的總時數和他的工資;另外,一個職工可以參加多個工程,多個職工可以參加同一個工程。請回答如下各問題:用A、B、C、D分別代表屬性職工、工程、時數和工資
48、,則:1) 確定這個關系的關鍵字;AB2) 找出這個關系中的所有函數依賴;AB->C , A->D3) 指出這個關系上的哪些函數依賴會帶來操作異?,F象;D對關鍵字AB的部分函數依賴可能會帶來如下問題:數據冗余:一個職工參加多個工程,則職工的工資值會重復;更新異常:當改變職工的工資時,可能會只修改了一部分,從而造成數據不一致;插入異常:當一個職工尚未承擔工程,但要插入職工信息(如工資)則不允許(因為沒有完整的關鍵字);刪除異常:當某個工程結束,刪除工程信息時,可能會將職工信息(如工資)一同刪除(如果職工只參加了一項工程)。4) 這個關系是第幾范式關系?2NF5) 計算該關系上函數依賴
49、集的最小覆蓋;Fm=AB->C, A->D6) 將該關系分解成盡可能高的范式,并指明是第幾范式?分解為R1(A,B,C)和R2(A,D)結果為4NF6. 一個關系有4個字段A、B、C、D,這里A和B構成復合關鍵字,問滿足下列函數依賴的關系是第幾范式?1) A、B、C、D都函數依賴于AB。BCNF或4NF2) A、B、C、D都函數依賴于AB,而D還函數依賴于C。2NF3) A、B、C、D都函數依賴于AB,而D還函數依賴于B。1NF4) A、B、C、D都函數依賴于AB,而B還函數依賴于C。3NF7. 設有關系模式R(A, B, C, D, E),并有函數依賴ABD, ACE, BCD,
50、DA,EB,現將R分解成關系模式S(A, B, C)和其他一些關系模式,請給出在關系模式S上成立的函數依賴。ACB,BCA習題十1. 試敘述概念數據庫設計和邏輯數據庫設計的區別,并說明各自的主要工作內容。概念數據庫設計是不依賴于任何數據庫管理系統的,它是對用戶信息需求的歸納。概念設計的結果得到的是數據庫的概念結構,或稱概念數據模型,由于它是從現實世界的角度進行的抽象和描述,所以與具體的硬件環境和軟件環境均無關。而在邏輯數據庫首先要考慮實現數據庫的數據庫管理系統所支持的數據模型是什么,并將概念數據模型轉換為數據庫管理系統支持的數據模型。一般在概念設計階段主要工作內容有:s 確定實體;s 確定實體
51、的屬性;s 確定實體的標識屬性(關鍵字);s 確定實體間的聯系和聯系類型;s 確定實現實體間聯系的屬性(外部關鍵字或連接屬性);s 畫出表示概念模型的E-R圖;除此之外,為了以后對模式進行規范化,還需要:s 確定屬性間的依賴關系。而在邏輯設計階段一般主要工作內容有:s 確定各個關系模式的主關鍵字,考慮實體完整性;s 確定各個關系模式的外部關鍵字,考慮參照完整性;s 確定各個關系模式中屬性的約束、規則和默認值,考慮域完整性;s 根據用戶需求設計視圖;s 考慮安全方案和用戶使用權限等。2. 物理數據庫設計主要包括哪些內容?物理數據庫設計的內容是設計數據庫的存儲結構和物理實現方法。一般包括如下內容:
52、s 估算數據庫的數據存儲量;s 設計數據庫設備;s 安排數據庫的存儲;s 設計索引;s 設計備份策略等。3. 到Sybase公司的網站()下載PowerDesigner的試用版,實踐利用PowerDesigner進行數據庫建模的方法和過程。略習題十一1. 面向對象數據庫是在什么背景下產生的?為什么需要面向對象數據庫?在信息管理領域之外還有很多新的應用領域迫切需要使用數據庫,如計算機輔助設計(CAD)、多媒體技術(音頻、視頻文件的存儲和處理)等,這些應用往往需要存儲大量的復雜類型的數據,同時面向對象的概念和技術也強烈地引發了數據庫對復雜數據類型的支持,從而推動了面向對象數據庫的發展。由于關系數據
53、庫不直接支持復雜數據類型,致使一些必須使用復雜數據類型的應用實現起來不是很方便、并且效率較低。另外關系模型也不支持構造類型和繼承,這都使得人們希望發展面向對象的數據庫。2. 什么是對象的封裝性、繼承性和多態性?封裝性是指將類的數據和操作封裝在類定義中,對用戶來講類的“功能”是可見的,而實現部分是封裝在類定義中的,用戶是看不見的。這種封閉性保證了每個對象的實現都獨立于其他對象的細節,從而有利于保證軟件的質量。繼承性是指可以利用已有的類去定義新的類。如果根據類A定義類B,則說類B繼承了類A,同時把類A稱作基類,把類B稱作子類。子類不僅可以繼承基類的所有性質,還可以在子類中定義新的性質。繼承性使得基
54、類中的代碼可以共享和重用,所以繼承性有助于軟件可重用性的實現。多態性是指同一個函數可以有多種作用,即: 同一個函數根據不同的引用對象可以完成不同的功能; 同一個函數即便引用同一個對象,但由于傳遞的參數不同也可以完成不同的功能。多態性可以為整個應用和所有對象內部提供一個一致的接口,沒有必要為相同的動作命名和編寫不同的函數,它完全可以根據引用的對象不同、傳遞的消息不同來完成不同的功能。這樣做也與現實世界中管理和運作方法相吻合。3. 面向對象數據庫的研究方法主要有哪些?面向對象數據庫的研究方法目前主要有以下三種:s 擴充關系數據模型。將成熟的關系數據庫與面向對象數據庫方法結合起來,可減少研制工作量、
55、縮短研制周期。這種方法的弱點是不能全面支持面向對象的特征。s 在面向對象語言中嵌入數據庫功能而形成面向對象數據庫。該方法的關鍵是如何在面向對象語言中增加持久性對象的存儲管理。使用此方法受到面向對象語言的一些限制。s 開發全新的數據模型,從底層實現面向對象數據庫系統。這是最徹底的方法,缺點是難度大,一方面缺乏統一的數據模式及形式化理論,另一方面在查詢優化、視圖及數據庫工具方面仍為空白。4. 面向對象數據庫應該具備哪些基本特征?一個面向對象數據庫系統應該具備如下的基本內容和特征:s 在數據模型方面支持對象、復合對象、封裝、類、繼承、重載、滯后聯編、多態性等基本概念。其中復合對象的概念包括支持生成復合對象的構造器(元組、集合、包、列表、數組等)。s 數據庫管理系統除了具有傳統的數據庫管理系統所具有的功能(如并發控制、故障和恢復)外,還支持永久對象、長事務處理和嵌套事務,具有版本管理和模式演化的能力,能維護數據完整性,適合在分布式環境下工作。s 數據庫訪問界面要支持消息傳遞,提供計算能力完備的數據庫程序設計語言,能解決數據庫語言與宿主語言的某些不匹配問題,提供類似SQL的非過程化查詢功能。5. SQL99支持ORDBMS、還是OODBMS?SQL99支持的是ORDBMS。6. 比較RDBMS、ORDBMS和OODBMS,然后分別描述一個適合使用RDBMS、ORDBMS和
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 一周的小結15篇
- 抗震加固改造項目實施方案
- 住校生安全保證書模板
- 長春早期教育職業學院《體育教學設計與技能訓練》2023-2024學年第二學期期末試卷
- 北京工商大學《MySQL數據庫》2023-2024學年第二學期期末試卷
- 廣東生態工程職業學院《合唱(二)》2023-2024學年第二學期期末試卷
- 重慶三峽醫藥高等專科學?!秾I制圖綜合》2023-2024學年第二學期期末試卷
- 哈爾濱應用職業技術學院《形式與政策教育》2023-2024學年第二學期期末試卷
- 濮陽科技職業學院《現代工程圖學》2023-2024學年第二學期期末試卷
- 四川文化藝術學院《理財規劃實訓》2023-2024學年第二學期期末試卷
- 2025年農業合作社廉政風險點及防控措施
- 20以內乘法除法口算練習卷1000道可打印
- 生化檢驗項目選擇與臨床
- 2025年蚌埠市陽光電力維修 工程有限責任公司招聘筆試參考題庫附帶答案詳解
- 如何做好臨床科研
- 計算機wps一級excel操作題單選題100道及答案
- 2025年中國南水北調集團有限公司所屬水網發展研究有限公司招聘筆試參考題庫附帶答案詳解
- 《工程勘察設計收費標準》(2002年修訂本)
- 施工框架協議范本
- 【MOOC】用Python玩轉數據-南京大學 中國大學慕課MOOC答案
- 門診合作協議合同范本(2篇)
評論
0/150
提交評論