一 填空題
1.1
數據庫的本質特征:永久存儲、有組織、可共享。
數據庫的目標特征:較小的冗余度,較高的獨立性,較好的擴展性
1.2
數據庫管理系統提供的主要功能有:數據定義功能(DDL)、數據操縱功能(DML)、數據控制功能(DCL)。
計算機數據管理技術主要經歷了:人工管理階段、文件管理階段、數據庫管理階段。
1.3
數據模型三要素是:數據結構、數據操作、數據的完整性規則。
常用的數據類型有:層次模型、網狀模型、關系模型。
1.4
數據庫的三級模式是指:模式(邏輯模式)、外模式(子模式)、內模式(物理模式、存儲模式)。
數據庫的二級映像:模式到外模式的映像、內模式到模式的映象。
1.5
關系的操作語言有:關系代數、SQL、關系演算。
關系的完整性包括:實體完整性、參照完整性、用戶自定義完整性。
1.6
關系代數中傳統的集合運算包括:並、交、差、積。
關系代數中專門的關系運算包括:選擇、投影、連接、除。
1.7
兩個實體之間的聯系類型有:一對一、一對多、多對多。
封鎖的類型有:排他鎖(X鎖)、共享鎖(S鎖)。
意向鎖的種類有:意向共享鎖(IS)、意向排他鎖(IX)。共享意向排他鎖(SIX)。
1.8
數據依賴的類型有:函數依賴、多值依賴、連接依賴。
“不好”的關系模式存在的主要問題包括:插入異常、刪除異常、較大的冗余。
1.9
在E-R圖設計時,常用的三種抽象是:分類、概括、聚集。
E-R圖合並時,常見的三種沖突是:屬性沖突、命名沖突、結構沖突
1.10
數據庫的存儲控制包括:自助存儲控制、強制存儲控制。
數據庫的SQL語言中,授予權限的命令是:grant;回收權限的命令是:revoke。
二 判斷題
2.1
超碼一定是候選碼。(×)
候選碼一定是超碼 (√)
2.2
數據庫中盡量減少冗余。(√)
數據庫中消除一切數據冗余。(×)
2.3
關系的元祖具有順序無關性。(√)
關系的列具有順序無關性。(√)
2.4
模式是關系的集合。(×)
關系數據庫是關系的集合。(√)
2.5
若X→→Y在U上成立,則在W(XYWU)上一定成立;(√)
若X→→Y在U上成立,則在W(XYUW)上一定成立。(×)
2.6
屬性3NF的關系模式必屬於BCNF。(×)
屬性BCNF的關系模式必屬於3NF。(√)
2.7
全碼的1NF一定是BCNF。(√)
單碼的1NF一定是2NF。(√)
2.8
基本的關系運算是:並、差、積、選擇、投影。(√)
基本的關系運算是:並、交、積、選擇、投影。(×)
2.9
數據庫系統就是數據庫管理系統。(×)
數據庫管理系統就數據庫系統。(×)
2.10
沖突可串行化調度一定是可串行化調度。(√)
可串行化調度一定是沖突可串行化調度。(×)
遵守兩端鎖協議的調度一定是可串行化調度。(√)
可串行化調度一定是遵守兩端鎖協議。(×)
一 選擇題
3.1
網狀模型的數據結構是(B)
層次模型的數據結構是(A)
A.樹 B.圖 C.棧 D.堆
3.2
E-R圖中,表示實體型的圖形是(A)
E-R圖中,表示屬性的圖形是(C)
A.矩形 B.棱形 C.橢圓形 D.直線
3.3
關系模式R(U,D,dom,F),表示屬性集合的是(A)
關系模式R(U,D,dom,F),表示屬性集合的是(D)
A.U B.D C.dom D.F
3.4
2NF是在1NF的基礎上,消除了非主屬性對碼的(A)
3NF是在2NF的基礎上,消除了非主屬性對碼的(B)
A.部分函數依賴 B.傳遞函數依賴 C.多值依賴 D.連接依賴
3.5
表屬於數據庫三級模式中的(A)
視圖屬於數據庫三級模式中的(D)
A.模式 B.物理模式 C.內模式 D.外模式
3.6
關系是一張二維表,其中一行在某一列上的值對應的概念是(A)
關系是一張二維表,其中一行對應的概念是(C)
A.分量 B.屬性 C.元祖 D.關系
3.7
如果事物T1對數據對象D施加了共享鎖S,則事物T1對D可進行的操作有(A)
如果事物T2對數據對象D施加了排他鎖X,則事物T2對D可進行的操作有(D)
A.只能讀不能寫 B.只能寫不能讀 C.可讀可寫 D.不能讀和寫
3.8
下列關鍵字打頭的語句,不屬於DML的是(A)
下列關鍵字打頭的語句,屬於DDL的是(A)
A.CREATE B.INSERT C.DELETE D.UPDATE
3.9
數據庫物理結構設計的成果是(C)
數據庫概念結構設計的成果是(D)
A.數據模型 B.邏輯模型 C.物理模型 D.概念模型
3.10
關系數據庫的代數優化中,應盡早執行(B)
A.笛卡爾積 B.選擇 C.投影 D.連接
在關系數據庫中,null表示(A)
A.不確定 B.空字符串 C.空格 D.0
B.
四 簡答題
4.1
1 簡述實體完整性規則和參照完整性規則。
答:
實體完整性規則:若屬性(指一個或一組屬性)A是基本關系R的主屬性,則A 不能取空值(null value)。所謂空值就是“不知道”或“不存在”或“無意義”的值。
參照完整性規則:若屬性A(或屬性組)F是基本關系R的外碼,它與基本關系S的主碼K相對應(基本關系R和S不一定是不同的關系),則對於R中每個元祖在F上的值必須:或者取空值(F的每個屬性值均為空值);或者等於S中某個元祖的主碼值。
2 簡述數據的邏輯獨立性和物理獨立性
答:
邏輯獨立性:當模式改變時,由數據庫管理員對各個模式/模式的映像作相應改變,可以是外模式保持不變。應用程序是依據數據的外模式編寫的,從而應用程序不必修改,保證了數據與程序的邏輯獨立性,簡稱數據的邏輯獨立性。
物理獨立性:當數據庫的存儲結構改變時,由數據庫管理員對模式/內模式的映像作相應改變,可以是模式保持不變,從而應用程序不必修改,保證了數據與程序的物理獨立性,簡稱數據的物理獨立性。
4.2
1 簡述數據庫安全控制的常用方法
答:
(1)用戶標識和鑒別:該方法由系統提供一定的方式讓用戶標識自己的名字或身份。每次用戶要求進入系統時,由系統進行核對,通過鑒定后才提供系統的使用權。
(2)存取控制:通過用戶權限定義和合法權檢查確保只有合法權限的用戶訪問數據庫,所有未被授權的人員無法存取數據。
(3)視圖機制:為不同的用戶定義視圖,通過視圖機制把要保密的數據對無權存取的用戶隱藏起來,從而自動地對數據提供一定程度的安全保護。
(4)審計:建立審計日志,把用戶對數據庫的所有操作自動記錄下來放入審計日志中,DBA 可以利用審計跟蹤的信息,重現導致數據庫現有狀況的一系列事件,找出非法存取數據的人、時間和內容等。
(5)數據加密:對存儲和傳輸的數據進行加密處理,從而使得不知道解密算法的人無法獲知數據
2 簡述視圖的作用
答:
(1)簡化了用戶操作。看到的就是需要的。視圖不僅可以簡化用戶對數據的理解,也可以簡化他們的操作。
(2)有利於數據保密。通過視圖用戶只能查詢和修改他們所能見到的數據。數據庫中的其它數據則既看不見也取不到。
(3)提高數據邏輯獨立性。視圖可幫助用戶屏蔽真實表結構變化帶來的影響。
4.3
1簡述數據庫管理系統完整性控制方法
答:(1)用戶定義完整性約束(2)完整性檢測 (3)違約處理
2 簡述數據庫系統的安全性控制和完整性控制的區別
答:
(1)數據庫系統的完整性控制是為了防止數據庫中存在不符合語義的數據,也就是防止數據庫中存在不正確的數據
(2)數據庫系統的安全性控制是為了防止非法用戶惡意破壞和非法存取和合法用戶的非法操作(超權操作)
4.4
1 簡述數據庫管理系統對數據查詢的基本過程
答:DBMS對查詢的處理過程分為4個階段:查詢分析、查詢檢查、查詢優化、查詢執行
2 簡述數據庫管理系統對鏈接查詢操作的實現方法
答:(1)循環連接方法 (2)排序連接方法(3)索引連接方法(4)哈希連接方法
4.5
1 簡述事務的概念及事務的特性
答:事務的概念:事務是用戶定義的一個數據操作序列,這些操作要么全做,要么全不做,是一個不可分割的工作單位。
2 事務的特性:原子性、一致性、隔離性、持續性。
A:原子性(Atomicity)
事務是數據庫的邏輯工作單位,事務中包括的諸操作要么全做,要么全不做。
B:一致性(Consistency)
事務執行的結果必須是使數據庫從一個一致性狀態變到另一個一致性狀態。一致性與原子性是密切相關的。
C:隔離性(Isolation)
一個事務的執行不能被其他事務干擾。
D:持續性/永久性(Durability)
一個事務一旦提交,它對數據庫中數據的改變就應該是永久性的。
3 簡述數據庫系統發生故障的種類
答:(1)事務故障(2)系統故障(3)介質故障
4.6
1 簡述日志文件的內容,說明在數據庫的恢復中如何根據日志文件進行READ和UNDO?
答:
日志登記內容:(1)事務的開始標記(2)事務的結束標記(3)事務的更新操作。
日志記錄內容:(1)事務標識(2)操作的類型(3)操作對象(4)更新前數據的舊值(5)更新后數據的新值。
UNDO:正向掃描日志文件,找出沒有事務結束標志的事務,對日志記錄的更新操作進行反向逆操作。
READ:正向掃描日志文件,找出既有開始標記又有結束標志的事務,然后根據日志文件順序重做該事務
4.7
1 簡述並發操作可能導致的數據不一致情形
答:
(1)丟失修改:兩個事物T1和T2讀入統一數據並修改,T2提交的結果破壞了T1提交的結果,導致T1的修改被丟失。
(2)不可重復讀:是指事物T1讀取數據后,事務T2執行更新操作,使T1無法再現前一次讀取結果。
(3)讀“臟”數據:指事務T1修改某一數據並將其寫回磁盤,事務T2讀取同一數據后,T1由於某種原因被撤銷,這時T1修改過的數據恢復原值,T2讀到的數據與數據庫中的數據不一致。
2 封鎖協議:一級封鎖協議二級封鎖協議三級封鎖協議
一級封鎖協議:防止丟失數據,並保證事物T是可恢復的
二級封鎖協議:防止丟失數據、防止讀“臟”數據
三級封鎖協議:防止丟失數據、防止讀“臟”數據,防止重復讀
3 簡述封鎖類型與並發度、系統開銷的關系,並說明理由
封鎖的粒度越大,並發度越小,系統開銷也越小;
封鎖的粒度越小,並發度越大,系統的開銷也越大。
如果封鎖粒度是比較小,減少事務的等待時間從而提高了並發度,但是粒度小事務需要加鎖的東西就增多系統用於並發控制的開銷加大。反之如果封鎖粒度是比較大並發度就較小系統開銷就小。
4.8
簡述死鎖的原因、死鎖的預防方法、死鎖的檢測方法
答:
1 原因:如果事務T1封鎖了數據R1,T2封鎖了數據R2,然后T1又請求封鎖R2,因T2已封鎖了R2,於是T1等待T2釋放R2上的鎖;接着T2又請求封鎖R1,因T1已封鎖了R1,T2也只能等待T1釋放R1上的鎖。這樣就出現了T1在等待T2,而T2又在等待T1的局面,T1和T2兩個事務永遠不能結束,形成死鎖。
2 預防方法:
(1)一次性封鎖法:要求每個事務必須一次將所有要使用的數據全部加鎖,否則就不能繼續執行。
(2)順序封鎖法:預先對數據對象規定一個封鎖順序,所有事務都按這個順序實施封鎖。
3 死鎖的檢測方法:
(1)超時法:如果一個事務的等待時間超過了規定的期限,就認為發生了死鎖。
(2)等待圖法:事務等待圖是一個有向圖G=(T,U),T為節點的集合,每個節點表示正在運行的事務,U為邊的集合,每條邊表示事務等待的情況。
五 應用題
現有關系如下:
學生:student(sno,sname,sage)
Sno學號,sname姓名,sage年齡
課程:course(cno,cname)
Cno課號,cname課名
學習:study(sno,cno,grade)
Sno學號,Cno課號,grade成績
要求:
1-2小題用關系代數表達式實現;
3-10小題用SQL實現
1 查詢所有學生的姓名和年齡
答:psname,sage (student)
2 查詢年齡小於20歲學生學號,姓名,年齡。
答:psno,sname,sage( ssage<20(student) )
3 查詢所有性’李’的學生姓名。
select sname
from student
where sname like '李%'
4查詢每門課程的平均成績。
select ave(grade)
from study
group by cno
查詢每個學生的平均成績。
select ave(grade)
from study
group by sno
5 查詢大於所有學生平均年齡的學生數。
select count(*) from student
where sage > ( select ave (age) from student )
6 查詢所有學生學號,姓名,課號,成績,
(包括沒有學習任何課程的學生)
select S.sno ,S.sname ,D.cno , D.grade
from student S left outer join study D
where S.sno=D.sno
查詢所有課程的課號,課名,學號,成績,
(包括沒有被任何學生學習的課程)
select C.cno ,C.cname ,D.sno , D.grade
from course C left outer join study D
where S.cno=D.cno
7查詢學生成績單:包括學號,姓名,課號,成績。
select S.sno,S.sname,C.cno,C.cname,D.grade
where student S, course C ,study D
where S.sno=D.sno and C.cno=D.cno
8插入學生記錄(’S2’,‘廖明’,22)到student表中
insert into student(sno,sname,sage)
values(’S2’,‘廖明’,22)
9
修改課號為“C2”的課程名為“數據庫原理”
update course
set cname =‘數據庫原理’
where cno = ‘C2’
10
刪除序號為‘S2’課號為‘C2’的學習記錄。
delete from study
where sno=‘S2’ and cno=’C2’
六 計算題
概念:
例:設有關系模式R(U,F),其中U={A,B,C,D,E};
F={AB→C,B→D,C→E,EC→B,AC→B}。
求(AB)F+
第一步:設X(0)=AB;
第二步:在函數依賴集中找AB的子集(AB,A,B)的函數依賴,有
AB→C,B→D。形成集合CD
第三步:X(1)=AB∪CD=ABCD
第四步:X(1)≠ X(0)且X(1)≠U。轉第二步
第二步:在函數依賴集中找出ABCD的子集的函數依賴,有C→E,
AC→B。形成集合BE
第三步:X(2)=ABCD∪BE=ABCDE
第四步:X(2)≠ X(1)但X(2)=U(終止於等於U)。於是(AB)F+=ABCDE。
求Fmin
①利用分解規則,把右端多屬性(n個)的函數依賴變成左端不變的n個函數依賴。(分解規則)
②對於F中每個X→A,設G=F-{X→A}。如果AÎXG+,則將X→A從F中刪除,否則保留。
③對於F中每個左邊包含多屬性的X→A,選擇X的每個真子集Z,如果AÎZF+,則用Z→A代替X→A。(因為F與(F-{X→A})∪{Z→A}等價的充要條件是AÎZF+)
極小函數依賴集Fmin不是唯一的,與處理順序有關。
(一) 設有關系模式,求Fmin,寫出詳細步驟。
.R(U,F),U={A,B,C,D},F={AB→CD,C→A,A→D,D→B};
解:
U={A,B,C,D},F={AB→CD,C→A,A→D,D→B}
①分解
G={AB→C,AB→D,C→A,A→D,D→B}
②計算
G={ AB→D,C→A,A→D,D→B} ={ABD} 無C保留
G={ AB→C, C→A,A→D,D→B} ={ABCD} 有D去掉
G={ AB→C, A→D,D→B} 無A保留
G={ AB→C, C→A, D→B } 無D保留
G={ AB→C, C→A, A→D, } 無B保留
F={ AB→C,C→A, A→D, D→B}
③拆分:
對於A→C:G={ ,C→A, A→D, D→B} AG+ ={A,B,C,D}
對於B→C: G={ ,C→A, A→D, D→B} BG+ =F
所以 Fmin={ A→C,C→A, A→D, D→B}
(二) 求關系R的碼
概念:
求碼的算法。
第1步:求Fmin。
第2步:將屬性集U中的屬性划分為3類:
UL類:僅出現在F中的函數依賴左部的屬性。
UL=左部屬性集-右部屬性集
UR類:僅出現在F中的函數依賴右部的屬性。
UR=右部屬性集-左部屬性集
UB類:均出現或均未出現在函數依賴左部和右部的屬性。 UB=U-UL-UR
第3步:若UL¹FÙ (UL)F+=U,則UL為R的唯一碼,算法終止。若(UL)F+¹U,轉第4步;若UL=F轉第5步。
第4步:若UB¹F,UL依次與UB中屬性或屬性組組合后,根據碼的定義求出所有碼,算法終止。
第5步:若UB¹F,根據碼的定義求出UB中屬性或屬性組的所有碼,算法終止
題目:
(1)R(U,F) ,U={A,B,C,D} Fmin={ A→B,A→D, B→C }
解:
第一步:求:Fmin={ A→B,A→D, B→C }
第二步:
UL ={A} UR ={D,C} UB ={B}
第三步:
(UL)F+ ={A,B,C,D } =U
所以R有唯一的碼 A
(2)R(U,F) ,U={A,B,C,D} Fmin={ D→B,B→D, AC→D }
第一步:求:Fmin={ D→B,B→D, AC→D }
第二步:
UL ={A,C} UR= FUB ={B,D}
第三步:
(UL)F+ ={A,B,C,D } =U
所以R有唯一的碼 AC
(三)范式判斷
概念:
1NF:規定了一個關系中的屬性值(分量)必須是"原子"的
2NF:消除了非主屬性對碼的部分函數依賴
3NF:在2NF的基礎上消除了非主碼屬性對碼的傳遞函數依賴
BCNF:在3NF的基礎上,BCNF消除了主屬性對不含它碼的部分函數依賴和傳遞函數依賴(判斷標准是每一個決定因素都含碼)
題目:
1 R(U,F) U={A,B,C,D} F={ D→B,B→D, AC→D }
碼為AC
解:
(1)每一個屬性都是“原子”的所以是 1NF
(2)非主屬性有B,D 所以其對主碼沒有部分函數依賴所以是2NF
(3)AC→D D→B 所以B傳遞函數依賴與AC所以不是3NF
所以R是二范式:
(四)模式分解
概念:
第一步:
構造一個k行n列的表,每行對應一個模式Ri(Ui)(i=1,2, …,k)的屬性集合。每列對應一個屬性Aj(j=1,2, …,n),如果Aj在Ui中,那么在表格的第i行第j列處添上記號aj(j為列號),否則添上記號bij(i為行號)。
第二步:
取F中每一個函數依賴X→Y,找出表中在X分量上相等的行,修改這些行Y分量上的值,使這些行在Y分量上的值相等。修改分為兩種情況:
①如果這些行的Y分量中有一個是aj,全部修改成aj;
②如果這些行的Y分量中沒有aj,全部修改成標號較小的bij。
第三步:
修改結束后的表格中若有一行全是a,即a1,a2,…,an,則ρ相對於F是無損連接分解,否則不是無損連接分解。
題目:
R(U,F) U={A,B,C,D,E} Fmin=F={AB→C,C→D, D→E }
ρ={ABC,CD,DE}
解:
第一步:
|
A |
B |
C |
D |
E |
A,B,C |
a1 |
a2 |
a3 |
b14 |
b15 |
C,D |
b21 |
b22 |
a3 |
a4 |
b25 |
D,E |
b31 |
b32 |
b33 |
a4 |
a5 |
第二步:
(1) AB→C (A,B列沒有同時相等的值所以表不變)
|
A |
B |
C |
D |
E |
A,B,C |
a1 |
a2 |
a3 |
b14 |
b15 |
C,D |
b21 |
b22 |
a3 |
a4 |
b25 |
D,E |
b31 |
b32 |
b33 |
a4 |
a5 |
(2) C→D
|
A |
B |
C |
D |
E |
A,B,C |
a1 |
a2 |
a3 |
b14 [a4] |
b15 |
C,D |
b21 |
b22 |
a3 |
a4 |
b25 |
D,E |
b31 |
b32 |
b33 |
a4 |
a5 |
(3) D→E
|
A |
B |
C |
D |
E |
A,B,C |
a1 |
a2 |
a3 |
a4 |
b15[a5] |
C,D |
b21 |
b22 |
a3 |
a4 |
b25[a5] |
D,E |
b31 |
b32 |
b33 |
a4 |
a5 |
第三步:判斷(第二部最后得到的表如下)
|
A |
B |
C |
D |
E |
A,B,C |
a1 |
a2 |
a3 |
a4 |
a5 |
C,D |
b21 |
b22 |
a3 |
a4 |
a5 |
D,E |
b31 |
b32 |
b33 |
a4 |
a5 |
由於第一行都是a所以模式R(U)的分解ρ是無損連接的分解。
第七題:設計題:
概念:
(1)E-R圖
實體:用矩形框表示 聯系:用菱形表示
屬性:用橢圓形表示
(2)ER模型轉換為關系模式的方法如下:
(1)一個實體轉換為一個關系模式,實體的屬性轉換為關系的屬性,實體的碼轉換為關系的碼。
(2)實體間的聯系根據聯系的類型:
①1:n的聯系
1:n的聯系合並到n端對應的關系模式中,將1端的碼添加在n屬性中,並作為外碼。
②1:1的聯系
1:1聯系與某個1端的關系模式合並,並在該關系模式中增加另一個實體的碼(作為外碼)以及聯系本身的屬性。
③m:n的聯系
通過引進一個新關系模式表達兩個實體間多對多的聯系,新關系模式的碼由聯系兩端實體的碼組合而成,同時增加相關的聯系屬性
題目:
(一) 根據描述畫出E-R圖,標明實體及其屬性,聯系及其聯系類型和屬性;
(二)將E-R圖轉化為模式(注意聯系的轉化)並用下划線指出每個關系模式的主鍵
設有教研室,教師,課程,三個實體集,
教研室有教研室名,地址等屬性。
教師有姓名,性別,年齡等屬性
課程有課名,學分等屬性。
每個教研室有若干教師,每個教師只能有一個教研室
每個教研室可以“開課“若干課程,每一門課只能在一個教研室開課
每一個教師可“講授”多門課程每一個課程課由多個老師講授老師講授課程有學期屬性。
解:
(1)E-R圖:
1 N
1 N
N M
(2) 模式設計
教研室(教研室編號,名字,地址)
教師(教師號, 姓名, 性別, 年齡,教研室編號)
課程(課號, 課名, 學分,教研室編號)
教學(教師號 ,課號 , 學期)