官术网_书友最值得收藏!

第2章 關(guān)系數(shù)據(jù)庫(kù)

一、選擇題

1在關(guān)系中能唯一標(biāo)識(shí)元組的最小屬性集稱為(  )。

A.外碼

B.候選碼

C.主碼

D.超碼

【答案】B

【解析】超碼(Super Key)是關(guān)系中能唯一標(biāo)識(shí)每個(gè)元組的屬性或?qū)傩越M(集),一個(gè)關(guān)系可能有多個(gè)超碼。

候選碼(Candidate Key)是關(guān)系中能唯一標(biāo)識(shí)每個(gè)元組的最小屬性或?qū)傩越M,一個(gè)關(guān)系可能有多個(gè)候選碼;主碼(Primary Key)則是從候選碼中選擇一個(gè),作為該關(guān)系的主碼。數(shù)據(jù)庫(kù)系統(tǒng)將按主碼標(biāo)識(shí)和排序每個(gè)元組。一個(gè)關(guān)系在任一時(shí)刻至多只能有一個(gè)主碼,但在不同時(shí)刻可以指定不同的候選碼作為主碼。

外碼(Foreign Key)則是在關(guān)系R1中的屬性或?qū)傩越M,若在另一個(gè)關(guān)系R2中作為主碼使用,則稱該屬性或?qū)傩越M為R1的外碼。R1的外碼和R2中的主碼必須定義在相同的域上,允許使用不同的屬性名。

2對(duì)關(guān)系數(shù)據(jù)庫(kù)來(lái)說(shuō),下面哪些說(shuō)法是錯(cuò)誤的(  )。

A.每一列的分量是同一種類型數(shù)據(jù),來(lái)自同一個(gè)域

B.不同列的數(shù)據(jù)可以出自同一個(gè)域

C.行的順序可以任意交換,但列的順序不能任意交換

D.關(guān)系中的任意兩個(gè)元組不能完全相同

【答案】C

【解析】基本關(guān)系具有以下6條性質(zhì):

列是同質(zhì)的,即每一列中的分量是同一類型的數(shù)據(jù),來(lái)自同一個(gè)域。

不同的列可出自同一個(gè)域,但是具有不同的列名(屬性名)。

列的順序無(wú)所謂,即列的次序可以任意交換。

任意兩個(gè)元組的候選碼不能相同。

行的順序無(wú)所謂,即行的次序可以任意交換。

分量必須取原子值,即每一個(gè)分量都必須是不可分的數(shù)據(jù)項(xiàng)。

3關(guān)于關(guān)系的完整性約束條件,下列說(shuō)法錯(cuò)誤的是(  )。

A.在關(guān)系模型中,允許定義實(shí)體完整性、參照完整性和用戶定義的完整性

B.用戶完整性應(yīng)該由關(guān)系系統(tǒng)自動(dòng)支持

C.參照完整性可由用戶或系統(tǒng)定義

D.用戶定義的完整性是應(yīng)用領(lǐng)域需要遵循的約束條件

【答案】B

【解析】關(guān)系完整性有三類:實(shí)體完整性、參照完整性和用戶定義的完整性。其中實(shí)體完整性保證每一個(gè)數(shù)據(jù)(實(shí)體)是可識(shí)別的,參照完整性保證當(dāng)數(shù)據(jù)與數(shù)據(jù)之間有聯(lián)系時(shí),這種聯(lián)系造成的數(shù)據(jù)取值的制約;用戶定義的完整性保證每一個(gè)數(shù)據(jù)的取值在應(yīng)用領(lǐng)域內(nèi)是合理的。其中,實(shí)體完整性和參照完整性是關(guān)系模型必須滿足的完整性約束條件,被稱為關(guān)系的兩個(gè)不變性。也就是說(shuō),只要是關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)就應(yīng)該自動(dòng)支持實(shí)體完整性和參照完整性。

4關(guān)系代數(shù)中的?連接操作由(  )操作組合而成。

A.σ和π

B.σ和×

C.π、σ和×

D.π和×

【答案】B

【解析】連接又稱為θ連接。它是從關(guān)系R和S的笛卡爾積中選取屬性值之間滿足一定條件的元組。因此,該運(yùn)算首先計(jì)算R和S的笛卡爾積,然后再?gòu)牡玫降慕Y(jié)果集合中選擇屬性值之間滿足一定條件的元組。該運(yùn)算得到結(jié)果是R和S的笛卡爾積的子集,其關(guān)系模式同R和S的笛卡爾積一樣。

5設(shè)關(guān)系R(A,B,C)和S(B,C,D),下列各關(guān)系代數(shù)表達(dá)式不成立的是(  )。

A.R÷S

B.πB(R)∪πB(S)

C.R∩S

D.R?S

【答案】C

【解析】R∩S運(yùn)算也要求R和S具有相同的屬性。

6有兩個(gè)關(guān)系R和S,分別包含15個(gè)和10個(gè)元組,則在R∪S、R-S、R∩S中不可能出現(xiàn)的元組數(shù)目情況是(  )。

A.15,5,10

B.18,7,7

C.21,11,4

D.25,15,0

【答案】B

【解析】A項(xiàng)的情形:若R∩S為10個(gè)元組,那么R∪S為15個(gè)元組、R-S為5個(gè)元組是正確的。

B項(xiàng)的情形:若R∩S為7個(gè)元組,那么R∪S應(yīng)為18個(gè)元組、R-S應(yīng)為8個(gè)元組。

C項(xiàng)的情形:若R∩S為4個(gè)元組,那么R∪S為21個(gè)元組、R-S為11個(gè)元組是正確的。

D項(xiàng)的情形:若R∩S為0個(gè)元組,那么R∪S為25個(gè)元組、R-S為15個(gè)元組是正確的。

7關(guān)系R與關(guān)系S只有一個(gè)公共屬性,T1是R與S等值連接的結(jié)果,T2是R與S自然連接的結(jié)果,下列敘述正確的是(  )。

A.T1的屬性個(gè)數(shù)等于T2的屬性個(gè)數(shù)

B.T1的屬性個(gè)數(shù)小于T2的屬性個(gè)數(shù)

C.T1的屬性個(gè)數(shù)大于或等于T2的屬性個(gè)數(shù)

D.T1的屬性個(gè)數(shù)大于T2的屬性個(gè)數(shù)

【答案】D

【解析】連接中有兩種最重要也最常用的連接,它們分別是等值連接和自然連接。等值連接就是比較運(yùn)算符θ為“=”的連接運(yùn)算;自然連接是一種特殊的等值連接,它要求兩個(gè)關(guān)系中進(jìn)行比較的分量必須是相同的屬性或?qū)傩越M合,并且在結(jié)果中把重復(fù)的屬性去掉。也就是說(shuō),自然連接是在笛卡爾積的結(jié)果中選擇相同屬性值相等的那些元組,最后還要去掉重復(fù)的屬性。因此,等值連接結(jié)果的屬性個(gè)數(shù)應(yīng)該大于自然連接結(jié)果的屬性個(gè)數(shù)。

8設(shè)關(guān)系R(A,B,C)和S(B,C,D),下列各關(guān)系代數(shù)表達(dá)式不成立的是(  )。

A.πA(R)?πD(S)

B.R∪S

C.πB(R)∩πB(S)

D.R?S

【答案】B

【解析】A項(xiàng)、D項(xiàng)都是執(zhí)行自行連接運(yùn)算,當(dāng)兩個(gè)關(guān)系無(wú)公共屬性時(shí),自然連接就等同于笛卡爾積運(yùn)算,因此,A項(xiàng)、D項(xiàng)都是正確的。關(guān)系的并、交、差運(yùn)算要求兩個(gè)關(guān)系是相容關(guān)系,即兩個(gè)關(guān)系屬性個(gè)數(shù)相等,且對(duì)應(yīng)的屬性來(lái)自同一個(gè)值域,R與S不是相容關(guān)系,所以B項(xiàng)是錯(cuò)誤的。

9有關(guān)系R(X,Y,Z),主鍵=X;S(W,X),主鍵W,外鍵=X,參照R的屬性X,關(guān)系R和關(guān)系S的元組如下所示。指出關(guān)系S中違反關(guān)系完整性規(guī)則的元組是(  )。

A.(1,2)

B.(2,null)

C.(3,3)

D.(4,1)

【答案】C

【解析】關(guān)系完整性有三類:實(shí)體完整性、參照完整性和用戶自定義的完整性。其中參照完整性保證當(dāng)數(shù)據(jù)與數(shù)據(jù)之間有聯(lián)系時(shí),這種聯(lián)系造成數(shù)據(jù)取值的制約。參照完整性規(guī)則是:若屬性(或?qū)傩越M)F是基本關(guān)系R的外碼,它與基本關(guān)系S的主碼Ks相對(duì)。

對(duì)于S關(guān)系而言,X是該關(guān)系的外碼,它與R關(guān)系的主碼X相對(duì)應(yīng)。根據(jù)參照完整性規(guī)則,S關(guān)系中X的取值或者取空值或者等于R中X的某個(gè)分量值。因此,S關(guān)系中X的分量值為3這一元組就是違背參照完整性規(guī)則的元組。

10關(guān)系運(yùn)算以關(guān)系代數(shù)為理論基礎(chǔ),關(guān)系代數(shù)的最基本操作是并、差、笛卡爾積、(  )。

A.投影、連接

B.連接、選擇

C.選擇、投影

D.交、選擇

【答案】C

【解析】關(guān)系代數(shù)是一種抽象的查詢語(yǔ)言,它通過(guò)對(duì)關(guān)系的運(yùn)算來(lái)表達(dá)查詢要求。關(guān)系代數(shù)的運(yùn)算共有8種,可分兩類:傳統(tǒng)的集合運(yùn)算和專門的關(guān)系運(yùn)算一傳統(tǒng)的集合運(yùn)算有:交、并、差、笛卡爾積,專門的關(guān)系運(yùn)算有:選擇、投影、連接和除。其中,并、差、笛卡爾積、選擇和投影5種運(yùn)算是基本運(yùn)算,其他3種運(yùn)算均可以用這5種基本運(yùn)算來(lái)表達(dá)。

二、填空題

1關(guān)系模型由(  )、(  )和(  )組成。

【答案】數(shù)據(jù)結(jié)構(gòu);數(shù)據(jù)操作;完整性規(guī)則

2關(guān)系代數(shù)運(yùn)算中,基本的運(yùn)算是(  )、(  )、(  )、(  )和(  )。

【答案】并;差;笛卡爾積;投影;選擇

3關(guān)系數(shù)據(jù)庫(kù)中基于數(shù)學(xué)的兩類運(yùn)算是(  )和(  )。

【答案】關(guān)系代數(shù);關(guān)系演算

4已知系(系編號(hào),系名稱,系主任,電話,地點(diǎn))和學(xué)生(學(xué)號(hào),姓名,性別,入學(xué)日期,專業(yè),系編號(hào))兩個(gè)關(guān)系,系關(guān)系的主碼是(  ),系關(guān)系的外碼是(  ),學(xué)生關(guān)系的主碼是(  ),外碼是(  )。

【答案】系編號(hào);無(wú);學(xué)號(hào);系編號(hào)

三、判斷題

1在一個(gè)關(guān)系中,不同的列可以對(duì)應(yīng)同一個(gè)域,但必須具有不同的列名。(  )

【答案】

【解析】例如一個(gè)關(guān)系中有平時(shí)分?jǐn)?shù)、期末考試分?jǐn)?shù)和總分屬性,它們的域都是相同的。

2關(guān)系中任何一列的屬性取值是不可再分的數(shù)據(jù)項(xiàng),可取自不同域中的數(shù)據(jù)。(  )

【答案】×

【解析】關(guān)系中任何一列的屬性取值是不可再分的數(shù)據(jù)項(xiàng),只能取自同一域中的數(shù)據(jù)。

3一個(gè)關(guān)系中不可能出現(xiàn)兩個(gè)完全相同的元組是由實(shí)體完整性規(guī)則確定的。(  )

【答案】×

【解析】一個(gè)關(guān)系中不可能出現(xiàn)兩個(gè)完全相同的元組,這是由關(guān)系的定義和特點(diǎn)確定的。

4投影操作是對(duì)關(guān)系表進(jìn)行水平方向的分割。(  )

【答案】×

【解析】投影操作是對(duì)關(guān)系表進(jìn)行垂直方向的分割。

5有兩個(gè)關(guān)系R和S,分別包含15個(gè)和10個(gè)元組,則在R∪S、R-S、R∩S中可能出現(xiàn)的一種元組數(shù)目情況是18、7、7。(  )

【答案】×

【解析】因?yàn)槿鬜∪S元組數(shù)目為18,表示R和S中有25-18=7個(gè)相同元組,R∩S的元組數(shù)目為7,但R-S的元組數(shù)應(yīng)為15-7=8個(gè)。

四、問(wèn)答題

1設(shè)有如圖2-1所示的關(guān)系R和S,計(jì)算:

(1)R1=R-S

(2)R2=R∪S

(3)R3=R∩S

(4)R4=R×S

圖2-1 關(guān)系R和S

答:本題各小題的結(jié)果如圖2-2所示。

圖2-2 計(jì)算結(jié)果

2設(shè)有如圖2-3所示的3個(gè)關(guān)系S、C和SC,將下列關(guān)系代數(shù)表達(dá)式用漢語(yǔ)表示出來(lái),并求其結(jié)果。

圖2-3 關(guān)系S、C和SC

(1)π267(б籍貫=‘上海’(S?SC))

(2)π267(S?SC?б課程=‘操作系統(tǒng)’(C))

(3)π23(S?(π12(SC)÷π1(C)))

答:(1)檢索籍貫為上海的學(xué)生的姓名、選修的課程號(hào)和成績(jī),其結(jié)果為圖2-4中的R1

(2)檢索選修操作系統(tǒng)的學(xué)生姓名、課程號(hào)和成績(jī),其結(jié)果為圖2-4中的R2

(3)檢索選修了全部課程的=學(xué)生姓名和年齡,其結(jié)果為圖2-4中的R3

圖2-4 關(guān)系R1、R2和R3

3設(shè)有如圖2-5所示的關(guān)系S、SC和C,試用關(guān)系代數(shù)表達(dá)式表示下列查詢語(yǔ)句:

圖2-5 關(guān)系S、C和SC

(1)檢索程軍老師所授課程的課程號(hào)(C#)和課程名(CNAME)。

(2)檢索年齡大于21的男學(xué)生學(xué)號(hào)(S#)和姓名(SNAME)。

(3)檢索至少選修程軍老師所授全部課程的學(xué)生姓名(SNAME)。

(4)檢索李強(qiáng)同學(xué)不學(xué)課程的課程號(hào)(C#)。

(5)檢索至少選修兩門課程的學(xué)生學(xué)號(hào)(S#)。

(6)檢索全部學(xué)生都選修的課程的課程號(hào)(C#)和課程名(CNAME)。

(7)檢索選修課程包含程軍老師所授課程之一的學(xué)生學(xué)號(hào)(S#)。

(8)檢索選修課程號(hào)為k1和k5的學(xué)生學(xué)號(hào)(S#)。

(9)檢索選修全部課程的學(xué)生姓名(SNAME)。

(10)檢索選修課程包含學(xué)號(hào)為2的學(xué)生所修課程的學(xué)生學(xué)號(hào)(S#)。

(11)檢索選修課程名為C語(yǔ)言的學(xué)生學(xué)號(hào)(S#)和姓名(SNAME)。

答:本題各個(gè)查詢操作對(duì)應(yīng)的關(guān)系代數(shù)表達(dá)式表示如下:

(1)πC#CNAME(бTEACHER=‘程軍’(C))

(2)πS#SNAME(бAGE>21∧SEX=‘男’(S))

(3)πSNAME(S?(πS#C#(SC)÷πC#(бTEACHER=‘程軍’(C))))

(4)πC#(C)-πC#(бSNAME=‘李強(qiáng)’(S)?SC)

(5)πS#(б[1][4][2][5](SC×SC)

(6)πC#CNAME(C?(πS#C#(SC)÷πS#(S)))

(7)πS#(SC?πC#(бTEACHER=‘程軍’(C)))

(8)πS#(SC)÷πC#(бC#=‘k1’∨C#=‘k5(C))

(9)πSNAME(S?(πS#C#(SC)÷πC#(C)))

(10)πS#C#(SC)÷πC#(бC#=‘2(SC))

(11)πS#SNAME(S?πS#(SC?(бCNAME=‘C語(yǔ)言’(C))))

4現(xiàn)有學(xué)生課程數(shù)據(jù)庫(kù),其中包括:學(xué)生關(guān)系Student,課程關(guān)系Course和選修關(guān)系Sc,關(guān)系的實(shí)例如表2-1、表2-2和表2-3所示。其中,Sc中的屬性Grade表示該學(xué)生該門課取得的成績(jī),Course中的屬性Credit表示該門課程的學(xué)分。

表2-1 學(xué)生課程數(shù)據(jù)庫(kù)-Student

表2-2 學(xué)生課程數(shù)據(jù)庫(kù)-Sc

表2-3 學(xué)生課程數(shù)據(jù)庫(kù)-Course

計(jì)算下述表達(dá)式的結(jié)果,并說(shuō)明各操作的實(shí)際查詢含義。

(1)σCname=‘?dāng)?shù)據(jù)庫(kù)原理’(Course)

(2)πSno(Sc)

(3)πCname(σCredit2(Course))

(4)πCnoGrade(σSno=‘03090101(Sc))

(5)Sc?Course?Student

(6)πSname(σCname=‘?dāng)?shù)據(jù)庫(kù)原理’(Student?Sc?Course))

(7)πSnoCno(Sc)÷Course

答(1)對(duì)Course關(guān)系作選擇運(yùn)算,選擇條件是課程名稱Cname屬性的取值為“數(shù)據(jù)庫(kù)原理”。因此,可以逐行考查Cname屬性的取值,如果某行的Cname屬性的取值為“數(shù)據(jù)庫(kù)原理”,就把該行放到結(jié)果集中。結(jié)果集合的關(guān)系模式仍同Course一樣。最終得到的結(jié)果集如圖2-6(a)。該操作實(shí)際上就是查詢“數(shù)據(jù)庫(kù)原理”課程的基本情況。

圖2-6(a) (1)的結(jié)果集合

(2)對(duì)Sc關(guān)系作投影運(yùn)算,只留下屬性Sno一列,因而結(jié)果集合中的關(guān)系模式不再同Sc一樣了,同時(shí)還會(huì)出現(xiàn)相同的行,最終結(jié)果集合中還會(huì)去掉重復(fù)的行。最終得到的結(jié)果集如圖2-6(b)。該操作實(shí)際上就是查詢選修過(guò)課程的學(xué)生的學(xué)號(hào)信息。

圖2-6(b) (2)的結(jié)果集合

(3)括號(hào)優(yōu)先,因此,首先對(duì)關(guān)系Course作選擇運(yùn)算,選擇那些學(xué)分Credit屬性的取值大于2的行,所得結(jié)果集合的關(guān)系模式仍同Course一樣,元組有2行。然后,再對(duì)此結(jié)果集合作投影運(yùn)算,只留下屬性Cname一列。最終得到的結(jié)果集如圖2-6(c)所示。該操作實(shí)際上就是查詢學(xué)分大于2分課程的課程名稱信息。

圖2-6(c) (3)的結(jié)果集合

(4)括號(hào)優(yōu)先,因此,首先對(duì)關(guān)系Sc作選擇運(yùn)算,選擇那些學(xué)號(hào)Sno屬性的取值為“03090101”的所有行,所得結(jié)果集合的關(guān)系模式仍同Sc一樣,元組有3行。這部分實(shí)際上就是查詢學(xué)號(hào)為“03090101”學(xué)生的所有選修情況,再對(duì)此結(jié)果集合作投影運(yùn)算,留下課程編號(hào)屬性Cno和成績(jī)屬性Grade兩列。最終得到的結(jié)果集如圖2-6(d)所示。該操作實(shí)際上就是查詢學(xué)號(hào)為“03090101”學(xué)生選修的所有課程的課程編號(hào)和對(duì)應(yīng)的成績(jī)信息。

圖2-6(d) (4)的結(jié)果集合

(5)運(yùn)算次序從左到右。首先關(guān)系Sc與關(guān)系Course作自然連接,共同屬性是Cno,因而此運(yùn)算就是在Sc與Course的笛卡爾積中選擇那些使Se.Cno-Course.Cno成立的行,同時(shí)得到的結(jié)果集中去掉重復(fù)的Cno屬性。結(jié)果如圖2-6(e)所示。然后,此結(jié)果集合再與Student作自然連接,共同屬性是Sno,此運(yùn)算就是在上述結(jié)果集合與Student的笛卡爾積中選擇那些使Se.Sno=Student.Sno成立的行,同時(shí)得到的結(jié)果集中去掉重復(fù)的Sno屬性。最終得到的結(jié)果集如圖2-6(f)所示。該操作實(shí)際上就是查詢選修過(guò)課程的學(xué)生的基本情況、選修情況以及課程情況信息。

圖2-6(e) (5)中Sc與Course自然連接的結(jié)果集合

圖2-6(f) (5)的最終結(jié)果集合

(6)括號(hào)優(yōu)先,因此,首先進(jìn)行Student與Sc再與Course的自然連接,得到的中間結(jié)果如圖2-6(f)所示。然后,對(duì)此中間結(jié)果集合進(jìn)行選擇運(yùn)算,即從中選擇課程名稱Cname屬性的取值為“數(shù)據(jù)庫(kù)原理”的行,得到的結(jié)果如圖2-6(g)所示。此操作實(shí)際上是查詢選修了“數(shù)據(jù)庫(kù)原理”課程的學(xué)生的基本情況、選修情況以及該門課程的基本、情況。最后,再對(duì)圖2-6(g)所示的結(jié)果集合進(jìn)行投影運(yùn)算,只留下學(xué)生姓名Sname屬性這一列,最終得到的結(jié)果集合如圖2-6(h)所示。該操作實(shí)際上就是查詢選修了“數(shù)據(jù)庫(kù)原理”課程的學(xué)生姓名信息。

圖2-6(g) 對(duì)自然連接的結(jié)果進(jìn)行選擇運(yùn)算后的結(jié)果集合

圖2-6(h) (6)的最終結(jié)果集合

(7)運(yùn)算次序從左到右。首先對(duì)關(guān)系Sc作投影運(yùn)算,留下學(xué)號(hào)屬性Sno和課程編號(hào)Cno屬性,然后與關(guān)系Course作除運(yùn)算。根據(jù)除運(yùn)算定義,我們可以知道,結(jié)果集合是只有屬性Sno的新關(guān)系,其中的元組根據(jù)除運(yùn)算定義可知只有一行,如圖2-6(i)所示。該操作實(shí)際上就是查詢選修了全部課程的學(xué)生學(xué)號(hào)信息。

圖2-6(i) (7)的最終結(jié)果集合

主站蜘蛛池模板: 浦城县| 益阳市| 长武县| 武城县| 车险| 顺平县| 甘德县| 克拉玛依市| 揭东县| 石家庄市| 淮阳县| 云和县| 瑞安市| 潜江市| 安新县| 梧州市| 玉溪市| 德惠市| 剑川县| 宿松县| 钟祥市| 富锦市| 五家渠市| 无棣县| 囊谦县| 嫩江县| 高清| 邵阳市| 张家口市| 石家庄市| 大石桥市| 泰宁县| 招远市| 平果县| 芜湖县| 柞水县| 西和县| 高要市| 蛟河市| 台前县| 涞源县|