資料庫期末複習

資料庫原理與應用教程

期末測試題(一)

注意:

資料中帶*號和紅色字型標註的為當天老師用紅色字型標註的不重要內容,藍色字型是題目答案。

一、填空題(每空1分,共10分)

1.資料庫系統的核心是資料庫管理系統

2.在關係模型中,實體以及實體間的聯絡都是用關係(二維表)來表示的。

3.設關係模型R(A,B,C),F是R上的函式依賴集,F=,則R的候選碼為(A,C)。

4.層次模型用“樹結構”來表示資料之間的聯絡,網狀模型用“圖狀結構” 來表示資料之間的聯絡。

5.SQL Server2005中,一個簡單的資料庫可以只有一個數據檔案和一個日誌檔案。

*6.聚集索引和非聚集索引的儲存結構都採用B樹索引結構。

*7.一個事務必須具有的四個屬性是原子性、一致性、隔離性和永續性。

8.在T-SQL中,查詢表中資料時,可用DISTINCT關鍵字濾掉重複行。

*9.呼叫標量函式時必須提供至少由兩部分組成的名稱,即擁有者。

10.DML 觸發器是當資料庫伺服器中發生資料操作語言事件時會自動執行的儲存過程。

二、選擇題(每小題1分,共20分)

1、資料管理的發展不包括下面哪個階段(  D )

(A)檔案系統       (B)資料庫系統

(C)人工管理      (D)統一管理

2、一個學生可以同時借閱多本書,一本書只能由一個學生借閱,學生和圖書之間是什麼樣的聯絡(B )

(A)一對一         (B)一對多

(C)多對多          (D)以上全不是

*3、如果事務1將資料庫中的A值從200改為300,事務2讀A值為300,事務1又將剛才的操作撤銷,A值恢復為200,那麼事務2讀取了“髒”資料。這種情況是由於資料庫保護中的那方面不當而引起的(    )

(A)併發控制             (B)完整性約束

(C)安全性控制          (D)資料庫的恢復

4、在關係模型中,“元組”是指( A   )

(A)表中的一行               (B)表中的一列

(C)表中的一個數據         (D)表中的一個成分

5、有學生、選修和課程三個關係,學生S(學號,姓名,性別…。),課程C(課程號,課程名),選修SC(學號,課程號,成績)。想查詢選修2號課程的學生的學號和姓名,則關係運算式應寫成(  C  )

(A)∏學號(σ課程號=2 (S∞SC))             (B) ∏學號,姓名(σ課程號=2 (S))

(C)∏學號,姓名(σ課程號=2 (S∞SC))  (D)σ課程號=2 (∏學號,(S∞SC))

6、規定關係的所有主屬性都不能取空值,是用來實現哪一類完整性約束(  A  )

(A)實體完整性         (B)屬性值的約束

(C)參照完整性          (D)使用者定義完整性

7、學生關係(學號,姓名,性別,年齡,系號,系名)中,“系名”對主關鍵字“學號”的函式依賴是(  C  )

(A)完全函式依賴          (B)部分函式依賴

(C)傳遞函式依賴         (D)平凡函式依賴

8、在一個關係中,所有欄位都是不可分的,給定一個關鍵字,則可以在這個資料表中唯一確定一條記錄,則這個關係一定滿足1NF、2NF和3NF中的(  A  )

(A)1NF                             (B)1NF和2NF

(C)1NF、2NF和3NF         (D)2NF和3NF

9、有關係R和S,關係代數運算R∩S等價於(  B  )

(A)S-(R-S)    (B)R-(R-S)

(C)R-S           (D)S-R

10、有學生、選修和課程三個關係,S(學號,姓名,性別,年齡),C(課程號,課程名),SC(學號,課程號,成績)。以下選項中外碼是( B  )

(A) S。學號   (B)SC。學號   (C)C。課程號    (D)SC。成績

11、要想用T-SQL語句從學生表中查詢學號的前四個字元為“2004”第五個字元任意,後三個字元為“-05”的學生,條件表示式為(C )

(A)學號 LIKE ‘2004-05’             (B)學號= ‘2004%-05’

(C)學號 LIKE ‘2004_-05’          (D)學號= ‘2004_-05’  [^A-Z]

12、已知三個關係:

S(學號,姓名,性別);C(課程編號,課程名稱,學時)

SC(學號,課程編號,分數)

若要查詢所有選了課的學生的學號和姓名,下列語句正確的是( D )

(A) select 學號,姓名 from s WHERE 學號  in  (select學號from sc)

(B)select 學號,姓名 from s

WHERE  in  (select * from sc where s。學號=sc。 學號)

(C)select學號,姓名 from s

WHERE 學號 exists (select * from sc where s。學號=sc。 學號)

(D)select學號,姓名 from s

WHERE exists (select * from sc where s。 學號=sc。 學號)

13、SQL語句中刪除表的命令是(  C  )

(A)DELETE TABLE        (B)DELETE DBF

(C)DROP TABLE         (D)DROP DBF

14、如果課程表Course是使用以下SQL語句建立的:CREATE TABLE Course(Cno CHAR(2) not null, Cname CHAR(20), Cfen INT);下面的SQL語句中可以正確執行的是( D )

(A)INSERT INTO Course(Cno,Cname,Cfen) VALUES (C2,’資料庫’,3)

(B)INSERT INTO Course(Cno,Cname,Cfen ) VALUES(‘C2’,’資料庫’, ‘2’)

(C)INSERT INTO Course(Cname,Cfen )VALUES(‘資料庫’,3)

(D)INSERT INTO Course(Cno,Cname )VALUES(‘C2’,’資料庫’)

*15、已知三個關係:

S(SNO,NAME,SEX,CLASS);C(CNO,CNAME,TIME);

SC(SNO,CNO,DEGREE)

若要查詢統計每門課各班的平均成績和每門課的平均成績以及總的平均成績,下列語句正確的是(   )

(A)select class, cname, avg(degree) as平均分from s, sc, c where s。sno=sc。sno and c。 cno=sc。cno group by s。class, c。 cname with rollup

(B)select class, cname, avg(degree) as平均分from s, sc, c where s。sno =sc。sno and c。 cno =sc。 cno group by s。 class, c。 cname with cube

(C) select class, cname, avg(degree) as平均分 from  s, sc, c where  s。sno =sc。 sno and c。 cno =sc。 cno group by  c。 cname, s。class with cube

(D)select class, cname, avg(degree) as 平均分from s, sc, c  where  s。 sno =sc。 sno and c。 cno =sc。 cno group by  c。 cname, s。class with rollup

16、當where子句、聚合函式、group by子句和having子句同時出現在一個查詢中時,最後執行的是( A )

(A)聚合函式            (B)where子句

(C)group by子句     (D)having子句

*17、授予user1使用者修改st表中的“姓名”欄位的許可權,應使用的SQL語句是(  )

(A)GRANT UPDATE(姓名) ON st TABLE TO user1

(B)GRANT UPDATE(姓名) ON TABLE st TO user1

(C)GRANT MODIFY(姓名) ON st TABLE TO user1

(D)GRANT MODIFY(姓名) ON TABLE st TO user1

18、SQL Server 中,主資料庫檔案的副檔名為( A )

(A)。mdf???????   ? (B)。dbf        (C)。ldf  ??????   (D)。ndf

*19、顯式事務和隱式事務都需要用什麼語句來提交和回滾(   )

(A)END TRANSACTION和ROLLBACK TRANSACTION

(B)COMMIT TRANSACTION和ROLLBACK TRANSACTION

(C)SAVE TRANSACTION和ROLLUP TRANSACTION

(D)COMMIT TRANSACTION和ROLLUP TRANSACTION

20、下列哪種情況不適合建立索引(  B  )

(A)表中的主鍵列                       (B)只有兩個或若干個值的列

(C)需要強制實施唯一性的列     (D)連線中頻繁使用的列

三。 名詞解釋(每小題3分,共15分)

1、資料庫:資料庫就是存放資料的倉庫,是將資料按一定的資料模型組織、描述和儲存,能夠自動進行查詢和修改的資料集合。

2、候選關鍵字:如果在一個關係中,存在多個屬性(或屬性組合)都能用來唯一標識該關係中的元組,這些屬性(或屬性組合)都稱為該關係的候選關鍵字或候選碼。

3、檢視:檢視(View)是關係資料庫系統提供給使用者以多種角度觀察資料庫中資料的重要機制,檢視是從一個或幾個表匯出來的表,不是真實存在的基本表而是一張虛表,檢視所對應的資料並不實際地以檢視結構儲存在資料庫中,而是儲存在檢視所引用的表中。

4、遊標:遊標是處理資料的一種方法,它允許應用程式對查詢語句SELECT 返回的結果集中每一行進行相同或不同的操作,而不是一次對整個結果集進行同一種操作。

5、事務:事務由一系列的資料操作組成,是資料庫應用程式的基本邏輯單元,用來保證資料的一致性。

四、簡答題(每小題5分,共25分)

1、建立索引的必要性和作用是什麼?

資料庫的索引就類似於書籍的目錄,如果想快速查詢而不是逐頁查詢指定的內容,可以透過目錄中章節的頁號找到其對應的內容。類似地,索引透過記錄表中的關鍵值指向表中的記錄,這樣資料庫引擎就不用掃描整個表而定位到相關的記錄。相反,如果沒有索引,則會導致SQL Server搜尋表中的所有記錄,以獲取匹配結果。

2、簡述主鍵約束和唯一性約束的異、同點。

主鍵約束在表中定義一個主鍵值,這是唯一確定表中每一行資料的識別符號。該約束強制實體完整性。一個表中最多隻能有一個主鍵,且主鍵列不允許取空值。

UNIQUE(唯一性)約束指定表中某一個列或多個列不能有相同的兩行或兩行以上的資料存在。這種約束透過實現唯一性索引來強制實體完整性。當表中已經有了一個主鍵約束時,如果需要在其他列上實現實體完整性,又因為表中不能有兩個或兩個以上的主鍵約束,所以只能透過建立UNIQUE約束來實現。一般地,把UNIQUE約束稱為候選的主鍵約束。

3、簡述T-SQL語言的特點。

(1)綜合統一:T-SQL語言集資料定義語言、資料操縱語言、資料控制語言和附加語言元素為一體。

(2)兩種使用方式,統一的語法結構:即聯機互動式和嵌入高階語言的使用方式。

(3) 高度非過程化

(4) 類似於人的思維習慣,容易理解和掌握

4、簡述儲存過程的優點。

儲存過程最主要的特色是當寫完一個儲存過程後即被翻譯成可執行碼儲存在系統表內,當作是資料庫的物件之一,一般使用者只要執行儲存過程,並且提供儲存過程所需的引數就可以得到所要的結果而不必再去編輯T-SQL命令。

5、簡述死鎖及其解決辦法。

產生死鎖的情況一般包括以下兩種:

第一種情況,當兩個事務分別鎖定了兩個單獨的物件,這時每一個事務都要求在另外一個事務鎖定的物件上獲得一個鎖,因此每一個事務都必須等待另外一個事務釋放佔有的鎖,這時,就發生了死鎖。這種死鎖是最典型的死鎖形式。

第二種情況,當在一個數據庫中時,有若干個長時間執行的事務執行並行的操作,當查詢分析器處理一種非常複雜的查詢例如連線查詢時,那麼由於不能控制處理的順序,有可能發生死鎖現象。

在資料庫中解決死鎖常用的方法有:

(1)要求每個事務一次就將要使用的資料全部加鎖,否則就不能繼續執行。

(2)允許死鎖發生,系統來用某些方式診斷當前系統中是否有死鎖發生。

五、綜合題(每小題10分,共30分)

1、把下面用關係表示的實體、實體與實體之間的聯絡,用E-R圖表示出來,要求在圖中表示聯絡的型別(1:1、1:n、m:n),並寫出相應的關係模式和各關係的主關鍵字。

實體1:學生(學號,姓名,性別,年齡);

實體2:課程(課程號,課程名,學分);

實體1與實體2的聯絡:學習(學號,課程號,成績)。

注:一個學生可以選多門課程,一門課程也可以被多個學生選,學生選課後有成績。

1、E-R圖:

關係模式:

學生(學號,姓名,性別,年齡)

課程(課程號,課程名,學分)

學習(學號,課程號,成績)

2.設有關係模式R(運動員編號,姓名,性別,班級,班主任,專案號,專案名,成績)如果規定:每名運動員只能代表一個班級參加比賽,每個班級只能有一個班主任;每名運動員可參加多個專案,每個比賽專案也可由多名運動員參加;每個專案只能有一個專案名;每名運動員參加一個專案只能有一個成績。根據上述語義,回答下列問題:

(1)寫出關係模式R的候選碼;

(2) R最高屬於第幾正規化?說明理由;

(3) 若R不是3NF,將其分解為3NF。

解:(1)關係模式R的主關鍵字是(運動員編號,專案號)。

(2)R最高屬於第一正規化。

因為存在著姓名,性別,班級和專案名對主關鍵字(運動員編號,專案號)的部

分函式依賴,沒有達到2NF。

(3)首先分解為2NF:R1(運動員編號,姓名,性別,班級,班主任),R2(專案號, 項

目名),R3(運動員編號,專案號,成績)

因為R1存在班主任對運動員編號的傳遞函式依賴,所以沒有達到3NF,再分解為3NF:R1分解為R1(運動員編號,姓名,性別,班級)和R4(班級,班主任)

3。 設有一個學生-課程資料庫,包括學生關係Student、課程關係Course、選修關係SC,如下圖所示:

Student

學號姓名性別年齡所在系

95001李勇男20CS

95002劉晨女19IS

95003王敏女18MA

Course

課程號課程名學分

1資料庫3

2數學3

3資訊系統4

4作業系統3

SC

學號課程號成績

根據以上所定義的三張基表寫出相應的SQL語句:

(1)查詢年齡在20以下的女生的姓名、系別、年齡。

(2)查詢每個學生的姓名及其選修課程的課程名。

(3)建立一個檢視,包括每個系的學生所選的每門課程的平均成績,而且只選取平均成績為80分以上的。

(4)查詢學號為95013的學生的各科成績,如果沒有這個學生的成績,就顯示“此學生無成績”。

解:(1)select 姓名,所在系,年齡 from Student

where 年齡

(2)select Student。姓名, C。課程名  from Student, SC,Course

where Student。學號=SC。學號and SC。課程號=Course。課程號

(3)create view view1 as

select 所在系, 課程號,avg(成績)as 平均成績from student, course

where Student。學號=SC。學號

group by所在系, 課程號

having (avg(成績)>=80)

(4)if (select count(*) from sc where sno=’95013’)>0

select * from sc where sno=’95013’

else

print’ 此學生無成績’

期末測試題(二)

一、填空題(每空1分,共10分)

1。在資訊世界中能唯一標識實體的屬性集,稱為碼。

2。如果關係模式R是1NF,且每個非主屬性都完全函式依賴於主鍵,那麼稱R是第二正規化的模式。

3。資料規範化的優點之一是能消除資料冗餘和操作異常現象。

4。若關係A有m個屬性,關係B有n個屬性,則A×B有m+n個屬性。

5。關係代數運算中,專門的關係操作有:選擇、投影、除和連線。

6。關係中屬性的取值範圍稱為屬性的域。

7。 在SQL Server2005中,萬用字元只有在like子句中才有意義,否則會被當作普通字元使用。

8。 觸發器也是一種儲存過程,它主要透過事件進行觸發而被執行,而儲存過程可以透過儲存過程名而被直接呼叫。

9。 一般可以使用GO命令來標識T-SQL批處理的結束。

10。 在索引命令中使用關鍵字CLUSTERED表示將建立的是聚集索引。

二、選擇題(每小題1分,共20分)

1.資料庫的概念模型( D  )

(A)依賴於計算機硬體和DBMS

(B)獨立於計算機硬體,依賴於DBMS

(C)依賴於計算機硬體,獨立於DBMS

(D)獨立於計算機硬體和DBMS

2.假設某個E-R圖中有5個實體型、2個1∶M聯絡和2個M∶N聯絡,則該E-R圖轉換的關係模式個數至少是( B  )

(A)5    (B)7     (C)8       (D)9

3.用二維表來表示實體及實體之間聯絡的資料模型稱為(  D  )

(A)實體-聯絡模型        (B)層次模型

(C)網狀模型               (D)關係模型

4.在學生關係:學生(學號,姓名,年齡,性別)中,想查詢年齡小於20的學生的學號和姓名,則關係運算式應寫成( B   )

5.在一個關係中,每個屬性都是不可分解的,這個關係一定達到( D)

(A) 2NF   (B)3NF    (C)BCNF  (D)1NF

6.學生表中st(學號,姓名,性別,年齡),刪除其中的“年齡”欄位的SQL語句是( A  )

(A)ALTER TABLE st DROP 年齡

(B)DROP 年齡 FROM st

(C)ALTER TABLE st DELETE年齡

(D)DELETE年齡FROM st

7.如果學生表st是使用以下SQL語句建立的:CREATE TABLE st (sno CHAR(4) not null,sn CHAR(8),sex CHAR(2),age INT);下面的SQL語句中可以正確執行的是( A  )

(A)INSERT INTO st(sno,sex,age) VALUES (‘s9’,’男’,17)

(B)INSERT INTO st(sn,sex,age) VALUES(‘李安齊’,’男’,20)

(C)INSERT INTO st(sex,age)VALUES(‘男’,20)

(D)INSERT INTO st(sno,sn)VALUES(‘s9’,’安齊’,16)

*8.撤銷user1使用者修改st表中的“姓名”欄位的許可權,應使用的SQL語句是(    )

(A)REVOKE UPDATE(姓名) ON st TABLE FROM user1

(B)REVOKE UPDATE(姓名) ON TABLE st FROM user1

(C)REVOKE MODIFY(姓名) ON st TABLE FROM user1

(D)REVOKE MODIFY(姓名) ON TABLE st FROM user1

9.SQL Server 的四個系統資料庫中記錄系統的所有資訊的是(  A  )

(A)Master       (B)Model        (C)Msdb      (D)Tempdb

10.有這樣一個數據表,學生(學號,姓名,年齡,省份),要想查詢學生們所在省份的種類個數,以下SELECT語句正確的是( B)

(A)SELECT COUNT(省份) FROM學生

(B)SELECT COUNT(DISTINCT 省份) FROM學生

(C)SELECT COUNT(學號) FROM學生

(D)SELECT COUNT(學號) FROM學生 GROUP BY省份

11。 有這樣一個數據表,職工(職工號,姓名,職務,工資),要想查詢工資最高的職工號和姓名,以下SELECT語句正確的是( B)

(A)SELECT職工號, 姓名FROM職工 WHERE工資= MAX(工資)

(B)SELECT職工號, 姓名FROM職工 WHERE工資=(SELECT MAX(工資) FROM職工)

(C)SELECT職工號, 姓名, 工資FROM職工 WHERE工資=MAX(工資)

(D)SELECT職工號, 姓名,MAX(工資) FROM職工WHERE工資=MAX(工資)

12.要想用T-SQL語句從學生表中查詢姓名中有“紅”字的學生,條件表示式應寫成( A)

(A)姓名 LIKE ‘%紅%’????      ?(B)姓名 LIKE ‘%紅’?

(C)姓名LIKE ‘%紅-’????????      (D)姓名LIKE ‘-紅%’

*13.如果事務T獲得了資料項Q上的共享鎖,則T對Q(     )

(A)只能讀不能寫          (B)只能寫不能讀

(C)既可讀又可寫            (D)不能讀不能寫

14.SQL語言具有資料操作功能,SQL語言的一次查詢的結果是一個(  D    )

(A)資料項     (B)記錄      (C)元組(D)表

15.SQL語言的標準庫函式COUNT、SUM、AVG、MAX和MIN等,不允許出現在下列哪個子句中(   D   )

(A)SELECT     (B)HAVING     (C)GROUP…HAVING  (D)WHERE

16.現要在SC(S#, C#, G)表中查詢缺少成績(G)的學生學號(S#)和課程號(C#),下面SQL語句中WHERE子句的條件表示式應是:

SELECT    S#,C#    FROM   SC

WHERE (  D  )

(A)G=0    (B)G

17.關於檢視以下說法正確的是( C  )

(A)不可以在其他檢視上再建立檢視

(B)檢視也是表,只不過儲存基本表中的一部分資料

(C)檢視增強了資料的安全性

(D)如果檢視中的某列是從算術表示式派生而來,可以指定檢視中每列的名稱,也可以不指定

18.不能啟用觸發器執行的事件是(   A   )

(A)SELECT   (B)UPDATE     (C)INSFRT   (D)DELETE

*19.對資料模式來說,採用三級模式的主要原因是(      )

(A)把大模式分解成小模式,便於DBMS進行分級管理

(B)解決程式與資料之間的資料獨立性

(C)便於應用程式從不同角度進行資料呼叫

(D)便於提供資料的二級映象

*20.SQL語言中建立唯一性索引的命令是(      )

(A)CREATE INDEX 索引名 ON 基本表名(屬性名)

(B)CREATE INDEX UNIQUE索引名 ON 基本表名(屬性名)

(C)CREATE UNIQUE INDEX索引名 ON 基本表名(屬性名)

(D)CREATE DISTINCT INDEX索引名 ON 基本表名(屬性名)

三。 名詞解釋(每小題3分,共15分)

1、資料模型:資料模型是對客觀事物及聯絡的資料描述,是概念模型的資料化,即資料模型提供表示和組織資料的方法。

2、函式依賴:所謂函式依賴是指在關係R中,X、 Y為R的兩個屬性或屬性組,如果對於R的所有關係r都存在: 對於X的每一個具體值,Y都只有一個具體值與之對應,則稱屬性Y函式依賴於屬性X。記作X→Y。當Y不函式依賴於X時,記作:X  Y。當X→Y且Y→X時,則記作:X ? Y。

3、內模式:內模式也稱儲存模式或物理模式,是對資料物理結構和儲存方式的描述,是資料在資料庫內部的表示方式,一個數據庫只有一個內模式。

4、觸發器:觸發器也是一種儲存過程,它是一種在基本表被修改時自動執行的內嵌過程,主要透過事件進行觸發而被執行。

5、鎖:鎖是防止其他事務訪問指定的資源、實現併發控制的一種手段,是多個使用者能夠同時操縱同一個資料庫中的資料而不發生資料不一致現象的重要保障。

四、簡答題(每小題5分,共25分)

1、簡述 SQL Server的安全性機制。

答:SQL Server 2005的安全性管理機制可分為三個等級:作業系統級、SQL Server 級和資料庫級。在使用者使用客戶計算機透過網路實現SQL Server 伺服器的訪問時,使用者首先要獲得計算機作業系統的使用權。SQL Server 的伺服器級安全性建立在控制伺服器登入賬號和口令的基礎上。SQL Server 採用了標準SQL Server 登入和整合Windows NT登入兩種方式。在使用者透過SQL Server伺服器的安全性檢驗以後,將直接面對不同的資料庫入口這是使用者將接受的第三次安全性檢驗

2、簡述資料庫的邏輯獨立性和物理獨立性。

答:當模式改變時(如增加新的關係、新的屬性、改變屬性的資料型別等),由資料庫管理員對各個外模式/模式映像作相應改變,可以使外模式保持不變。應用程式是依據資料的外模式編寫的,因而應用程式不必修改,保證了資料與程式的邏輯獨立性,簡稱邏輯資料獨立性。

當資料庫的儲存結構改變了(如選用了另一種儲存結構),由資料庫管理員對模式/內模式映像作相應改變,可以保證模式保持小變,因而應用程式也不必改變。保證了資料與程式的物理獨立性,簡稱物理資料獨立性。

3、簡述關係的完整性。

答:關係模型允許定義三類完整性約束:實體完整性、參照完整性和使用者自定義的完整性約束。

實體完整性規則要求關係中元組在組成主碼的屬性上不能有空值。

參照完整性規則:若屬性(或屬性組)F是基本關係R的外碼,它與基本關係S的主碼Ks相對應(基本關係R和S可能是相同的關係),則對於R中每個元組在F上的值必須為:或者取空值(F的每個屬性值均為空值);或者等於S中某個元組的主碼值。

使用者定義的完整性規則由使用者根據實際情況對資料庫中資料的內容進行的規定,也稱為域完整性規則。

4、簡述檢視的優點。

答:使用檢視有很多優點,主要表現在:

(1) 為使用者集中資料,簡化使用者的資料查詢和處理。

(2)保證資料的邏輯獨立性。

(3) 重新定製資料,使得資料便於共享;合併分割資料,有利於資料輸出到應用程式中。

(4) 資料保密。

5、簡述儲存過程的優點。

答:儲存過程最主要的特色是當寫完一個儲存過程後即被翻譯成可執行碼儲存在系統表內,當作是資料庫的物件之一,一般使用者只要執行儲存過程,並且提供儲存過程所需的引數就可以得到所要的結果而不必再去編輯T-SQL命令。

五、綜合題(每小題10分,共30分)

1、設計一個圖書管資料庫,此資料庫中對每個借閱者儲存讀者記錄,包括:讀者號、姓名、性別、年齡、單位。對每本書存有:書號、書名、作者、出版社。對每本被借出的書存有讀者號、借出日期和應還日期。要求:給出E-R圖,再將其轉換為關係模型並給出各關係的主關鍵字。

解:E-R圖

關係模型:讀者(讀者號,姓名,性別,年齡,單位)

圖書(書號,書名,作者,出版社)

借閱(書號,讀者號,借出日期,應還日期)

2、設有關係模式:R(職工號,日期,日營業額,部門名,部門經理)

如果規定:每個職工每天只有一個營業額,每個職工只在一個部門工作,每個部門只有一個經理。

(1)根據上述規定,寫出模式R主關鍵字。

(2)分析R最高屬於第幾正規化,並說明理由。

(3)將R規範到3NF。

解:(1)關係模式R的主關鍵字是(職工號,日期)。

(2)R最高屬於第一正規化。

因為存在著部門名對主關鍵字(職工號,日期)的部分函式依賴,沒有達到2NF。

(3)首先分解為2NF:R1(職工號,部門名,部門經理),R2(職工號,日期,日營業額)

因為R1存在部門經理對職工號的傳遞函式依賴,所以沒有達到3NF,再分解為3NF:R1分解為R1(職工號,部門名)和R3(部門名,部門經理)

3、假設有如下三個關係模式:

商品表:P(PNO,PNAME,CITY,COLOR)

各屬性含義依次為商品號、商品名、產地和商品顏色;主鍵為商品號。

商場表:M(MNO,MNAME,CITY)

各屬性含義依次為商場號、商場名和商場所在城市;主鍵為商場號。

銷售表:S(MNO,PNO,QTY)

各屬性含義依次為商場號、商品號和銷售數量。主鍵為(商場號,商品號)

用SQL語句寫出下列查詢:

(1)檢索銷售了產地為浙江省的商品的商場名和商場所在城市。

(2)檢索上海市所有商場中各種商品的平均銷售量。

(3)檢索銷售了藍色商品的商場號、商品號和數量。(要求用巢狀子查詢完成)

(4)檢索每個商場銷售的紅色商品的總數量。

解:(1)SELECT MNAME,M。CITY FROM M,S,P

Where P。 CITY=’浙江’ and M。 MNO=S。 MNO and P。 PNO=S。 PNO

(2)SELECT P。 PNO ,AVG(QTY) FROM S,P

WHERE CITY=’上海’ and P。 PNO=S。 PNO

GROUP BY P。 PNO

(3)SELECT MNO,PNO,QTY FROM S

WHERE PNO IN(SELECT PNO FROM P WHERE COLOR=’藍’)

(4)SELECT MNO ,SUM(QTY) FROM S,P

WHERE COLOR=’紅’ and P。 PNO=S。 PNO

GROUP BY MNO

頂部