第四章作業 1. 什麼是資料庫安全性? 答:資料庫的安全性是指保護資料庫以防止不合法的使用所造成的數據泄露、更改或破壞。 2. 試述實現資料庫安全性控制的常用方法和技術。 答:實現資料庫安全性控制的常用方法和技術有: (1)用戶標識和鑒別:該方法由系統提供一定的方式讓用戶標識自己的名字或身份。每次用 ...
第四章作業
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.簡單介紹多粒度封鎖和意向鎖的概念。
多粒度封鎖協議允許多粒度樹中的每個結點被獨立的加鎖。對一個結點加鎖意味著這個節點的所有後裔結點也被加以同樣類型的鎖。
意向鎖的含義是如果對一個結點加意向鎖,則說明該節點的下層結點正在被加鎖;對仁義結點加鎖是,必須先對它的上層結點加意向鎖。