【正文】
行插入操作。(1) 執(zhí)行插入操作時需要分別檢查實體完整性規(guī)則、參照完整性規(guī)則和用戶定義完整性規(guī)則。外部關(guān)鍵字用于實現(xiàn)表與表之間的參照完整性。2. 關(guān)系模型的三個組成部分是什么?關(guān)系數(shù)據(jù)模型包括關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合和關(guān)系完整性約束三個重要因素。外部模式則是對外部數(shù)據(jù)庫的描述,它需要說明外部文件、構(gòu)成外部文件的字段及這些外部文件之間的聯(lián)系。如果要修改存儲數(shù)據(jù)庫的結(jié)構(gòu)(例如,用倒排文件代替多鏈表),那么僅僅需要把這些修改反映在存儲模式中,以使數(shù)據(jù)庫存儲系統(tǒng)能夠操作新的存儲數(shù)據(jù)庫。8. 為什么說概念數(shù)據(jù)庫和外部數(shù)據(jù)庫物理上并不真正存在?只有存儲數(shù)據(jù)庫是物理上存在的數(shù)據(jù)庫,概念數(shù)據(jù)庫是存儲數(shù)據(jù)庫的抽象,它反映了數(shù)據(jù)庫的全局邏輯結(jié)構(gòu);而外部數(shù)據(jù)庫是概念數(shù)據(jù)庫的部分抽取,它反映了數(shù)據(jù)庫的局部邏輯結(jié)構(gòu)。6. 傳統(tǒng)的三大數(shù)據(jù)模型是哪些?它們分別是如何表示實體之間的聯(lián)系的?傳統(tǒng)的三大數(shù)據(jù)模型是層次模型、網(wǎng)狀模型和關(guān)系模型。通過引入一個表示聯(lián)系的實體,將原來兩個實體之間的一個多對多的聯(lián)系轉(zhuǎn)換成分別與表示聯(lián)系的實體之間的兩個一對多的聯(lián)系。習(xí)題二1. 數(shù)據(jù)的三種范疇的含義是什么?數(shù)據(jù)需要我們的認識、理解、整理、規(guī)范和加工,然后才能存放到數(shù)據(jù)庫中。應(yīng)用程序依賴于文件的存儲結(jié)構(gòu),使得若修改文件的存儲結(jié)構(gòu)則必須修改程序。這是因為每個文件都是為特定的用途設(shè)計的,因此就會造成同樣的數(shù)據(jù)在多個文件中重復(fù)存儲。4. 數(shù)據(jù)完整性的含義是什么?保證數(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ù)庫的計算機應(yīng)用系統(tǒng)。5. 簡要概述數(shù)據(jù)庫管理員的職責。(2) 數(shù)據(jù)不一致性。(4) 數(shù)據(jù)聯(lián)系弱。數(shù)據(jù)從現(xiàn)實生活進入到數(shù)據(jù)庫實際經(jīng)歷了現(xiàn)實世界階段(認識、理解)、信息世界階段(規(guī)范、提升)和機器世界階段(管理),我們也把之稱為數(shù)據(jù)的三種范疇,數(shù)據(jù)在三種范疇中的概念、術(shù)語都有些不同。例如,倉庫和材料兩個實體之間存在著多對多的聯(lián)系,即一個倉庫可以存放多種材料,一種材料可以存放在多個倉庫;通過引入一個庫存實體轉(zhuǎn)換為倉庫與庫存之間的一對多聯(lián)系和材料與庫存之間的一對多聯(liá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)系。9. 說明在DBMS中存儲模式、概念模式和外部模式的作用。按這種方法,數(shù)據(jù)庫管理系統(tǒng)可以提供存儲(物理)數(shù)據(jù)獨立性。數(shù)據(jù)庫管理系統(tǒng)提供了外部模式與概念模式之間的映象以及概念模式與存儲模式之間的映象,使用戶通過外部數(shù)據(jù)庫或概念數(shù)據(jù)庫來操作存儲數(shù)據(jù)庫。3. 對關(guān)系模型的操作都包括哪些?關(guān)系數(shù)據(jù)模型中的操作包括:(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)。外部關(guān)鍵字是否允許為空值取決于語義的規(guī)定。首先檢查實體完整性規(guī)則,如果插入元組的主關(guān)鍵字的屬性不為空值、并且相應(yīng)的屬性值在關(guān)系中不存在(即保持唯一性),則可以執(zhí)行插入操作,否則不可以執(zhí)行插入操作。(2) 執(zhí)行刪除操作時一般只需要檢查參照完整性規(guī)則。所以執(zhí)行更新操作時的完整性檢查綜合了上述兩種情況。1) 檢索在倉庫WH2工作的職工的工資。π供應(yīng)商名(σ職工號=E6(訂購單) * 供應(yīng)商)5) 檢索所有職工的工資都大于1220元的倉庫所在的城市。π供應(yīng)商名(訂購單247??蛻?服務(wù)器結(jié)構(gòu)與文件服務(wù)器網(wǎng)絡(luò)結(jié)構(gòu)的硬件拓撲結(jié)構(gòu)很相似,它們的根本區(qū)別在于:客戶/服務(wù)器結(jié)構(gòu)的服務(wù)器可以執(zhí)行應(yīng)用程序;而文件服務(wù)器的服務(wù)器只是一個數(shù)據(jù)共享器,它不能執(zhí)行應(yīng)用程序。3. SQL Server在安裝后默認創(chuàng)建了哪幾個系統(tǒng)數(shù)據(jù)庫?分別敘述它們的作用。tempdb數(shù)據(jù)庫用于保存所有的臨時表和臨時存儲過程,它還可以滿足任何其它的臨時存儲要求。msdb數(shù)據(jù)庫用于SQL Server代理程序調(diào)度報警和作業(yè)等系統(tǒng)操作。習(xí)題五1. 試概述SQL語言的功能。SELECT 訂購單號 FROM 訂購單 WHERE 供應(yīng)商號=’S6’3) 檢索出職工E6發(fā)給供應(yīng)商S6的訂購單信息。SELECT * FROM 供應(yīng)商 WHERE NOT EXISTS( SELECT * FROM 訂購單 WHERE 供應(yīng)商號= )或:SELECT * FROM 供應(yīng)商 WHERE 供應(yīng)商號 not in ( SELECT供應(yīng)商號FROM 訂購單)7) 檢索出和職工EE3都有聯(lián)系的北京的供應(yīng)商信息。s439。s439。SELECT 城市 FROM 倉庫 WHERE 倉庫號 IN(SELECT 倉庫號 FROM 職工 WHERE 職工號 IN(SELECT 職工號 FROM 訂購單 WHERE 供應(yīng)商號=39。上海39。SELECT 職工號 FROM 職工 WHERE 倉庫號 IN(SELECT 倉庫號 FROM 倉庫 WHERE 城市=39。) AND 職工號 NOT IN(SELECT 職工號 FROM 訂購單 WHERE 供應(yīng)商號!=39。北京39。 SELECT AVG(面積) FROM 倉庫按城市算倉庫面積: SELECT 城市,AVG(面積) FROM 倉庫Group by城市17) 檢索出向S4供應(yīng)商發(fā)出訂購單的那些倉庫的平均面積。 SELECT 地址,COUNT(*) FROM 供應(yīng)商 GROUP BY 地址19) 檢索出每個倉庫中工資多于1220元的職工個數(shù)。在關(guān)系數(shù)據(jù)庫中,視圖也稱作窗口,即視圖是操作基本表的窗口。4. 以圖51的數(shù)據(jù)庫為例,用SQL語句完成以下更新操作,并討論數(shù)據(jù)完整性約束對這些操作的影響:1) 插入一個新的供應(yīng)商元組(S9,智通公司,沈陽)。智通公司39。DELETE FROM 供應(yīng)商 WHERE 供應(yīng)商號 NOT IN(SELECT 供應(yīng)商號 FROM 訂購單)3) 刪除由在上海倉庫工作的職工發(fā)出的所有訂購單。上海39。5) 給低于所有職工平均工資的職工提高5%的工資。SQL語句的查詢結(jié)果必須能夠交給宿主語言處理,宿主語言的數(shù)據(jù)也要能夠交給SQL語句使用。宿主語言的編譯系統(tǒng)不能識別SQL語句。而SQL語句的查詢結(jié)果常常是一張表,它包含多個記錄,為此需要用游標(CURSOR)作為橋梁做一些特殊處理,即利用游標來臨時存放SQL語句的查詢結(jié)果,并利用游標與宿主語言的主變量進行數(shù)據(jù)交互。有時候在編程序時SQL語句或語句的參數(shù)和格式不能確定,應(yīng)用程序只能在執(zhí)行時才知道需要什么樣的SQL語句,即必須在應(yīng)用程序執(zhí)行時動態(tài)建立SQL語句。2. 試為如下問題編寫、建立存儲過程,并定義合適的過程返回狀態(tài)碼和信息(均以圖51的數(shù)據(jù)庫為例):1) 插入一個新的供應(yīng)商元組。存儲過程插入的供應(yīng)商39。A339。地址39。,1000select eno查看結(jié)果,檢查廣州倉庫的面積是否如期增加了指定值?select * from 倉庫3) 檢索某職工發(fā)給某供應(yīng)商的訂購單信息。參數(shù)錯誤:不存在的供應(yīng)商號!39。S739。S739。 RETURN 5 end IF not exists (select * from 供應(yīng)商 where 供應(yīng)商號=sno) begin print 39。,39。觸發(fā)器是為表上的更新、插入、刪除操作定義的,也就是說當表上發(fā)生更新、插入或刪除操作時觸發(fā)器將執(zhí)行。s 觸發(fā)器可以強制比用CHECK約束定義更加復(fù)雜的限制。, 1, 1)ROLLBACK TRANSACTIONEND建立更新觸發(fā)器略習(xí)題七1. 討論數(shù)據(jù)庫安全都與哪些安全問題有關(guān)?數(shù)據(jù)庫安全實際涉及到很多方面,除了數(shù)據(jù)庫管理系統(tǒng)應(yīng)該具有安全保護功能之外,還需要從管理機制、人員行為、操作系統(tǒng)安全和網(wǎng)絡(luò)安全等多個方面采取措施。角色管理類似于用戶組的管理,可以將數(shù)據(jù)庫的所有用戶劃分成不同的角色,這樣可以簡化用戶管理,使用戶管理和權(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)管理。7. 試述在REVOKE語句中GRANT OPTION FOR子句和CASCADE子句的作用。禁止權(quán)限語句DENY的作用是禁止用戶從角色繼承指定的權(quán)限。2. 解釋事務(wù)的ACID性質(zhì)。4. 請舉出兩個并發(fā)的程序進行更新操作時相互干擾的例子。共享封鎖是為讀操作設(shè)置的一種封鎖,目的是想讀到一組不變的數(shù)據(jù),也就是在讀數(shù)據(jù)的過程中,不允許其他用戶對該數(shù)據(jù)進行任何修改操作。獨占封鎖也叫排他封鎖,這是最嚴格的一類封鎖。為了避免死鎖,一般可以采取兩種方式:s 相同順序法:所有的事務(wù)約定都按相同的順序來封鎖表;s 一次封鎖法:為了完成一個事務(wù),一次性封鎖所需要的全部表。s 提交讀(READ COMMITTED):可以保證不讀取“臟”數(shù)據(jù)。日志則是對備份的補充,它可以看作是一個值班日記,它將記錄下所有對數(shù)據(jù)庫的更新操作。11. 針對不同的故障類型(事務(wù)故障和介質(zhì)故障),試討論恢復(fù)的策略和方法。習(xí)題九1. 理解、定義如下術(shù)語,并分別給出兩個例子:函數(shù)依賴、部分函數(shù)依賴、完全函數(shù)依賴、傳遞函數(shù)依賴、主屬性。根據(jù)最小覆蓋的定義,: 步驟一:F中所有的函數(shù)依賴都已經(jīng)是單一屬性,算法進入下一步 步驟二:F中有AB→E,DE→B的左部為復(fù)合屬性,→E,∵∴F與F{AB→E} ∪ {A→E} 不等價∵∴F與F{AB→E} ∪ {B→E} 等價F變?yōu)閧B→E,DE→B,B→C,C→E,E→A}→B,∵∴F與F{DE→B} ∪ {E→B} 不等價∵∴F與F{DE→B} ∪ {D→B} 不等價F不變算法進入下一步步驟三:逐一檢查F中的各函數(shù)依賴→E,令G=F{B→E}, ∵,∵G與F等價 從F中去掉B→E F變?yōu)閧DE→B,B→C,C→E,E→A}2. 對DE→B,令G=F{DE→B},∵∵G與F不等價 故不能從F中去掉3. 對B→C,令G=F{B→C},∵∵G與F不等價 故不能從F中去掉4. 對C→E,令G=F{C→E},∵∵G與F不等價 故不能從F中去掉5. 對E→A,令G=F{E→A},∵∵G與F不等價 故不能從F中去掉 至此,算法結(jié)束, Fm={DE→B,B→C,C→E,E→A}5. 假設(shè)有一個名為參加的關(guān)系,該關(guān)系有屬性:職工(職工名)、工程(工程名)、時數(shù)(花費在工程上的小時數(shù))和工資(職工的工資);一個參加記錄描述一個職工花費在一個工程上的總時數(shù)和他的工資;另外,一個職工可以參加多個工程,多個職工可以參加同一個工程。2NF3) A、B、C、D都函數(shù)依賴于AB,而D還函數(shù)依賴于B。AC→B,BC→A習(xí)題十1. 試敘述概念數(shù)據(jù)庫設(shè)計和邏輯數(shù)據(jù)庫設(shè)計的區(qū)別,并說明各自的主要工作內(nèi)容。一般在概念設(shè)計階段主要工作內(nèi)容有:s 確定實體;s 確定實體的屬性;s 確定實體的標識屬性(關(guān)鍵字);s 確定實體間的聯(lián)系和聯(lián)系類型;s 確定實現(xiàn)實體間聯(lián)系的屬性(外部關(guān)鍵字或連接屬性);s 畫出表示概念模型的ER圖;除此之外,為了以后對模式進行規(guī)范化,還需要:s 確定屬性間的依賴關(guān)系。3. 到Sybase公司的網(wǎng)站()下載PowerDesigner的試用版,實踐利用PowerDesigner進行數(shù)據(jù)庫建模的方法和過程。2. 什么是對象的封裝性、繼承性和多態(tài)性?封裝性是指將類的數(shù)據(jù)和操作封裝在類定義中,對用戶來講類的“功能”是可見的,而實現(xiàn)部分是封裝在類定義中的,用戶是看不見的。子類不僅可以繼承基類的所有性質(zhì),還可以在子類中定義新的性質(zhì)。這樣做也與現(xiàn)實世界中管理和運作方法相吻合。s 在面向?qū)ο笳Z言中嵌入數(shù)據(jù)庫功能而形成面向?qū)ο髷?shù)據(jù)庫。這是最徹底的方法,缺點是難度大,一方面缺乏統(tǒng)一的數(shù)據(jù)模式及形式化理論,另一方面在查詢優(yōu)化、視圖及數(shù)據(jù)庫工具方面仍為空白。s 數(shù)據(jù)庫訪問界面要支持消息傳遞,提供計算能力完備的數(shù)據(jù)庫程序設(shè)計語言,能解決數(shù)據(jù)庫語言與宿主語言的某些不匹配問題,提供類似