篇一:結構化查詢語言SQL習題與答案
一、選擇題
1. 在SQL包含的功能中,最重要的功能是_______。
A) 資料查詢 B) 資料操縱 C) 資料定義 D) 資料控制
2. 使用SQL語言有兩種方式,它們是_______。
A) 選單式和互動式B) 嵌入式和程式式
C) 互動式和嵌入式D) 命令式和解釋式
3. SQL的全部功能可以用9個動詞概括,其中動詞INSERT是屬於下列______功能。
A) 資料查詢 B) 資料操縱 C) 資料定義 D) 資料控制
4. SQL語言支援資料庫的三級模式結構,其中模式對應於______。
A) 儲存檔案 B) 檢視 C) 基本表 D) 檢視和基本表
5. 在建立資料表時,可以給欄位規定NULL或NOT NULL值,NULL值的含義是______。
A) 0B) 空格 C) NULL D) 不確定
6. 在SQL的ALTER語句中,用於刪除欄位的子句是______。
A) ALTER B) DELETE C) DROP D) MODIFY
7. SQL中的INSERT語句可以用於______。
A) 插入一條記錄 B) 插入一個欄位
C) 插入一個索引 D) 插入一個表
8. 下列描述錯誤的是______。
A) 用INSERT-SQL語句可以插入一條記錄
B) 用INSERT-SQL語句可以插入多條記錄
C) 使用INSERT-SQL語句可以插入記錄的部分資料
D)使用INSERT-SQL語句插入記錄時列名的排列順序必須與表定義時的順
序一致
9. INSERT-SQL語句中所使用的資料不能來自於______。
A) 陣列 B) 變數 C) 查詢 D) 索引
10. SQL中的UPDATE語句可以用於______。
A) 更新資料表的結構 B) 更新資料表的值
C) 更新索引D) 更新查詢
11. 下列描述錯誤的是______。
A) SQL中的UPDATE語句可以修改一條記錄
B)SQL中的UPDATE語句可以修改多條記錄
C)SQL中的UPDATE語句可以用子查詢提供要修改的值
D)SQL中的UPDATE語句可以修改子查詢的結果
12. SQL中的DELETE語句可以用於______。
A) 刪除資料表的結構 B) 刪除資料表
C) 刪除資料表的記錄 D) 刪除資料表的欄位
13. 在SELECT語句中,為了在查詢結果中消去重複記錄,應使用________項。
A) PERCENTB) DISTINCTC) TOP ND) WITH TIES
14. 為了在查詢結果中只包含兩個表中符合條件的記錄,應使用________聯接型別。
A) INNER B) LEFT C) RIGHT D) FULL
15. 在SELECT-SQL語句中,要將查詢結果儲存在文字檔案中的選項是________。
A) INTO〈新表名〉B) TO FILE 〈檔名〉
C) TO PRINTER D) TO SCREEN
16. 在SQL查詢時,使用WHERE 子句提出的是________。
A) 查詢目標 B) 查詢結果 C) 查詢條件D) 查詢分組
17. 在SELECT語句中,如果要對輸出的記錄進行排序,應選使用________項。
A) ORDER B) GROUPC) HAVINGD) TOP
18. 在SELECT語句中,________子句後可能帶有HAVING短語。
A) ORDERB) GROUP C) WHERED) SELECT
19. 在SELECT-SQL語言中,________子句相當於關係中的投影運算。
A) WHEREB) JOINC) FROM D) SELECT
20. 如果要選擇分數在70和80之間的記錄,________是正確的。
A) 分數>=70 AND <=80 B) 分數BETWEEN 70 AND 80
C) 分數>=70 OR 分數<=80D) 分數IN (70,80)
21. 如果學生表中有”所在系”欄位,要統計全校有多少個系,可用命令子句________。
A) SELECT SUM(所在系)B) SELECT SUM(DISTINCT 所在系)
C) SELECT COUNT(所在系)D) SELECT COUNT(DISTINCT 所在系)
22. 下列語句錯誤的是________。
A) SELECT * FROM 學生表
B)SELECT 學號 AS 學生編號 FROM 學生表
C) SELECT ALL FIELDS FROM 學生表
D) SELECT DISTINCT 學號 FROM 選課表
23. 查詢除教授和副教授以外的教師姓名,其WHERE子句為________。
A)WHERE 職稱 NOT BETWEEN “教授” AND “副教授”
B)WHERE 職稱!=“教授” AND “副教授”
C)WHERE 職稱 NOT LIKE (“教授”,”副教授”)
D)WHERE 職稱NOT IN (“教授”,”副教授”)
24. 在選課表中,找出成績不為空的記錄,應使用下列語句________。
A)SELECT *FROM 選課表 WHERE 成績 IS “ “
B)SELECT *FROM 選課表 WHERE 成績=0
C)SELECT *FROM 選課表 WHERE 成績<>NULL
D)SELECT *FROM 選課表 WHERE 成績 IS NOT NULL
25. 下列COUNT函式的用法錯誤的是________。
A)COUNT(ALL)B)COUNT(*)
C)COUNT(成績)D)COUNT(DISTINCT 學號)
26. 要從選課表中統計每個學生選修的課程門數,應使用的SELECT-SQL語句是________。
A)SELECT COUNT(*)FROM 選課表
B)SELECT COUNT(*)FROM 選課表 GROUP BY 學號
C)SELECT DISTINCT COUNT(*)FROM 選課表
D)SELECT DISTINCT COUNT(*)FROM 選課表 GROUP BY 學號
27. 要從選課表中查詢選修了三門課程以上的學生學號,應使用的SELECT-SQL語句是________。
A)SELECT 學號 FROM 選課表 WHERE COUNT(*)>=3
B)SELECT 學號 FROM 選課表 HAVING COUNT(*)>=3
C)SELECT 學號 FROM 選課表 GROUP BY 學號 HAVING COUNT(*)>=3
D)SELECT 學號 FROM 選課表 GROUP BY 學號 WHERE COUNT(*)>=3
28. 要從學生表中查詢入校總分最高的3個學生的記錄,應使用的SELECT-SQL語句是________。
A)SELECT * FROM 學生表 ORDER BY 入校總分ASC
B)SELECT * FROM 學生表 ORDER BY 入校總分DESC
C)SELECT * FROM 學生表 TOP 3 ORDER BY 入校總分ASC
D)SELECT * FROM 學生表 TOP 3 ORDER BY 入校總分DESC
29. 在進行多表聯接查詢時,用________表明聯接的條件。
A)FOR或WHILE B)FOR或WHERE
C)WHERE 或ON D)JOIN 或ON
30. 查詢選修課成績在80分以上的女生姓名,用________語句。
A)SELECT 姓名 FROM 學生表,選課表 WHERE 學生表.學號=選課表.學號
.性別=“女”.成績>=80
B)SELECT 姓名 FROM 學生表,選課表 WHERE 學生表.學號=選課表.學號
.性別=“女”.成績>=80
C)SELECT 姓名 FROM 學生表,選課表 WHERE 學生表.學號=選課表.學號
.性別=“女”.成績>=80
D)SELECT 姓名 FROM 學生表,選課表 WHERE 學生表.學號=選課表.學號
.性別=“女”.成績>=80
31. 查詢所有教師所講授的課程,列出教師號,姓名和課程號,用________語句。
A)SELECT 教師表.教師號,姓名,課程號 FROM 教師表,授課表 WHERE 教師表.教師號=教師號
B)SELECT教師表.教師號,姓名,課程號 FROM 教師表,授課表
ON教師表.教師號=授課表.教師號
C)SELECT教師表.教師號,姓名,課程號 FROM 教師表 INNER JION授課表 ON 教師表.教師號=授課表.教師號
D)SELECT教師表.教師號,姓名,課程號 FROM 教師表 INNER JION授課表 WHERE 教師表.教師號=授課表.教師號
32. 查詢”陳靜”教師所講授的課程,列出姓名和課程名,用________語句。A)SELECT姓名,課程名 FROM 教師表,授課表 ,課程表
WHERE 教師表.教師號=授課表.教師號 AND 姓名=“陳靜”
B)SELECT姓名,課程名 FROM 教師表,授課表 ,課程表
WHERE 教師表.教師號=授課表.教師號 AND授課表.課程號=課程表.課程號AN
D 姓名=“陳靜”
C) SELECT姓名,課程名 FROM 教師表,授課表 ,課程表
WHERE 教師表.教師號=授課表.教師號 AND授課表.教師號=課程表.課程號AN
D 姓名=“陳靜”
D) SELECT姓名,課程名 FROM 教師表,授課表 ,課程表
WHERE 授課表.課程號=課程表.課程號AND 姓名=“陳靜”
33. 查詢所有比”陳靜”教師工資高的教師姓名及工資,使用下列語句 SELECT
X.姓名,X.工資 FROM 教師表 AS X,教師表 AS Y
WHERE X.工資>Y.工資AND Y.姓名=“陳靜”。
該語句使用的查詢是________。
A) 內連線查詢 B) 外連線查詢
C) 自身連線查詢D) 子查詢
34. 查詢與”陳靜”教師職稱相同的教師名,用________語句。
A)SELECT 姓名FROM 教師表 WHERE 職稱=“陳靜”職稱。
B)SELECT X.姓名FROM 教師表 AS X,教師表 AS Y
WHERE X.職稱=Y.職稱WHERE Y.姓名=“陳靜”。
C)SELECT姓名FROM 教師表WHERE 職稱=(SELECT職稱 FROM 教師
AND 姓名=“陳靜”)
D)SELECT姓名FROM 教師表WHERE 職稱=(SELECT職稱 FROM 教師
WHERE 姓名=“陳靜”)
35. 當子查詢返回的值是一個集合時,________不是在比較運算子和子查詢中使用的量詞。
A) RESTB) IN C) ALL D) ANY
36. 查詢講授課程號為C140的教師姓名,錯誤的語句是________。
A)SEL
ECT 姓名FROM 教師表 WHERE(教師號=ANY
(SELECT 教師號FROM 授課表 WHERE課程號=“C140”))
B)SELECT 姓名FROM 教師表 WHERE EXISTS(SELECT * FROM授課表
WHERE 教師號=教師表.教師號 AND課程號=“C140”)
C)SELECT 姓名FROM 教師表,授課表 WHERE教師表.教師號=授課表.教師
號 AND授課表.課程號=“C140”
D)SELECT 姓名FROM 教師表 WHERE(教師號=ALL
(SELECT 教師號FROM 授課表 WHERE課程號=“C140”))
37. 查詢其他系中比計算機系所有教師工資都高的教師姓名和工資,正確的語句是________。
A)SELECT 姓名,工資FROM 教師表 WHERE工資>ANY(SELECT 工資 FRO
M 教師表 WHERE所在系=“計算機”)AND 所在系<>計算機
B)SELECT 姓名,工資FROM 教師表 WHERE工資>(SELECT MIN(工資) FR
OM 教師表 WHERE所在系=“計算機”)AND 所在系<>計算機
C)SELECT 姓名,工資FROM 教師表 WHERE工資>ALL(SELECT 工資 FRO
M 教師表 WHERE所在系=“計算機”)AND 所在系<>計算機
D)SELECT 姓名,工資FROM 教師表 WHERE工資>(SELECT MAX(工資) F
ROM 教師表 WHERE所在系=“計算機”AND 所在系<>計算機)
38. 下列查詢
SELECT 學號,SUM(成績)AS 總分FROM 選課表 WHERE (學號=“C1011101”)
GROUP BY 學號
UNION
SELECT 學號,SUM(成績)AS 總分FROM 選課表 WHERE (學號=“C1011102”)
GROUP BY 學號
使用的是________。
A) 合併查詢 B) 外連線查詢
C) 自身連線查詢D) 子查詢
39. 下列________不是SQL語言具有的功能。
A) 資料定義 B) 資料操縱 C) 資料分配D) 資料查詢
40. SQL語言的核心是________。
A) 建表B) 查詢C) 彙總 D) 定義
41. DCL是下列________語言的簡稱。
A) 資料定義 B) 資料查詢 C) 資料操縱D) 資料控制
42. 檢視和基本表對應於資料庫三級模式中的________。
A) 外模式 B) 模式C) 內模式 D) 全部模式
43. 下列的完整性約束________是惟一性約束。
A) CHECK B) PRIMARY KEY
C) NULL/NOT NULL D) UNIQUE
44. 使用下列________約束,可以確保輸入的值在指定的範圍內。
A) CHECKB) PRIMARY KEY
C) NULL/NOT NULLD) FOREIGN KEY
45. 不屬於資料定義功能的SQL語句是________。
A) CREATE TABLEB) CREATE CURSOR
C) UPDATE D) ALTER TABLE
46. 在ALTER-SQL語句中________子句用於增加欄位的長度。
A) ADD B) ALTER
C) MODIFY D) DROP
47. SQL的資料操作語句不包括______。
A) INSERT B) ALTER C) DELETE D) UPDATE
48. 在使用命令 INSERT INTO 〈表名〉[(列名…)] VALUSE(〈值〉)時下列描述錯誤的是______。
A) INSERT-SQL語句中列名的順序可以與表定義時的列名順序一致
B) INSERT-SQL語句中列名的順序可以與表定義時的列名順序不一致
C) INSERT-SQL語句中值的順序可以與列名的順序不一致
D)INSERT-SQL語句中值的順序必須與列名的順序一致
49. UPDATE-SQL語句的功能是______。
篇二:資料庫 練習題(答案)
第四章練習題
一、選擇題
1、設有兩個關係R(A,B)和S(B,C),與下列SELECT語句
SELECT A,B FROM R WHERE B NOT IN(SELECT B FROM S WHERE C='C56'); C]B.πA,B等價的關係代數表示式是 [ A.πA,B(σ
A,BC≠'C56'(R?S)) (R ? S) C≠'C56'C.R-π(σC= 'C56'(R?S)) D.R-π
B] A,B(σC≠'C56' (R?S)) 2、嵌入式SQL的預處理方式,是指[
A.識別出SQL語句,加上字首標識和結束標誌
B.把嵌入的SQL語句處理成函式呼叫形式
C.對源程式進行格式化處理
D.把嵌入的SQL語句編譯成目標程式
3、SQL中,“DELETE FROM 表名”表示 [ A]
A.從基本表中刪除所有元組 C.從資料庫中撤消這個基本表 B.從基本表中刪除所有屬性 D.從基本表中刪除重複元組
[ C]
B.計算屬性的個數 4、SQL中,聚合函式COUNT(列名)用於 A.計算元組個數
C.對一列中的非空值計算個數 D.對一列中的非空值和空值計算個數
5、在傳統SQL技術中,使用“ORDER BY”子句的SELECT語句查詢的結果,實際上為 [
B] A.陣列 B.列表 C.包 D.集合
6、在資料庫中,能提高查詢速度的是(C )
A. 資料依賴 B. 檢視 C. 索引D. 資料壓縮
7、語句 from sc 表明( A )
A. 刪除sc中的全部記錄 B. 刪除基本表sc
C. 刪除基本表sc中的列資料 D. 刪除基本表sc中的部分行
8、在DB應用中,一般一條SQL 語句可產生或處理一組記錄,而DB主語言語句一般一次只能處理一條記錄,其協調可通過( B)實現。
A. 指標B. 遊標 C.陣列 D. 棧
9、在下列基本表的定義中,數值5表示( C )
CREATE TABLE student (Sno5) not null unique,Sname 2));
A. 表中有5條記錄 B. 表中有5列
C. 表中字串Sno 的長度 D. 表格的大小
10、 在檢視上不能完成的操作是(C )
A. 更新檢視B. 查詢 C. 在檢視上定義新的基本表 D. 在檢視上定義新檢視
11、下列聚合函式中不忽略空值 (null) 的是 (C)
A、SUM (列名)B、MAX (列名)C、COUNT ( * )D、AVG (列名)
12、SQL的查詢語句的where子句中,對空值的操作,不正確的是 ( C )
A、where AGE IS NULLB、where AGE IS NOT NULL
C、where AGE = NULL D、where NOT (AGE IS NULL)
13、Transact-SQL對標準SQL的擴充套件主要表現為( A )。
A. 加入了程式控制結構和變數 B. 加入了建庫和建表語句
C. 提供了分組(Group By)查詢功能D. 提供了Min、Max待統計函式
14、以下哪種情況應儘量建立索引( A )。
A. 在Where子句中出現頻率較高的列 B. 具有很多NULL值的列
C. 記錄較少的基本表 D. 需要更新頻繁的基本表
15、下列SQL Server語句中出現語法錯誤的是(D )。
A. DECLARE @Myvar INT B. SELECT * FROM [AAA]
C. CREATE DATABASE AAA D. DELETE * FROM AAA
16、屬於事務控制的語句是(A)。
A. Begin Tran、Commit、RollBackB. Begin、Continue、End
C. Create Tran、Commit、RollBack D. Begin Tran、Continue、End
17、在SQL語言的SELECT語句中,實現投影操作的是哪個子句?(A )
A)select B)fromC)where D)grou by
18、 用二維表結構表示實體以及實體間聯絡的資料模型稱為(C )
A)網狀模型 B)層次模型 C)關係模型 D)面向物件模型
第(19)至(21)題是基於如下兩個關係,其中僱員資訊表關係EMP的主鍵是僱員號,部門資訊表關係DEPT的主鍵是部門號
EMP DEPT
19、 若執行下面列出的操作,哪個操作不能成功執行?(D )
A) 從EMP中刪除行(‘010’,‘王巨集達’,‘01’,1200)
B) 在EMP中插入行(‘102’,‘趙敏’,‘01’,1500)
C) 將EMP中僱員號=‘056’的工資改為1600元
D) 將EMP中僱員號=‘101’的部門號改為‘05’
20、若執行下面列出的操作,哪個操作不能成功執行?(C )
A) 從DEPT 中刪除部門號=‘03’的行
B)在DEPT中插入行(‘06’,‘計劃部’,‘6號樓’)
C) 將DEPT中部門號=‘02’的部門號改為‘10’
D) 將DEPT中部門號=‘01’的地址改為‘5號樓’
21、在僱員資訊表關係EMP中,哪個屬性是外來鍵(foreign key)?(C )
A) 僱員號 B) 僱員名 C) 部門號 D) 工資
22、設關係R和關係S的元數分別是3和4,關係T是R與S的廣義笛卡爾積,即:T=R×S,
則關係T的元數是(A )
A) 7B) 9C) 12D) 1
23、設屬性A是關係R的主屬性,則屬性A不能取空值(NULL)。這是(A )
A) 實體完整性規則 B) 參照完整性規則
C) 使用者定義完整性規則D) 域完整性規則
24、 下面列出的關於“檢視(View)”的條目中,哪一條是不正確的?( B)
A) 檢視是外模式 B)使用檢視可以加快查詢語句的執行速度
C) 檢視是虛表 D) 使用檢視可以簡化查詢語句的編寫
25、 SQL語言集資料查詢、資料操縱、資料定義和資料控制功能於一體,語句INSERT、DELETE、
UPDATE實現哪類功能?(B )
A) 資料查詢 B) 資料操縱 C) 資料定義 D) 資料控制
26、在資料庫管理系統中,下面哪個模組不是資料庫存取的功能模組?( A)
A) 事務管理程式模組
B) 資料更新程式模組 D) 查詢處理程式模組 C) 互動式程式查詢模組
27、SQL查詢語句中,用於測試子查詢是否為空的謂詞是(A)。
A、EXISTS B、UNIQUE C、SOME D、ALL
28、下列SQL語句中,插入資料的是(D )。
A、CREATE B、ALTER C、UPDATED、INSERT
29、 在下面所列出的條目中,哪些是資料庫管理系統的基本功能?(D )
Ⅰ.資料庫定義
Ⅲ.資料庫存取
A) Ⅰ和Ⅱ Ⅱ.資料庫的建立和維護 Ⅳ.資料庫和網路中其他軟體系統的通訊 D) 都是 B) Ⅰ、Ⅱ和Ⅲ C) Ⅱ和Ⅲ
30、當修改基本資料時,下列關係檢視的說法正確的是(B )
A、需要重建 B、查以看到修改結果
C、無法看到修改結果式 D、不許修改帶檢視的基表
31、 在資料庫管理系統的層次結構中,由高階到低階的層次排列順序為(D )
A) 應用層、資料存取層、資料儲存層、語言翻譯處理層
B) 應用層、資料儲存層、資料存取層、語言翻譯處理層
C) 應用層、資料儲存層、語言翻譯處理層、資料存取層
D) 應用層、語言翻譯處理層、資料存取層、資料儲存層
32、在SQL語言的SELECT語句中,實現投影操作的是( A )子句。
A、select B、fromC、where D、grou by
33、SQL中,“AGE IN(20,22)”的語義是( D )。
A)AGE<=22 and="" age="">=20B)AGE<22 and="" age="">20
C)AGE =20 AND AGE =22 D)AGE =20 OR AGE =22
34 SQL中,聚合函式COUNT(列名)用於( C )
A.計算元組個數B.計算屬性的個數
C.對一列中的非空值計算個數 D.對一列中的非空值和空值計算個數
35、Transact-SQL對標準SQL的擴充套件主要表現為(A )。
A. 加入了程式控制結構和變數 B. 加入了建庫和建表語句
C. 提供了分組(Group By)查詢功能 D. 提供了Min、Max統計函式
36、已知關係:廠商(廠商號,廠名) PK=廠商號
產品(產品號,顏色,廠商號) PK=產品號,FK=廠商號
假設兩個關係中已經存在如圖所示元組:
廠商產品
若再往產品關係中插入如下元組:
I(P03,紅,C02) II(P01,藍,C01)
III(P04,白,C04) IV(P05,黑,null)
能夠插入的元組是( D )
A I,II,IV B I,IIIC I,IID I,IV
37、設有一個關係:DEPT(DNO,DNAME),如果要找出倒數第三個字母為W,並且至少包含4個字母的DNAME,則查詢條件子句應寫成WHERE DNAME LIKE ( B )
A ‘_ _ W _ %’B ‘_ % W _ _’C ‘_ W _ _’ D ‘_ W _ %’
38、下列SQL語句中,修改表結構的是(D )。
A、CREATE B、INSERT C、UPDATED、ALTER
39、SQL語句通常稱為( A)。
A、結構化查詢語言 B、結構化控制語言
C、結構化定義語言 D、結構化操縱語言
40、SQL語言的一體化特點主要是與( B)相比較而言的。
A、作業系統命令 B、非關係模型的資料語言C、高階語言D、自然語言
41、SQL語言中,刪除一個表的命令是( B )
A、 DELETE table B、DROP tableC、 CLEAR tableD、 REMORE table
42、在基表S中查詢所有姓名中有“國”的學生,在WHERE子句中應使用( A)萬用字元。
A. LIKE ’%國%’ B. LIKE ‘%國_’ C. LIKE ’_國%’ D. LIKE ‘_國_’
43、下列哪個不屬於資料庫物件(B )
A、預設B、SELECT語句 C、儲存過程 D、檢視
44、下列那一個不屬於SQL SERVER工具(A )
A資料庫管理器 B、事件探查器 C、匯入和匯出資料 D、查詢分析器
45、 下列那一個不屬於企業管理器的功能(D )
A、註冊伺服器 B、配置本地和遠端伺服器
C、引入和匯出資料D、為WINDOWS建立作業系統使用者
46、關於SQL Server檔案組的敘述正確的是:( A )。
A、一個數據庫檔案不能存在於兩個或兩個以上的檔案組裡
B、日誌檔案可以屬於某個檔案組
C、檔案組可以包含不同資料庫的資料檔案
D、一個檔案組只能放在同一個儲存裝置中
47、下面關於外碼的描述中,不正確的是(C )。
A. 外碼體現了關係間的聯絡手段B. 外碼是某個關係的碼
C. 外碼不是任何關係的碼
D. 外碼是一個關係的碼同時是另一個關係的屬性
48、在SQL Server 中關於索引敘述正確的是:( B )。
A、每個資料庫表可以建立多個聚集索引B、每個表可以定義多個非聚集索引
C、索引的資料儲存在同一個表中D、索引不會改變表中的資料
49、關於索引描述錯誤的是以下的哪一個?( A)
A、表中的任何資料列都可以新增索引
B、建立索引的列最好不要含有許多重複的值
C、一般不給很少使用的列新增索引
D、並不是資料庫中聚集索引越多搜尋效率就越高
50、關於儲存過程的描述正確的一項是:( C )。
A、儲存過程的存在獨立於表,它存放在客戶端,供客戶使用
B、儲存過程只是一些T-SQL語句的.集合,不能看作SQL Server的物件
篇三:資料庫作業(答案)
《資料庫原理與應用》綜合設計任務書
前言
《資料庫原理與應用》課程的重點知識模組包括:1)資料庫設計、2)用SQL實現建庫、建表、查詢、更新、和建立檢視、3)儲存過程和觸發器設計。針對這三個應用能力,用一個案例作為背景,佈置三次大作業。
在校大學生都能理解“圖書管理系統”的應用場合和業務流程。因此,以圖書管理系統作為案例來佈置作業,可以降低業務分析難度,讓學生將主要精力放在知識消化與技術應用上。
本文件包括四個部分。第一部分描述系統的需求,第二部分提出E-R模型設計和關係模型設計的任務;第三部分提出在SQL Server中,用SQL語句來建庫、建表、查詢、更新資料、建立檢視的任務;第四部分,根據應用需求、安全需求和資料完整性要求,提出設計儲存過程和觸發器的任務。 每個任務之前,都給出了完成任務所需要掌握的關鍵知識點,學生可以在對這些知識點進行復習的基礎上完成任務,每個任務是一次大作業。
第一部分案例的需求描述
本部分描述“圖書管理系統”的需求,學生通過閱讀本部分內容,瞭解系統的功能要求、執行環境,對系統所需的資料有總體認識,作為三次作業的基礎。
1.2 需求分析 1)功能需求
圖1-1:功能需求示意圖
教師資訊管理:用於教師基本資料的增刪改查。
圖書資訊管理:用於圖書基本資訊的增刪改查,分類統計圖書冊數和價值。 借書登記:記錄借書時間、所借圖書、借書人、辦理人。 還書登記:記錄還書時間、所還圖書、還書人、辦理人。
催還:查詢借閱逾期的借書資訊,給借書人發電子郵件,給借書人的部門打電話。 2)執行環境要求
圖1-2:執行環境拓撲圖
系統採用C/S模式,有兩臺PC和一臺伺服器,聯成一個區域網。PC上安裝圖書管理軟體的客戶端,伺服器上安裝DBMS,伺服器也可由兩臺PC中的一臺來代替。
第二部分 作業1——E-R模型與關係模型設計
(滿分8分)
本部分的任務是:在需求分析的基礎上,進行E-R圖設計,然後將E-R模型轉換為關係模型。 任務: 1) 2)
根據需求描述,繪製E-R圖。
將E-R圖轉換成關係模型,寫出所有的關係模式,並寫出每一個關係是按照什麼規則轉換而成的。
3) 在已經形成的關係模型下,舉例說明連線運算、投影運算、選擇運算。 參考答案:(屬性寫在了實體和聯絡圖形內) 任務:
1) 根據需求描述,分別為“圖書管理系統”的不同功能模組繪製區域性E-R圖。 教師資訊管理:
圖書基本資訊管理:
借還書登記:
催還書登記:
2) 整體E-R圖
3) 關係模式
? 型別表(型別名,借閱期限),依據:實體轉換為關係。
? 圖書表(,書名,作者,出版社,出版時間,單價,型別名,狀態),依據:
實體轉換為關係,1:N的聯絡合併到N,在N方增加一個外來鍵: 型別名。注:狀態屬性為(庫存,借出)
? 管理員表() ,依據:實體轉換為關係。
? 教師表(教師工號,姓名,性別,Email,部門名), 依據:實體轉換為關係,1:N的聯絡合併
到N,在N方增加一個外來鍵: 部門名。
? 部門表(部門名,電話),依據:實體轉換為關係。
? 借還表(ISBN,教師工號,借辦理人,借出日期,還辦理人,歸還日期),依
據,M:N聯絡轉換為一個關係,取聯絡的實體的鍵加聯絡屬性作為其屬性,可以增加一個列作為主鍵。
? 催還表(ISBN,教師工號,辦理人,催還日期),依據,M:N聯絡轉換為一個
關係,取聯絡的實體的鍵加聯絡屬性作為其屬性,可以增加一個列作為主鍵。 4) 在已經形成的關係模型下,舉例說明連線運算、投影運算、選擇運算。
連線運算:檢視型別的圖書已經超過了有效借出期限。(需要圖書,型別,借還關係) 投影運算:檢視圖書的書名、作者。 選擇運算:檢視單價高於50元的圖書。
附:自底向上設計概念結構的方法
通常分為兩步:第一步:首先要根據需求分析的結果(資料流圖、資料字典等)對現實世界的資料進行抽象,設計各個區域性檢視即分E-R圖。 第二步:整合區域性檢視。
設計分E-R圖的步驟是:選擇區域性應用在需求分析階段,通過對應用環境和要求進行詳盡的調查分析,逐一設計分E-R圖,實體的屬性、標識實體的碼實際上實體與屬性是相對而言的,很難有截然劃分的界限。同一事物,在一種應用環境中作為"屬性",在另一種應用環境中就必須作為"實體"。一般說來,在給定的應用環境中:屬性不能再具有需要描述的性質。即屬性必須是不可分的資料項。
合併分E-R圖,生成初步E-R圖。各分E-R圖之間的衝突主要有三類:屬性衝突、命名衝突和結構衝突。。解決方法是根據應用的語義對實體聯絡的型別進行綜合或調整。 修改與重構,生成基本E-R圖分E-R圖經過合併生成的是初步E-R圖。之所以稱其為初步E-R圖,是因為其中可能存在冗餘的資料和冗餘的實體間聯絡,即存在可由基本資料匯出的資料和可由其他聯絡匯出的聯絡。冗餘資料和冗餘聯絡容易破壞資料庫的完整性,給資料庫維護增加困難,因此得到初步E-R圖後,還應當進一步檢查E-R圖中是否存在冗餘,如果存在,應設法予以消除。