第四章作業
1. 什么是數據庫安全性?
答:數據庫的安全性是指保護數據庫以防止不合法的使用所造成的數據泄露、更改或破壞。
2. 試述實現數據庫安全性控制的常用方法和技術。
答:實現數據庫安全性控制的常用方法和技術有:
(1)用戶標識和鑒別:該方法由系統提供一定的方式讓用戶標識自己的名字或身份。每次用戶要求進入系統時,由系統進行核對,通過鑒定后才提供系統的使用權。
(2)存取控制:通過用戶權限定義和合法權檢查確保只有合法權限的用戶訪問數據庫,所有未被授權的人員無法存取數據。例如 C2 級中的自主存取控制(DAC),B1級中的強制存取控制(MAC)。
(3)視圖機制:為不同的用戶定義視圖,通過視圖機制把要保密的數據對無權存取的用戶隱藏起來,從而自動地對數據提供一定程度的安全保護。
(4)審計:建立審計日志,把用戶對數據庫的所有操作自動記錄下來放入審 計日志中,DBA可以利用審計跟蹤的信息,重現導致數據庫現有狀況的一系列事件, 找出非法存取數據的人、時間和內容等。
(5)數據加密:對存儲和傳輸的數據進行加密處理,從而使得不知道解密算法的人無法獲知數據的內容。
3. 什么是數據庫中的自主存取控制和強制存取控制方法。
答:自主存取控制方法:定義各個用戶對不同數據對象的存取權限。當用戶對數據庫訪問時首先檢查用戶的存取權限。防止不合法用戶對數據庫的存取。
強制存取控制方法:每一個數據對象被(強制地)標以一定的密級,每一個用 戶也被(強制地)授予某一個級別的許可證。系統規定只有具有某一許可證級別 的用戶才能存取某一個密級的數據對象。
4. 今有兩個關系模式:
職工(職工號,姓名,年齡,職務,工資,部門號)
部門(部門號,名稱,經理名,地址,電話號)
請用SQL的grant和revoke語句(加上視圖機制)完成以下授權定義或者存取控制功能:
(1) 授予用戶王明對上述兩個表的SELECT權限
GRANT SELECT ON 職工,部門 TO 王明;
(2) 授予用戶李勇對上述兩個表的INSERT和DELETE權限
GRANT INSERT,DELETE ON 職工,部門 TO 李勇;
(3) 授予用戶劉星對職工表的SELECT權限和對工資字段的UPDATE權限
GRANT SELECT,UPDATE(工資) ON 職工 TO 劉星;
(4) 授予用戶張欣創建表的權限
GRANT ALTER TABLE ON 職工,部門 TO 張新;
(5) 授予用戶對上述兩個表的所有權限,並具有轉授給他人的權力。
GRANT AIL PRIVILIGES ON 職工,部門 TO 周平
WITH GRANT OPTION;
(6) 用戶楊蘭只能查看每個部門職工的最高工資、最低工資、平均工資,但不能查看每個職工的工資。
CREATE VIEW 部門工資 AS
SELECT 部門.名稱,MAX(工資),MIN(工資),AVG(工資)
FROM 職工,部門
WHERE 職工.部門號=部門.部門號
GROUP BY 職工.部門號;
GRANT SELECT ON 部門工資
TO 楊蘭;
(7) 撤銷用戶李勇對上述兩個表的INSERT和DELETE權限
REVOKE SELECT ON 職工,部門 FROM 王明;
REVOKE INSERT,DEIEIE ON 職工,部門 FROM 李勇;
(8) 撤銷用戶劉星對職工表的SELECT權限和對工資字段的UPDATE權限
REVOKE SELECT,UPDATE ON 職工 FROM 劉星;
(9) 撤銷用戶張欣創建表的權限
REVOKE ALTER TABIE ON 職工,部門 FROM 張新;
第五章作業
1. 什么是數據庫的完整性
數據庫的完整性是指數據的正確性和相容性。
2. 什么是數據庫的完整性約束條件
完整性約束條件是指數據庫中的數據應該滿足的語義約束條件。
5. 數據庫在實現參照完整性時需要考慮哪些方面?
RDBMS在實現參照完整性時需要考慮以下幾個方面:
(1)外碼是否可以接受空值。
(2)刪除被參照關系的元組時的考慮,這時系統可能采取的作法有三種:
1)級聯刪除(CASCADES)
2)受限刪除(RESTRICTED);
3)置空值刪除(NULLIFIES)。
(3)在參照關系中插入元組時的問題,這時系統可能采取的作法有:
1)受限插入;
2)遞歸插入。
(4)修改關系中主碼的問題。一般是不能用UPDATE語句修改關系主碼的。如果需要修改主碼值,只能先刪除該元組,然后再把具有新主碼值的元組插入到關系中。如果允許修改主碼,首先要保證主碼的惟一性和非空,否則拒絕修改。然后要區分是參照關系還是被參照關系。
第七章 數據庫設計作業
1. 試述數據庫設計過程。
(1)需求分析;
(2)概念結構設計;
(3)邏輯結構設計;
(4)數據庫物理設計;
(5)數據庫實施;
(6)數據庫運行和維護。
2. 什么叫數據抽象?
數據抽象是對實際的人、物、事和概念進行人為處理,抽取所關心的共同特性,忽略非本質的細節,並把這些特性用各種概念精確地加以描述,這些概念組成了某種模型。
3. 為什么要視圖集成?視圖集成的方法是什么?
在對數據庫系統進行概念結構設計時一般采用自底向上的設計方法,把繁雜的大系統解子系統。首先設計各個子系統的局部視圖,然后通過視圖集成的方式將各子系統有機地融合起來,綜合成一個系統的總視圖。這樣,設計清晰,由簡到繁。由於數據庫系統是從整體角度看待和描述數據的,因此數據不在面向某個應用而是整個系統。因此必須進行視圖集成,使得數據庫能被全系統的多個用戶、多個應用共享作用。 一般來說,視圖集成可以有兩種方式:
(1)多個分E-R圖一次集成;
(2)逐步集成,用累加的方式一次集成兩個分E-R圖
無論采用哪種方式,每次集成局部E-R圖時都需要分兩步走:
(1)合並,解決各分E-R圖之間的沖突,將各分E-R圖合並起來生成初步E-R圖; (2)修改和重構,消除不必要的冗余,生成基本E-R圖。
4. 現有一個學校信息系統。
該學校有多個系,描述系的信息有:系編號、系名
每個系有多名教師,描述教師的信息有:教師編號、教師名、研究領域。每個教師只能屬於一個系,一個系可以有多個老師。
每個系都有一個教師作為系主任,每個教師只能在一個系當系主任
每個系有多個班級,描述班級的信息有:班級編號、班級名、專業,每個班級只屬於一個系。
每個班級有多個學生,每個學生只能屬於一個班級。描述學生的信息有:學號、姓名、年齡、性別。
每個班級都有一個學生擔任班長,一個學生只能在一個班級擔任班長。
有的學生擔任指導員,一個指導員可以管理多個學生,每個學生只能有一個指導員。
一個系可以有多門課程,每門課可以在多個系開課。描述課程的信息有:課程編號、課程名、學時、學分
一個教師可以講多門課,一門課可以被多個教師講。一個學生可以選擇多門課,一門課可以被多個學生學。但當一個學生選定一門課時,就有一個確定的老師。一個學生選定的每一門課程都有一個成績。
要求:
(1) 畫出ER圖
(2) 將其轉換為關系模式,並規范化到3NF。
(3) 指出每個關系模式的主碼和外碼。
第九章 查詢優化
1. 試述查詢優化的一般准則和主要步驟
查詢優化的總目標是選擇有效的策略,求給定關系表達式的值,值得查詢代價較小,因為查詢優化的搜索空間有時非常大,實際系統選擇的策略不一定是最優的,而是較優的。(1)計算廣義笛卡爾積(2)做選擇操作(3)做投影操作
2. 簡述選擇、連接等關系代數操作的實現算法。
代數優化策略是通過對關系代數表達式的等價變換來提高查詢效率。所謂關系代數表達上司的等價是指用相同的關系代替兩個表達式中相應的關系得到的結果是相同的。
第十章 數據庫恢復
1. 試述事務的概念及事務的四個特性。恢復技術可以保證事務的哪些特性?
所謂事務是用戶定義的一個數據庫操作序列,這些操作要么全做,要么全不做,只一個不可分割的工作單位。
事務具有4個特性:原子性,一致性,隔離性和持續性,這4 個特性簡稱ACID特性。恢復技術可以保證事務的原子性,一致性與持續性。
2. 數據庫運行中可能產生的故障有哪幾類?
事物內部故障;系統故障;介質故障;計算機病毒。
3. 數據庫恢復的基本技術有哪些?對每種技術做簡要的描述
恢復機制涉及的兩個關鍵問題是:如何建立冗余數據,以及如何利用這些冗余數據實施數據庫恢復。建立冗余數據最常用的技術是數據轉儲和登記日志文件。通常在一個數據庫系統中,這兩種方法是一起使用的。
數據轉儲是數據庫恢復中采用的基本技術。所謂轉儲即數據庫管理員定期地將整個數據庫復制到磁帶、磁盤或其他存儲介質上保存起來的過程。這些備用的數據成為后備副本或后援副本。
日志文件是用來記錄事務對數據庫的更新操作的文件。不同數據庫系統采用的日志文件格式並不完全一樣。概括起來日志文件主要有兩種格式:以記錄為單位的日志文件和以數據塊為單位的日志文件。
4. 給出不同故障的恢復策略和方法。
事務故障是指事務在運行至正常重點前被終止,這時恢復子系統應利用日志文件撤銷此事務已對數據庫進行的修改。事務故障的恢復是由系統自動完成的,對用戶是透明的。系統恢復的步驟是:
(1)反向掃描日志文件,查找該事務的更新操作。
(2)對該事務的更新操作執行逆操作,即將日志目錄中“更新前的值”寫入數據庫。這樣,如果記錄中是插入操作,則相當於做刪除操作(因此時“更新前的值”為空);若記錄中的是刪除操作,則做插入操作;若是修改操作,則相當於修改前置代替修改后的值。
(3)繼續反向掃描日志文件,查找該事務的其他更新操作,並做同樣處理。
(4)如此處理下去,直至讀到此事務的開始標記,事務故障恢復就完成了。
系統故障的恢復是由系統在重新啟動時自動完成的,不需要用戶干預。系統恢復的步驟是:
(1)正相掃描日志文件(即從頭掃描日志文件),找出在故障發生之前已經提交的事務。將其事務標識計入重做隊列。同事找出故障發生時尚未完成的食物,將其事務標識記入撤銷隊列。
(2)對撤銷隊列中的各個事務進行撤銷處理。進行撤銷處理的方法是,反向掃描日志文件,對每個撤銷事務的更新操作執行逆操作,即將日志記錄中“更新前值”寫入數據庫。
(3)對重做隊列中的各個失誤進行重做處理。對重做處理的方法是:正向掃描日志文件,最每個崇左市五重新執行日志文件登記的操作,即將日志文件中“更新后的值”寫入數據庫。
發生介質故障后,磁盤上的物理數據和日志文件被破壞,這是最嚴重的一種故障,恢復方法是重裝數據庫,然后崇左已完成的事物。
(1)裝入最新的數據庫后備副本,是數據庫恢復到最近一次轉儲時的一致性狀態。對於動態轉儲的數據庫副本,還需同時裝入轉儲開始時刻的日志文件副本,利用恢復系統故障的方法,才能將數據庫恢復到一致性狀態。
(2)裝入相應的日志文件副本,重做已完成的事務。即首先掃描日志文件,找出故障發生時已提交的事務的標識,將其計入重做隊列;然后正向掃描日志文件。對重做隊列中的所有事物進行重做處理。即將日志記錄中“更新后的值”寫入數據庫。
5. 具有檢查點的恢復技術有什么特點?
這種技術在日志文件中增加一類新的記錄——檢查點記錄,增加一個重新開始文件,並讓恢復子系統在登錄日志文件期間動態的維護日志。使用檢查點方法可以改善恢復效率。
第十一章 並發控制
1.並發操作有什么優點?但可能會產生哪幾種數據不一致?
為了保證施工,數據庫管理系統需要對兵法操作進行正確調度。 並發操作帶來的數據不一致性包括丟失修改、不可重復讀和讀“臟”數據。
2.什么是封鎖及鎖協議?
封鎖就是事務T在對某個數據對象例如表、記錄等操作之前,現象系統發出請求沒對其加鎖。加鎖后事務T就對該數據對象有了一定的控制,在事務T釋放它的鎖之前,其他事務不能更新此數據對象。
在運用X鎖和S鎖這兩種基本封鎖對數據對象甲所示,還需要約定一些規則。例如,何時申請X鎖或S鎖、持鎖時間、和實施方等。這些規則成為封鎖協議。
3.什么是死鎖、活鎖?相應的解決方法是什么?
T2有可能永遠等待,這就是活鎖。T1在等待T2,二T2又在等待T1的局面,T1和T2兩個事務永遠不能劫數,形成死鎖。避免活鎖的簡單方法是采用先來先服務的策略。目前解決數據庫中死鎖問題主要有兩類方法,一類方法是采取一定措施來預防死鎖的發生。另一類方法是允許發生死鎖,采用一定手段定期診斷系統中有無死鎖,若有則解除之
4.什么樣的並發調度是正確的?怎樣得到正確的並發調度?
串行調度是正確的。執行結果等價於串行調度的調度也是正確的。這樣的調度叫做可串行化調度。可串行性是並發事務正確調度的准則。按這個准則規定,一個給定的並發調度,當且僅當它是可串行化的,才認為是正確調度。
5.簡單介紹多粒度封鎖和意向鎖的概念。
多粒度封鎖協議允許多粒度樹中的每個結點被獨立的加鎖。對一個結點加鎖意味着這個節點的所有后裔結點也被加以同樣類型的鎖。
意向鎖的含義是如果對一個結點加意向鎖,則說明該節點的下層結點正在被加鎖;對仁義結點加鎖是,必須先對它的上層結點加意向鎖。