




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、數據庫系統(tǒng)及應用(第二版)習題解答習題一1. 什么是數據庫?數據庫是相互關聯(lián)的數據的集合,它用綜合的方法組織數據,具有較小的數據冗余,可供多個用戶共享,具有較高的數據獨立性,具有安全控制機制,能夠保證數據的安全、可靠,允許并發(fā)地使用數據庫,能有效、及時地處理數據,并能保證數據的一致性和完整性。2. 簡要概述數據庫、數據庫管理系統(tǒng)和數據庫系統(tǒng)各自的含義。數據庫、數據庫管理系統(tǒng)和數據庫系統(tǒng)是三個不同的概念,數據庫強調的是相互關聯(lián)的數據,數據庫管理系統(tǒng)是管理數據庫的系統(tǒng)軟件,而數據庫系統(tǒng)強調的是基于數據庫的計算機應用系統(tǒng)。3. 數據獨立性的含義是什么?數據獨立性是指數據的組織和存儲方法與應用程序互不
2、依賴、彼此獨立的特性。這種特性使數據的組織和存儲方法與應用程序互不依賴,從而大大降低應用程序的開發(fā)代價和維護代價。4. 數據完整性的含義是什么?保證數據正確的特性在數據庫中稱之為數據完整性。5. 簡要概述數據庫管理員的職責。數據庫管理員的職責可以概括如下:(1) 首先在數據庫規(guī)劃階段要參與選擇和評價與數據庫有關的計算機軟件和硬件,要與數據庫用戶共同確定數據庫系統(tǒng)的目標和數據庫應用需求,要確定數據庫的開發(fā)計劃;(2) 在數據庫設計階段要負責數據庫標準的制定和共用數據字典的研制,要負責各級數據庫模式的設計,負責數據庫安全、可靠方面的設計;(3) 在數據庫運行階段首先要負責對用戶進行數據庫方面的培訓
3、;負責數據庫的轉儲和恢復;負責對數據庫中的數據進行維護;負責監(jiān)視數據庫的性能,并調整、改善數據庫的性能,提高系統(tǒng)的效率;繼續(xù)負責數據庫安全系統(tǒng)的管理;在運行過程中發(fā)現問題、解決問題。6. 文件系統(tǒng)用于數據管理存在哪些明顯的缺陷?文件系統(tǒng)用于數據管理明顯存在如下缺陷:(1) 數據冗余大。這是因為每個文件都是為特定的用途設計的,因此就會造成同樣的數據在多個文件中重復存儲。(2) 數據不一致性。這往往是由數據冗余造成的,在進行更新時,稍不謹慎就會造成同一數據在不同文件中的不一致。(3) 程序和數據之間的獨立性差。應用程序依賴于文件的存儲結構,使得若修改文件的存儲結構則必須修改程序。(4) 數據聯(lián)系弱
4、。文件與文件之間是獨立的,文件之間的聯(lián)系必須通過程序來構造。因此,文件系統(tǒng)是一個不具有彈性的、無結構的數據集合,不能反映現實世界事物之間的聯(lián)系。習題二1. 數據的三種范疇的含義是什么?數據需要我們的認識、理解、整理、規(guī)范和加工,然后才能存放到數據庫中。數據從現實生活進入到數據庫實際經歷了現實世界階段(認識、理解)、信息世界階段(規(guī)范、提升)和機器世界階段(管理),我們也把之稱為數據的三種范疇,數據在三種范疇中的概念、術語都有些不同。2. 對以下問題分析實體之間的聯(lián)系,并分別畫出E-R圖:略3. 試述為什么要討論實體之間的聯(lián)系類型?實體之間的聯(lián)系類型決定了數據庫設計時的結果,與數據庫的設計質量密
5、切相關。4. 多對多聯(lián)系如何轉換成一對多聯(lián)系?并舉例說明。通過引入一個表示聯(lián)系的實體,將原來兩個實體之間的一個多對多的聯(lián)系轉換成分別與表示聯(lián)系的實體之間的兩個一對多的聯(lián)系。例如,倉庫和材料兩個實體之間存在著多對多的聯(lián)系,即一個倉庫可以存放多種材料,一種材料可以存放在多個倉庫;通過引入一個庫存實體轉換為倉庫與庫存之間的一對多聯(lián)系和材料與庫存之間的一對多聯(lián)系。5. 解釋連接陷阱的概念,在操作數據庫時如何避免連接陷阱?所謂連接陷阱就是誤認為本來不存在聯(lián)系的兩個實體之間存在聯(lián)系,從而強行進行連接操作,自然得到錯誤的結果。為了避免連接陷阱,必須明確實體之間的聯(lián)系和聯(lián)系類型,只在有聯(lián)系的實體之間進行關聯(lián)操
6、作。6. 傳統(tǒng)的三大數據模型是哪些?它們分別是如何表示實體之間的聯(lián)系的?傳統(tǒng)的三大數據模型是層次模型、網狀模型和關系模型。層次模型用層次結構表示聯(lián)系,它的典型代表IMS用層次型表示聯(lián)系;網狀模型用網狀結構表示聯(lián)系,它的典型代表CODASYL用系表示聯(lián)系;關系模型用關系表示聯(lián)系。7. 解釋存儲數據獨立性和概念數據獨立性的區(qū)別。存儲數據獨立性強調的是應用程序與數據的存儲結構相互獨立的特性,即修改數據的存儲方法或數據結構時不影響應用程序;而概念數據獨立性強調的是應用程序與數據的概念結構相互獨立的特性,即修改概念結構中的字段時不影響應用程序。8. 為什么說概念數據庫和外部數據庫物理上并不真正存在?只有
7、存儲數據庫是物理上存在的數據庫,概念數據庫是存儲數據庫的抽象,它反映了數據庫的全局邏輯結構;而外部數據庫是概念數據庫的部分抽取,它反映了數據庫的局部邏輯結構。9. 說明在DBMS中存儲模式、概念模式和外部模式的作用。存儲模式描述了數據庫的存儲結構,它包括對存儲數據庫中每個文件以及字段的描述,包括用于實現輔助關鍵字或存儲文件間聯(lián)系的指針字段的細節(jié)。存儲數據庫利用存儲模式組織和存取存儲數據庫中的文件。如果要修改存儲數據庫的結構(例如,用倒排文件代替多鏈表),那么僅僅需要把這些修改反映在存儲模式中,以使數據庫存儲系統(tǒng)能夠操作新的存儲數據庫。按這種方法,數據庫管理系統(tǒng)可以提供存儲(物理)數據獨立性。概
8、念模式是對概念數據庫的描述,它包括對概念文件及概念文件之間聯(lián)系的描述。概念數據庫不包含真正的數據,一切都是由存儲數據庫決定的。外部模式則是對外部數據庫的描述,它需要說明外部文件、構成外部文件的字段及這些外部文件之間的聯(lián)系。數據庫管理系統(tǒng)提供了外部模式與概念模式之間的映象以及概念模式與存儲模式之間的映象,使用戶通過外部數據庫或概念數據庫來操作存儲數據庫。習題三1. 解釋屬性與值域的區(qū)別。屬性是二維表中的列,而值域是列或屬性的取值范圍。2. 關系模型的三個組成部分是什么?關系數據模型包括關系數據結構、關系操作集合和關系完整性約束三個重要因素。3. 對關系模型的操作都包括哪些?關系數據模型中的操作包
9、括:(1) 傳統(tǒng)的集合運算:并(Union)、交(Intersection)、差(Difference)、廣義笛卡爾積(Extended Cartesian Product);(2) 專門的關系運算:選擇(Select)、投影(Project)、連接(Join)、除(Divide);(3) 有關的數據操作:查詢(Query)、插入(Insert)、刪除(Delete)、修改(Update)。4. 關系模型的完整性規(guī)則都有哪些?在關系數據模型中一般將數據完整性分為實體完整性、參照完整性和用戶定義完整性。5. 試述外部關鍵字的概念和作用,外部關鍵字是否允許為空值,為什么?如果一個屬性集不是所在關系
10、的關鍵字,但是是其他關系的關鍵字,則該屬性集稱為外部關鍵字。外部關鍵字用于實現表與表之間的參照完整性。外部關鍵字是否允許為空值取決于語義的規(guī)定。外部關鍵字的取值或者為空值、或者為被參照關系中的某個關鍵字字段的值。6. 分別敘述在進行插入、刪除、更新操作時都需要進行哪些完整性檢查,并說明理由。(1) 執(zhí)行插入操作時需要分別檢查實體完整性規(guī)則、參照完整性規(guī)則和用戶定義完整性規(guī)則。首先檢查實體完整性規(guī)則,如果插入元組的主關鍵字的屬性不為空值、并且相應的屬性值在關系中不存在(即保持唯一性),則可以執(zhí)行插入操作,否則不可以執(zhí)行插入操作。接著再檢查參照完整性規(guī)則,如果是向被參照關系插入元組,則無須檢查參照
11、完整性;如果是向參照關系插入元組,則要檢查外部關鍵字屬性上的值是否在被參照關系中存在對應的主關鍵字的值,如果存在則可以執(zhí)行插入操作,否則不允許執(zhí)行插入操作。另外,如果插入元組的外部關鍵字允許為空值,則當外部關鍵字是空值時也允許執(zhí)行插入操作。最后檢查用戶定義完整性規(guī)則,如果插入的元組在相應的屬性值上遵守了用戶定義完整性規(guī)則,則可以執(zhí)行插入操作,否則不可以執(zhí)行插入操作。(2) 執(zhí)行刪除操作時一般只需要檢查參照完整性規(guī)則。如果刪除的是參照關系的元組,則不需要進行參照完整性檢查,可以執(zhí)行刪除操作。如果刪除的是被參照關系的元組,則檢查被刪除元組的主關鍵字屬性的值是否被參照關系中某個元組的外部關鍵字引用,
12、如果未被引用則可以執(zhí)行刪除操作;否則可能有三種情況:1) 不可以執(zhí)行刪除操作,即拒絕刪除;2) 可以刪除,但需同時將參照關系中引用了該元組的對應元組一起刪除,即執(zhí)行級聯(lián)刪除;3) 可以刪除,但需同時將參照關系中引用了該元組的對應元組的外部關鍵字置為空值,即空值刪除。(3) 執(zhí)行更新操作可以看作是先刪除舊的元組,然后再插入新的元組。所以執(zhí)行更新操作時的完整性檢查綜合了上述兩種情況。7. 試述關系的自然連接和等值連接的異同之處。自然連接和等值連接都是基于相等比較運算的連接,但是自然連接要去掉重復的屬性,而等值連接卻不需要去掉重復的屬性。8. 以圖3-6的數據庫為例(可參照圖5-1,該數據庫的實例)
13、,用關系代數完成以下檢索:注意:此處暫以 * 表示連接運算符。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. 試述關系數據庫系統(tǒng)的三層模式結構。略習題四1. 簡述客戶/服務器結構的概念,并說明客戶/服務器結構與文件服務器網絡結構的區(qū)別??蛻?服務器結構的基本思想是應用程序或應用邏輯可以根據需要劃分在服務器和客戶工作站中,它既不像集中式系統(tǒng)那樣所有的應用程序都在主機上執(zhí)行,也不像文件服務器網絡那樣所有的應用程序都在客戶端執(zhí)行,
15、它可以使應用程序合理負擔在服務器和客戶端??蛻?服務器結構與文件服務器網絡結構的硬件拓撲結構很相似,它們的根本區(qū)別在于:客戶/服務器結構的服務器可以執(zhí)行應用程序;而文件服務器的服務器只是一個數據共享器,它不能執(zhí)行應用程序。2. 在客戶/服務器結構中,數據庫服務器和客戶端計算機是如何分工的?數據庫服務器應完成數據管理、信息共享、安全管理、以及一些更高級的管理。它是一個開放的體系結構,可以接受來自各種應用程序和開發(fā)工具的客戶端的連接;它除了要管理集中的數據庫之外,還要處理來自客戶端的數據訪問請求和將結果反饋給用戶(包括管理請求隊列、管理緩存、響應服務、管理結果和通知服務完成等)的工作。而客戶端計算
16、機是面向最終用戶的,所以它的主要任務是提供友好的用戶界面,提交數據訪問請求以及接收和處理數據庫的返回結果,組織返回數據的輸出(如生成數據瀏覽窗口、生成數據報表和圖形等),提供初步的數據驗證功能等。3. SQL Server在安裝后默認創(chuàng)建了哪幾個系統(tǒng)數據庫?分別敘述它們的作用。SQL Server在安裝后默認創(chuàng)建了4系統(tǒng)數據庫,它們是:(1) master數據庫。master數據庫用于存儲SQL Server系統(tǒng)的所有系統(tǒng)級信息,包括所有的其它數據庫(如建立的用戶數據庫)的信息(包括數據庫的設置、對應的操作系統(tǒng)文件名稱和位置等)、所有數據庫注冊用戶的信息以及系統(tǒng)配置設置等。(2) tempdb
17、數據庫。tempdb數據庫用于保存所有的臨時表和臨時存儲過程,它還可以滿足任何其它的臨時存儲要求。(3) model 數據庫。model數據庫是一個模板數據庫,當使用CREATE DATABASE命令建立新的數據庫時,新數據庫的第一部分總是通過復制model數據庫中的內容創(chuàng)建,剩余部分由空頁填充。(4) msdb數據庫。msdb數據庫用于SQL Server代理程序調度報警和作業(yè)等系統(tǒng)操作。4. 試述SQL Server的CREATE DATABASE命令在創(chuàng)建數據庫時是如何申請物理存儲空間的?通過指定的物理文件名、文件的大小等向操作系統(tǒng)申請物理存儲空間。5. 試述SQL Server企業(yè)管理
18、器的功能。略。習題五1. 試概述SQL語言的功能。SQL是一種一體化的語言,它包括了數據定義、數據查詢、數據操縱和數據控制等方面的功能,它可以完成數據庫活動中的全部工作。2. 以圖5-1的數據庫為例,用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 distinct 供應商名
21、,供應商號from 供應商where 供應商號 not in -('s4','s7')-該供應商無與E3的訂單 (select distinct 供應商號 from 訂購單 where 供應商號 is not null and職工號 in (select 職工號-該職工工次低于1220,只有E3 from 職工 where 工資<1220)-該供應商有下過訂單and 供應商號 in (select distinct 供應商號 from 訂購單)10) 檢索出向S4供應商發(fā)出訂購單的倉庫所在的城市。SELECT 城市 FROM 倉庫 WHERE 倉庫號 IN
22、(SELECT 倉庫號 FROM 職工 WHERE 職工號 IN(SELECT 職工號 FROM 訂購單 WHERE 供應商號='S4')11) 檢索出在上海工作并且向S6供應商發(fā)出了訂購單的職工號。SELECT 職工號 FROM 職工 WHERE 倉庫號 IN(SELECT 倉庫號 FROM 倉庫 WHERE 城市='上海') AND 職工號 IN(SELECT 職工號 FROM 訂購單 WHERE 供應商號='S6')12) 檢索出在廣州工作并且只向S6供應商發(fā)出了訂購單的職工號。SELECT 職工號 FROM 職工 WHERE 倉庫號 IN
23、(SELECT 倉庫號 FROM 倉庫 WHERE 城市='廣州') AND 職工號 IN(SELECT 職工號 FROM 訂購單 WHERE 供應商號='S6') AND 職工號 NOT IN(SELECT 職工號 FROM 訂購單 WHERE 供應商號!='S6')13) 檢索出由工資多于1230元的職工向北京的供應商發(fā)出的訂購單號。SELECT 訂購單號 FROM 訂購單 WHERE 職工號 IN(SELECT 職工號 FROM 職工 WHERE 工資>1230) AND 供應商號 IN(SELECT 供應商號 FROM 供應商 WH
24、ERE 地址='北京')14) 檢索出倉庫的個數。SELECT COUNT(*) FROM 倉庫15) 檢索出有最大面積的倉庫信息。SELECT * FROM 倉庫 WHERE 面積=(SELECT MAX(面積) FROM 倉庫)16) 檢索出所有倉庫的平均面積。SELECT AVG(面積) FROM 倉庫17) 檢索出向S4供應商發(fā)出訂購單的那些倉庫的平均面積。SELECT AVG(面積) FROM 倉庫 WHERE 倉庫號 IN(SELECT 倉庫號 FROM 職工 WHERE 職工號 IN(SELECT 職工號 FROM 訂購單 WHERE 供應商號='S4
25、39;)18) 檢索出每個城市的供應商個數。SELECT 地址,COUNT(*) FROM 供應商 GROUP BY 地址19) 檢索出每個倉庫中工資多于1220元的職工個數。SELECT 倉庫號,COUNT(*) FROM 職工 WHERE 工資>1220 GROUP BY 倉庫號20) 檢索出和面積最小的倉庫有聯(lián)系的供應商的個數。SELECT COUNT(*) FROM 供應商 WHERE 供應商號 IN(SELECT 供應商號 FROM 訂購單 WHERE 職工號 IN(SELECT 職工號 FROM 職工 WHERE 倉庫號 IN(SELECT 倉庫號 FROM 倉庫 WHERE
26、 面積=(SELECT MIN(面積) FROM 倉庫)21) 檢索出工資低于本倉庫平均工資的職工信息。SELECT * FROM 職工 out WHERE 工資<(SELECT AVG(工資) FROM 職工 inne WHERE 倉庫號=out.倉庫號)3. 試述關系數據庫中視圖(View)的含義和作用。在關系數據庫中,視圖也稱作窗口,即視圖是操作基本表的窗口。在三層數據庫體系結構中,視圖是外部數據庫,它是從基本表中派生出來的并依賴于基本表,它并不獨立存在。利用視圖一方面可以限定對數據的訪問(對數據列起到安全保護的作用),另一方面又可以簡化對數據的訪問(用戶可以直接通過視圖訪問數據庫
27、)。除此之外,從三層數據庫體系結構的角度它還提供了概念數據獨立性。4. 以圖5-1的數據庫為例,用SQL語句完成以下更新操作,并討論數據完整性約束對這些操作的影響:1)插入一個新的供應商元組(S9,智通公司,沈陽)。INSERT INTO 供應商 VALUES('S9','智通公司','沈陽')2)刪除目前沒有任何訂購單的供應商。DELETE FROM 供應商 WHERE 供應商號 NOT IN(SELECT 供應商號 FROM 訂購單)3)刪除由在上海倉庫工作的職工發(fā)出的所有訂購單。DELETE FROM 訂購單 WHERE 職工號 IN(SE
28、LECT 職工號 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嵌入到宿主語言中使用必須要解決以下三個方面的問題:1) 嵌入識別問題。宿主語言的編譯程序不能識
29、別SQL語句,所以首要的問題就是要解決如何區(qū)分宿主語言的語句和SQL語句。2) 宿主語言與SQL語言的數據交互問題。SQL語句的查詢結果必須能夠交給宿主語言處理,宿主語言的數據也要能夠交給SQL語句使用。3) 宿主語言的單記錄與SQL的多記錄的問題。宿主語言一般一次處理一條記錄,而SQL常常處理的是記錄(元組)的集合,這個矛盾必須解決。6. 試述預編譯的作用。宿主語言的編譯系統(tǒng)不能識別SQL語句。解決這個問題的一般方法是,為SQL語句加一個特殊的前綴,在用宿主語言的編譯系統(tǒng)編譯源程序之前,首先由預編譯系統(tǒng)將SQL語句轉換為宿主語言的合法函數調用。7. 試述游標(Cursor)的作用,并解釋實現
30、此功能的諸條語句的用途。宿主語言一般只能在單記錄方式下工作,即一次處理一個記錄。而SQL語句的查詢結果常常是一張表,它包含多個記錄,為此需要用游標(CURSOR)作為橋梁做一些特殊處理,即利用游標來臨時存放SQL語句的查詢結果,并利用游標與宿主語言的主變量進行數據交互。與游標有關的命令共有四條:DECLARE CURSOR、OPEN、FETCH和CLOSE。其中DECLARE CURSOR用SQL SELECT語句說明一個游標;OPEN打開游標,即執(zhí)行說明游標的SQL SELECT語句;FETCH從游表中讀一條記錄到主變量;CLOSE關閉游標。8. 試述為什么需要動態(tài)SQL語句,分析游標和動態(tài)
31、游標的區(qū)別。有時候在編程序時SQL語句或語句的參數和格式不能確定,應用程序只能在執(zhí)行時才知道需要什么樣的SQL語句,即必須在應用程序執(zhí)行時動態(tài)建立SQL語句。定義游標的SQL語句是靜態(tài)的;而定義動態(tài)游標的SQL語句是動態(tài)生成的。習題六1. 什么是存儲過程?為什么要使用存儲過程?存儲過程是經過預編譯的T-SQL語句的集合,它存放在數據庫中,當用戶執(zhí)行存儲過程時,存儲過程在數據庫服務器上運行。利用存儲過程可以避免在網絡上傳輸大量無用的信息或原始數據,只需要傳輸調用存儲過程的指令和數據庫服務器返回的處理結果,這樣可以大大提高網絡數據庫應用系統(tǒng)的性能。2. 試為如下問題編寫、建立存儲過程,并定義合適的
32、過程返回狀態(tài)碼和信息(均以圖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 -1-調用exec ins_sup 'aa','存儲過程插入的供應商','地址'-查看結果select * from 供應商2) 給指定城市的所有倉庫增加x m2的面積。CREATE PROCE
33、DURE upd_wh_area(city char(10),area numeric)ASUPDATE 倉庫 SET 面積=面積 + area WHERE 城市=cityIF ERROR = 0 RETURN 0ELSERETURN 1-調用exec upd_wh_area '廣州',1000-查看結果select * from 倉庫3) 檢索某職工發(fā)給某供應商的訂購單信息。CREATE PROCEDURE get_ord(eno CHAR(4),sno CHAR(3)ASSELECT * FROM 訂購單 WHERE 職工號=eno AND 供應商號=snoIF ERROR
34、 = 0 RETURN 0ELSERETURN -14) 檢索在某城市工作并且向某供應商發(fā)了訂購單的職工號。CREATE PROCEDURE get_eno(city CHAR(10),sno CHAR(3)ASSELECT 職工號 FROM 職工 WHERE 倉庫號 IN (SELECT 倉庫號 FROM 倉庫 WHERE 城市=city) AND 職工號 IN(SELECT 職工號 FROM 訂購單 WHERE 供應商號=sno)IF ERROR = 0 RETURN 0ELSERETURN -13. 試述觸發(fā)器的概念和作用。觸發(fā)器可以看作是一類特殊的存儲過程,它在滿足某個特定條件時自動觸
35、發(fā)執(zhí)行。觸發(fā)器是為表上的更新、插入、刪除操作定義的,也就是說當表上發(fā)生更新、插入或刪除操作時觸發(fā)器將執(zhí)行。觸發(fā)器可以用于數據參照完整性和以下一些場合:s 觸發(fā)器可以通過級聯(lián)的方式對相關的表進行修改。比如,對父表的修改,可以引起對子孫表的一系列修改,從而保證數據的一致性和完整性。s 觸發(fā)器可以禁止或撤消違反參照完整性的修改。s 觸發(fā)器可以強制比用CHECK約束定義更加復雜的限制。4. 利用觸發(fā)器為圖5-1數據庫的訂購單關系建立參照完整性。建立插入觸發(fā)器CREATE TRIGGER ord_ins_triggerON 訂購單 FOR INSERTASIF (SELECT COUNT(*) FROM
36、 職工 e,INSERTED i WHERE e.職工號=i.職工號)=0 OR(SELECT COUNT(*) FROM 供應商 s,INSERTED i WHERE s.供應商號=i. 供應商號)=0)BEGINRAISERROR ('非法職工號或非法供應商號', 1, 1)ROLLBACK TRANSACTIONEND建立更新觸發(fā)器略習題七1. 討論數據庫安全都與哪些安全問題有關?數據庫安全實際涉及到很多方面,除了數據庫管理系統(tǒng)應該具有安全保護功能之外,還需要從管理機制、人員行為、操作系統(tǒng)安全和網絡安全等多個方面采取措施。2. 試述數據庫的自主存取控制和強制存取控制的區(qū)別
37、和各自的特點。自主存取控制的特點是由用戶“自主”地控制數據庫對象的訪問權限;而強制存取控制的特點是嚴格的分層次管理,有嚴格的等級制度。3. 試述角色管理在數據庫安全控制中的作用。角色管理類似于用戶組的管理,可以將數據庫的所有用戶劃分成不同的角色,這樣可以簡化用戶管理,使用戶管理和權限管理更加簡潔、清楚。4. 試述SQL Server的系統(tǒng)預定義角色為安全管理提供了哪些便利。SQL Server的系統(tǒng)管理是由系統(tǒng)管理員(默認是sa用戶)負責的,而系統(tǒng)預定義角色正是系統(tǒng)管理員職責的分解,通過一些系統(tǒng)預定義角色的用戶來協(xié)助系統(tǒng)管理員進行管理,可以減輕系統(tǒng)管理員(sa用戶)的工作負擔,對系統(tǒng)管理來說又
38、有更明確的職責劃分。5. 試述語句授權和對象授權各自的含義和作用。語句授權是指對執(zhí)行創(chuàng)建數據庫對象的語句的授權,這種權限一般歸系統(tǒng)管理員(sa)或數據庫管理員(DBO)管理;對象授權是指對可以在數據庫對象執(zhí)行的操作的授權,這種權限一般由數據庫對象擁有者(DBOO)管理,也可以由系統(tǒng)管理員(sa)或數據庫管理員(DBO)管理。6. 試述GRANT語句中WITH GRANT OPTION子句的作用。WITH GRANT OPTION子句說明被授權用戶可以將指定的對象權限授予其他用戶。該子句僅對對象權限有效,對語句權限無效。7. 試述在REVOKE語句中GRANT OPTION FOR子句和CASC
39、ADE子句的作用。GRANT OPTION FOR說明只收回WITH GRANT OPTION權限;CASCADE說明級聯(lián)收回由于WITH GRANT OPTION授予的所有權限。GRANT OPTION FOR要與CASCADE一同使用,因為要收回WITH GRANT OPTION權限,也應該一同收回由于該子句產生的所有授權。8. 試述禁止權限語句DENY的作用。禁止權限語句DENY的作用是禁止用戶從角色繼承指定的權限。9. 什么是數據庫的審計功能?系統(tǒng)管理員(或數據庫管理員)可以通過審計日志審計、跟蹤所有用戶對數據庫的操作活動,可以確定哪些客戶、什么時間、進行了哪些操作(任何操作)等,這種
40、功能稱作數據庫的審計功能。10. 統(tǒng)計數據庫有哪些特殊的安全性問題?統(tǒng)計數據庫的安全性問題主要是指不允許從統(tǒng)計信息推導出名細信息。習題八1. 什么是事務?事務是構成單一邏輯工作單元的操作集合。2. 解釋事務的ACID性質。事務的ACID性質指事務具有原子性(即不可分割)、一致性(要能保證數據庫的一致性)、隔離性(事務的原子性和一致性不受其他事務的影響)和持久性(事務對數據庫所施加的所有更新都是永久的)。3. 并發(fā)控制都會產生哪些干擾問題?并討論之。并發(fā)事務可能會存在的干擾問題主要有:s 丟失更新問題s 未提交依賴問題s 不一致分析問題s 幻象讀問題討論略。4. 請舉出兩個并發(fā)的程序進行更新操作
41、時相互干擾的例子。略5. 利用事務概念和封鎖技術重做第4題,使干擾不發(fā)生。略6. 分別解釋共享封鎖、更新封鎖和獨占封鎖的含義。共享封鎖是為讀操作設置的一種封鎖,目的是想讀到一組不變的數據,也就是在讀數據的過程中,不允許其他用戶對該數據進行任何修改操作。這種封鎖可以保證最大的并發(fā)性,任何數量的用戶都可以同時對同樣的數據施加這種共享鎖。當需要對一個記錄或一組記錄進行更新時(只是修改,不包括插入和刪除)使用更新封鎖,該封鎖的目的是防止其他用戶在同一時刻修改同一記錄。已經實施更新封鎖的記錄,拒絕來自其他用戶的更新封鎖或獨占封鎖。獨占封鎖也叫排他封鎖,這是最嚴格的一類封鎖。當需要對表實施插入、刪除或修改
42、操作時,應該使用獨占封鎖。已經實施獨占封鎖的表,拒絕來自其他用戶的任何封鎖,但不拒絕其他用戶的一般讀操作。7. 什么是死鎖?如何避免發(fā)生死鎖?當兩個(或多個)并發(fā)的事務分別等待對方釋放封鎖的資源,而使事務處于長期等待狀態(tài)的現象稱為死鎖。為了避免死鎖,一般可以采取兩種方式:s 相同順序法:所有的事務約定都按相同的順序來封鎖表;s 一次封鎖法:為了完成一個事務,一次性封鎖所需要的全部表。8. 什么是事務的隔離性?如何劃分事務的隔離級別?事務的隔離性是指一個事務應該與其他事務“隔離”,它在完成過程中不受其他事務的影響和干擾?!案綦x”則意味著并發(fā)程度的降低。為了既能保證數據的一致性、又盡可能提高系統(tǒng)的
43、并發(fā)執(zhí)行效率,為此將隔離級別劃分為如下4個級別:s 未提交讀(READ UNCOMMITTED):事務隔離的最低級別,僅可保證不讀取物理損壞的數據,這是4個隔離級別中限制最小的級別。s 提交讀(READ COMMITTED):可以保證不讀取“臟”數據。s 可重復讀(REPEATABLE READ):可以保證讀一致性,避免不一致分析問題。s 可串行化(SERIALIZABLE):事務隔離的最高級別,事務之間完全隔離;如果事務在可串行化隔離級別上運行,則可以保證任何并發(fā)重疊事務均是串行的。9. 試敘述在備份與恢復技術中數據庫日志的作用。日志則是對備份的補充,它可以看作是一個值班日記,它將記錄下所有
44、對數據庫的更新操作。這樣就可以在備份完成時立刻刷新并啟用一個數據庫日志,數據庫日志是實時的,它將忠實地記錄下所有對數據庫的更新操作。因此,當磁盤出現故障造成數據庫損壞時,就可以首先利用備份恢復數據庫(恢復大部分數據),然后再運行數據庫日志,即將備份后所做的更新操作再重新做一遍,從而將數據庫完全恢復。10. 試述在SQL Server中利用文件和文件組備份為數據庫恢復提供了什么樣的便利?利用文件和文件組進行備份,則當建立數據庫的某個物理存儲介質出現故障時,可以只恢復發(fā)生故障的存儲介質上的物理文件或文件組,而不需要恢復整個數據庫,這可以大大縮短數據庫恢復所需要的時間。11. 針對不同的故障類型(事
45、務故障和介質故障),試討論恢復的策略和方法。略12. 試討論備份系統(tǒng)數據庫的重要性。系統(tǒng)數據庫(在SQL Server上特別是master數據庫)是管理用戶數據庫的數據庫,如果系統(tǒng)數據庫一旦損壞,整個系統(tǒng)的使用都將受到影響。所以系統(tǒng)數據庫的安全和可靠是用戶數據庫可以正常使用的基礎。習題九1. 理解、定義如下術語,并分別給出兩個例子:函數依賴、部分函數依賴、完全函數依賴、傳遞函數依賴、主屬性。略2. 找出圖5-1所示數據庫各個關系中的函數依賴。倉庫關系上的函數依賴:倉庫號城市,倉庫號面積職工關系上的函數依賴:職工號倉庫號,職工號工資訂購單關系上的函數依賴:訂購單號職工號,訂購單號供應商號,訂購單
46、號訂購日期供應商關系上的函數依賴:供應商號供應商名,供應商名供應商號,供應商號地址,供應商名地址3. 試證明如下結論(引理9.1):XA1A2An的充分必要條件是XAk成立(k=1,2, ,n)。證明:略4. 設有關系模式R(U,F),U=A,B,C,D,E,F=ABE,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. 假設有一個名為參加的關系,該關系有屬性:職
47、工(職工名)、工程(工程名)、時數(花費在工程上的小時數)和工資(職工的工資);一個參加記錄描述一個職工花費在一個工程上的總時數和他的工資;另外,一個職工可以參加多個工程,多個職工可以參加同一個工程。請回答如下各問題:用A、B、C、D分別代表屬性職工、工程、時數和工資,則:1) 確定這個關系的關鍵字;AB2) 找出這個關系中的所有函數依賴;AB->C , A->D3) 指出這個關系上的哪些函數依賴會帶來操作異?,F象;D對關鍵字AB的部分函數依賴可能會帶來如下問題:數據冗余:一個職工參加多個工程,則職工的工資值會重復;更新異常:當改變職工的工資時,可能會只修改了一部分,從而造成數據不
48、一致;插入異常:當一個職工尚未承擔工程,但要插入職工信息(如工資)則不允許(因為沒有完整的關鍵字);刪除異常:當某個工程結束,刪除工程信息時,可能會將職工信息(如工資)一同刪除(如果職工只參加了一項工程)。4) 這個關系是第幾范式關系?2NF5) 計算該關系上函數依賴集的最小覆蓋;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
49、、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,DA,EB,現將R分解成關系模式S(A, B, C)和其他一些關系模式,請給出在關系模式S上成立的函數依賴。ACB,BCA習題十1. 試敘述概念數據庫設計和邏輯數據庫設計的區(qū)別,并說明各自的主要工作內容。概念數據庫設計是不依賴于任何數據庫管理系統(tǒng)的,它是對用戶信息需求的歸納。概念設計的結果得到的是數據庫的概念結構,或稱概念數據模型
50、,由于它是從現實世界的角度進行的抽象和描述,所以與具體的硬件環(huán)境和軟件環(huán)境均無關。而在邏輯數據庫首先要考慮實現數據庫的數據庫管理系統(tǒng)所支持的數據模型是什么,并將概念數據模型轉換為數據庫管理系統(tǒng)支持的數據模型。一般在概念設計階段主要工作內容有:s 確定實體;s 確定實體的屬性;s 確定實體的標識屬性(關鍵字);s 確定實體間的聯(lián)系和聯(lián)系類型;s 確定實現實體間聯(lián)系的屬性(外部關鍵字或連接屬性);s 畫出表示概念模型的E-R圖;除此之外,為了以后對模式進行規(guī)范化,還需要:s 確定屬性間的依賴關系。而在邏輯設計階段一般主要工作內容有:s 確定各個關系模式的主關鍵字,考慮實體完整性;s 確定各個關系模
51、式的外部關鍵字,考慮參照完整性;s 確定各個關系模式中屬性的約束、規(guī)則和默認值,考慮域完整性;s 根據用戶需求設計視圖;s 考慮安全方案和用戶使用權限等。2. 物理數據庫設計主要包括哪些內容?物理數據庫設計的內容是設計數據庫的存儲結構和物理實現方法。一般包括如下內容:s 估算數據庫的數據存儲量;s 設計數據庫設備;s 安排數據庫的存儲;s 設計索引;s 設計備份策略等。3. 到Sybase公司的網站()下載PowerDesigner的試用版,實踐利用PowerDesigner進行數據庫建模的方法和過程。略習題十一1. 面向對象數據庫是在什么背景下產生的?為什么需要面向對象數據庫?在信息管理領域
52、之外還有很多新的應用領域迫切需要使用數據庫,如計算機輔助設計(CAD)、多媒體技術(音頻、視頻文件的存儲和處理)等,這些應用往往需要存儲大量的復雜類型的數據,同時面向對象的概念和技術也強烈地引發(fā)了數據庫對復雜數據類型的支持,從而推動了面向對象數據庫的發(fā)展。由于關系數據庫不直接支持復雜數據類型,致使一些必須使用復雜數據類型的應用實現起來不是很方便、并且效率較低。另外關系模型也不支持構造類型和繼承,這都使得人們希望發(fā)展面向對象的數據庫。2. 什么是對象的封裝性、繼承性和多態(tài)性?封裝性是指將類的數據和操作封裝在類定義中,對用戶來講類的“功能”是可見的,而實現部分是封裝在類定義中的,用戶是看不見的。這
53、種封閉性保證了每個對象的實現都獨立于其他對象的細節(jié),從而有利于保證軟件的質量。繼承性是指可以利用已有的類去定義新的類。如果根據類A定義類B,則說類B繼承了類A,同時把類A稱作基類,把類B稱作子類。子類不僅可以繼承基類的所有性質,還可以在子類中定義新的性質。繼承性使得基類中的代碼可以共享和重用,所以繼承性有助于軟件可重用性的實現。多態(tài)性是指同一個函數可以有多種作用,即: 同一個函數根據不同的引用對象可以完成不同的功能; 同一個函數即便引用同一個對象,但由于傳遞的參數不同也可以完成不同的功能。多態(tài)性可以為整個應用和所有對象內部提供一個一致的接口,沒有必要為相同的動作命名和編寫不同的函數,它完全可以
54、根據引用的對象不同、傳遞的消息不同來完成不同的功能。這樣做也與現實世界中管理和運作方法相吻合。3. 面向對象數據庫的研究方法主要有哪些?面向對象數據庫的研究方法目前主要有以下三種:s 擴充關系數據模型。將成熟的關系數據庫與面向對象數據庫方法結合起來,可減少研制工作量、縮短研制周期。這種方法的弱點是不能全面支持面向對象的特征。s 在面向對象語言中嵌入數據庫功能而形成面向對象數據庫。該方法的關鍵是如何在面向對象語言中增加持久性對象的存儲管理。使用此方法受到面向對象語言的一些限制。s 開發(fā)全新的數據模型,從底層實現面向對象數據庫系統(tǒng)。這是最徹底的方法,缺點是難度大,一方面缺乏統(tǒng)一的數據模式及形式化理
55、論,另一方面在查詢優(yōu)化、視圖及數據庫工具方面仍為空白。4. 面向對象數據庫應該具備哪些基本特征?一個面向對象數據庫系統(tǒng)應該具備如下的基本內容和特征:s 在數據模型方面支持對象、復合對象、封裝、類、繼承、重載、滯后聯(lián)編、多態(tài)性等基本概念。其中復合對象的概念包括支持生成復合對象的構造器(元組、集合、包、列表、數組等)。s 數據庫管理系統(tǒng)除了具有傳統(tǒng)的數據庫管理系統(tǒng)所具有的功能(如并發(fā)控制、故障和恢復)外,還支持永久對象、長事務處理和嵌套事務,具有版本管理和模式演化的能力,能維護數據完整性,適合在分布式環(huán)境下工作。s 數據庫訪問界面要支持消息傳遞,提供計算能力完備的數據庫程序設計語言,能解決數據庫語
56、言與宿主語言的某些不匹配問題,提供類似SQL的非過程化查詢功能。5. SQL99支持ORDBMS、還是OODBMS?SQL99支持的是ORDBMS。6. 比較RDBMS、ORDBMS和OODBMS,然后分別描述一個適合使用RDBMS、ORDBMS和OODBMS的應用,并說明原因。略習題十二1. 解釋ODBC的概念。ODBC(Open DataBase Connectivity)的全稱是開放數據庫互連,它是一種訪問數據庫的統(tǒng)一界面標準。2. 應用程序是如何通過ODBC訪問數據庫的?應用程序通過調用ODBC函數可以完成對數據庫的訪問操作,它所執(zhí)行的任務或完成的工作包括:請求對數據源的連接,獲取連接
57、句柄;指定事務控制方式;定義接收結果的數據區(qū);向數據源發(fā)送SQL語句;接收SQL的查詢結果;處理出錯信息,并將出錯信息返回給應用程序;終止對數據源的連接。3. 設有基于SQL Server的pubs數據源,它對應于pubs數據庫,寫出利用Visual FoxPro訪問或操作SQL Server的如下語句:1) 連接到pubs數據庫;gn=SQLCONNECT("pubs","sa")2) 查詢employee表的全部信息;=SQLEXEC(gn,"SELECT * FROM employee")3) 為publishers表準備一個帶參數的查詢,可以指定pub_name(出版社名)進行查詢;=SQLPREPARE(gn,"SE
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 哪些項目需要可行性研究報告批復
- 生態(tài)農業(yè)規(guī)劃方案
- 三農項目申報與實施全流程作業(yè)指導書
- 醫(yī)院感染防控知識培訓手冊
- 醫(yī)療保健管理與咨詢服務作業(yè)指導書
- 三農生態(tài)農業(yè)發(fā)展方案
- 護師主管護師復習測試卷附答案
- 農業(yè)生產農業(yè)大數據可視化方案
- 項目啟動會致辭與愿景展望
- 季度辦公項目進度活動策劃方案
- WH/T 42-2011演出場所安全技術要求第2部分:臨時搭建演出場所舞臺、看臺安全技術要求
- GB/T 5023.5-2008額定電壓450/750 V及以下聚氯乙烯絕緣電纜第5部分:軟電纜(軟線)
- GB/T 23445-2009聚合物水泥防水涂料
- 瓷貼面教學課件
- 尺骨冠突骨折課件
- 北師大版七年級下冊第一章整式的乘除計算題專項訓練
- 2022年蘇州健雄職業(yè)技術學院單招考試面試試題及答案解析
- 植物生理教案
- 乳腺癌改良根治術
- 新版(七步法案例)PFMEA
- 臨床護理重點??平ㄔO項目評審標準
評論
0/150
提交評論