《數據庫系統概論》
實
驗
指
導
書
實驗個數:
適用對象:
《數據庫原理》實驗指導書
實驗一 認識DBMS 1
實驗二 數據描述、定義實驗. 1
實驗三 數據更新實驗. 3
實驗四 數據查詢實驗. 6
實驗五 視圖的定義、使用實驗. 8
實驗六 數據控制實驗(安全性部分). 9
實驗七 數據控制實驗(完整性部分). 10
實驗八 據庫設計工具的使用. 10
實驗九 數據庫設計. 11
實驗一 認識DBMS
一、學時
2學時
二、實驗類型
演示
三、實驗目的
通過對某個商用數據庫管理系統的安裝使用,初步了解DBMS的工作環境和系統構架;
熟悉對DBMS的安裝;
搭建今后實驗的平台。
四、需用儀器、設備
486及以上微機;
Windows95/97/98及以上操作系統;
DBMS安裝盤
六、實驗內容及要求
1. 根據安裝文件的說明安裝數據庫管理系統。在安裝過程中記錄安裝的選擇,並且對所作的選擇進行思考為何要進行這樣的配置,對今后運行數據庫管理系統有什么影響;
2. 學會啟動和停止數據庫服務;
3. 初步了解RDBMS的安全性,這里主要是用戶的登錄和服務器預定義角色。可以建立一個新的新的用戶,賦予其數據庫管理員的角色,今后的實驗可以用該用戶來創建數據庫應用;
4. 了解RDBMS的系統構架;
5. 了解RDBMS的管理和使用。
實驗二 數據描述、定義實驗
一、學時
4學時
二、實驗類型
演示、設計
三、實驗目的
熟悉和掌握數據庫的創建和連接方法;
熟悉和掌握數據表的建立、修改和刪除;
加深對表的實體完整性、參照完整性和用戶自定義完整性的理解。
四、需用儀器、設備
486及以上微機;
Windows95/97/98操作系統;
安裝了SQL SERVER
五、實驗准備
1. 熟悉SQL SERVER 工作環境;
2. 復習有關表的建立、修改和刪除的SQL語言命令;
六、實驗方法及步驟
1. 介紹有關SQL SERVER的圖形界面工作環境;
2. 創建數據庫或連接已建立的數據庫
3. 在當前數據庫上建立新表
4. 定義表的結構
A:用SQL命令形式
B:用SQL SERVER提供的企業管理器以交互方式進行
5. 進一步定義表的主碼,外碼及在表上建立索引。
6. 將以上表的定義以 .SQL文件的形式保存在磁盤上。
7. 修改表的結構
8. 刪除表的定義
七、實驗內容
背景材料:在以下實驗中,使用學生-課程數據庫,它描述了學生的基本信息、課程的基本信息及學生選修課程的信息。
1. 創建學生-課程數據庫
2. 創建學生關系表S :
學號 |
姓名 |
性別 |
年齡 |
所在系 |
Sno |
Sname |
Ssex |
Sage |
sdept |
3. 創建課程關系表C :
課程號 |
課程名 |
先行課 |
學分 |
Cno |
Cname |
Cpno |
ccredit |
4. 創建課程關系表SC :
學號 |
課程號 |
成績 |
Sno |
Cno |
grade |
5. 將以上創建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盤上。
6. 在表S上增加“出生日期”屬性列。
7. 刪除表S的“年齡” 屬性列。
8. 在表S上,按“Sno” 屬性列的唯一值方式建立索引。
9. 在表SC上,按“grade” 屬性列的多值方式建立索引。
10. 刪除表SC,利用磁盤上保存的.SQL文件重新創建表SC。
11. 選做:創建教材P74-75--習題5、SPJ數據庫中的四個關系S,P,J,SPJ。
八、實驗思考
1、 定義表結構是對數據模型的那個要素進行描述,對主屬性有什么要求?
2、 修改表結構時,能否修改已定義屬性的參數?新增加的屬性列能否定義為非空?為什么?
3、 分別在表S、SC上按“sno”列的唯一值方式建立索引,可能出現問題嗎?情況有什么區別?
4、 能否在非主屬性列上建立索引?其恰當的方式是什么?
九、問題
1、 在表的定義中,如何確定屬性是 NOT NULL / NULL? ( 主碼 ,關鍵字,主屬性/主屬性)
2、 能否將S,C,SC表單獨以一個數據文件的形式保存在磁盤上?
3、 在表S的“SNO”,“SNAME”屬性上分別按唯一值方式建立索引和在S的“SNO”,“SNAME”上唯一值方式建立聯合索引有無區別?
4、 要修改主屬性的定義,正確的方式是什么?
實驗三 數據更新實驗
一、學時
2學時
二、實驗類型
綜合、設計
三、實驗目的
熟悉和掌握數據表中數據的插入、修改、刪除操作和命令的使用;
加深理解表的定義對數據更新的作用
四、需用儀器、設備
486及以上微機;
Windows95/97/98操作系統;
安裝了SQL SERVER
五、實驗准備
1.熟悉SQL SERVER 工作環境;
2. 連接到學生-課程數據庫
3. 復習對表中數據的插入、修改和刪除的SQL語言命令;
六、實驗方法及步驟
1. 將數據插入當前數據庫的表S、C、SC中;
A:用SQL命令形式
B:用SQL SERVER提供的企業管理器以交互方式進行
2. 將以上插入的數據分別以.SQL文件和.txt文件的形式保存在磁盤上;
3. 修改表S、C、SC中的數據;
A:用SQL命令形式
B:用SQL SERVER提供的企業管理器以交互方式進行
4. 刪除表S、C、SC中的數據。
A:用SQL命令形式
B:用SQL SERVER提供的企業管理器以交互方式進行
七、實驗內容
1. 將數據分別插入表S、C、SC;
2. 將表S、C、SC中的數據分別以.SQL文件和.txt文件的形式保存在磁盤上。
3. 在表S、C、SC上練習數據的插入、修改、刪除操作。(比較在表上定義/未定義主碼(Primary Key)或外碼(Foreign Key)時的情況)
4. 將表S、C、SC中的數據全部刪除,再利用磁盤上備份的數據來恢復數據。
5. 如果要在表SC中插入某個學生的選課信息(如:學號為“200215121”,課程號為“c123”,成績待定),應如何進行?
6. 求各系學生的平均成績,並把結果存入數據庫;
7. 將“CS”系全體學生的成績置零;
8. 刪除“CS”系全體學生的選課記錄;
9. 刪除學號為“S1”的相關信息;
10. 將學號為“S1”的學生的學號修改為“S001”;
11. 把平均成績大於80分的男同學的學號和平均成績存入另一個表S——GRADE(SNO,AVG——GRADE);
12. 把選修了課程名為“數據結構”的學生的成績提高10%;
13. 把選修了“C2”號課程,且成績低於該門課程的平均成績的學生的成績提高5%;
14. 把選修了“C2”號課程,且成績低於該門課程的平均成績的學生成績刪除掉;
15. 選做:將數據插入SPJ數據庫中的四個表S,P,J,SPJ中,並以.SQL文件和.txt文件的形式保存在磁盤上。
八、實驗思考
1.使用SQL的更新語句時,一次可以對幾個表進行更新。
2.在進行數據更新時,可能產生破壞數據完整性的情況,因此,在數據更新(尤其是多表更新)時,應注意什么問題。
3.比較表中定義/未定義主碼(Primary Key)時,對表S的更新操作有何異同。
4.比較在表之間定義/未定義外碼(Foreign Key)時,對表S的更新操作有何異同。
5.若要修改已定義表的屬性或刪除已定義表的某一屬性列,應如何進行?
九、問題
1.在表上未定義主碼時,數據更新的情況?
2.如果在表S 和SC 表上建立了外碼聯系時,要刪除學號為‘S2’的學生記錄,應如何進行?如果在表S 和SC 表上未建立外碼聯系,情況會是怎樣的?
DELETE FROM "s"
WHERE "s"."sno" = 's2' ;
DELETE FROM "sc"
WHERE "sc"."sno" = 's2' ;
DELETE FROM "sc"
WHERE "sc"."sno" = 's2' ;
DELETE FROM "s"
WHERE "s"."sno" = 's2' ;
實驗四 數據查詢實驗
一、學時
6學時
二、實驗類型
綜合
三、實驗目的
熟悉和掌握對數據表中數據的查詢操作和SQL命令的使用,學會靈活熟練的使用SQL 語句的各種形式;
加深理解關系運算的各種操作(尤其的關系的選擇,投影,連接和除運算)
四、需用儀器、設備
486及以上微機;
Windows95/97/98操作系統;
安裝了SQL SERVER。
五、實驗准備
1.熟悉SQL SERVER 工作環境;
2.連接到學生-課程數據庫
3.復習對表中數據查詢的SQL語言命令;
六、實驗方法及步驟
1.在表S、C、SC上進行簡單查詢;
2.在表S、C、SC上進行連接查詢;
3.在表S、C、SC上進行嵌套查詢;
4.使用聚合函數的查詢;
5.對數據的分組查詢;
6.對數據的排序查詢。
七、實驗內容
在表S,C,SC上完成以下查詢:
1. 查詢學生的基本信息;
2. 查詢“CS”系學生的基本信息;
3. 查詢“CS”系學生年齡不在19到21之間的學生的學號、姓名;
4. 找出最大年齡;
5. 找出“CS”系年齡最大的學生,顯示其學號、姓名;
6. 找出各系年齡最大的學生,顯示其學號、姓名;
7. 統計“CS”系學生的人數;
8. 統計各系學生的人數,結果按升序排列;
9. 按系統計各系學生的平均年齡,結果按降序排列;
10. 查詢每門課程的課程名;
11. 查詢無先修課的課程的課程名和學時數;
12. 統計無先修課的課程的學時總數;
13. 統計每位學生選修課程的門數、學分及其平均成績;
14. 統計選修每門課程的學生人數及各門課程的平均成績;
15. 找出平均成績在85分以上的學生,結果按系分組,並按平均成績的升序排列;
16. 查詢選修了“1”或“2”號課程的學生學號和姓名;
17. 查詢選修了“1”和“2”號課程的學生學號和姓名;
18. 查詢選修了課程名為“數據庫系統”且成績在60分以下的學生的學號、姓名和成績;
19. 查詢每位學生選修了課程的學生信息(顯示:學號,姓名,課程號,課程名,成績);
20. 查詢沒有選修課程的學生的基本信息;
21. 查詢選修了3門以上課程的學生學號;
22. 查詢選修課程成績至少有一門在80分以上的學生學號;
23. 查詢選修課程成績均在80分以上的學生學號;
24. 查詢選修課程平均成績在80分以上的學生學號;
25. 選做:針對SPJ數據庫中的四個表S,P,J,SPJ,完成教材P74-75--習題5中的查詢及教材P127--習題5中的查詢。
實驗五 視圖的定義、使用實驗
一、學時
2學時
二、實驗類型
綜合、設計
三、實驗目的
熟悉和掌握對數據表中視圖的定義操作和SQL命令的使用;
熟悉和掌握對數據表中視圖的查詢操作和SQL命令的使用;
熟悉和掌握對數據表中視圖的更新操作和SQL命令的使用,並注意視圖更新與基本表更新的區別與聯系;
學習靈活熟練的進行視圖的操作,認識視圖的作用;
四、需用儀器、設備
486及以上微機;
Windows95/97/98操作系統;
安裝了SQL SERVER。
五、實驗准備
1.熟悉SQL SERVER 工作環境;
2.連接到學生-課程數據庫
3.復習有關視圖操作的SQL語言命令;
六、實驗方法及步驟
1. 視圖的定義
2. 視圖的查詢
3. 視圖的修改
七、實驗內容
以S , C , SC表為基礎完成以下視圖定義及使用
1. 定義“IS”系學生基本情況視圖V_IS 並查詢結果;
2. 將S,C,SC表中學生的學號,姓名,課程號,課程名,成績定義為視圖V_S_C_G並查詢結果;
3. 將各系學生人數,平均年齡定義為視圖V_NUM_AVG並查詢結果;
4. 定義一個反映學生出生年份的視圖V_YEAR並查詢結果;
5. 將各位學生選修課程的門數及平均成績定義為視圖V_AVG_S_G並查詢結果;
6. 將各門課程的選修人數及平均成績定義為視圖V_AVG_C_G並查詢結果;
7. 查詢平均成績為90分以上的學生學號、姓名和成績;
8. 查詢各課成績均大於平均成績的學生學號、姓名、課程和成績;
9. 按系統計各系平均成績在80分以上的人數,結果按降序排列;
10. 通過視圖V_IS,分別將學號為“S1”和“S4”的學生姓名更改為“S1_MMM”,”S4_MMM” 並查詢結果;
11. 通過視圖V_IS,新增加一個學生記錄 ('S12','YAN XI',19,'IS'),並查詢結果;
12. 通過視圖V_IS,新增加一個學生記錄 ('S13','YAN XI',19,'MA'),並查詢結果;
13. 通過視圖V_IS,刪除學號為“S12”和“S3”的學生信息,並查詢結果;
14. 要通過視圖V_S_C_G,將學號為“S12”的姓名改為“S12_MMM”,是否可以實現?
15. 要通過視圖V_AVG_S_G,將學號為“S1”的平均成績改為90分,是否可以實現?
八、實驗思考
1.在定義視圖的子查詢中,是否可以使用SQL查詢語句的任意子句及短語?需要注意什么?
2.視圖一經定義后,就可以象基本表一樣用於查詢,但DBMS執行對視圖的查詢過程與執行基本表的查詢過程有什么區別?
3.通過視圖是否能更新數據?通常那些視圖可以進行更新?
4.使用視圖有什么好處?
5.SQL 語言提供了那些方式可以實現對數據的安全保護功能?
實驗六 數據控制實驗(安全性部分)
一、學時
4學時
二、實驗類型
綜合、設計
三、實驗目的
熟悉通過SQL對數據進行安全性控制。完成作業的上機練習。
四、實驗平台
實驗一中安裝的RDBMS及其交互查詢工具。
五、實驗內容和要求
使用SQL對數據進行安全性控制包括:授權與權力回收。操作完成后看看已授權的用戶是否真正具有授予的數據操作的權力了;權力收回操作之后的用戶是否確實喪失了收回的數據的權力。認真填寫實驗報告,記錄所有的實驗用例。
實驗七 數據控制實驗(完整性部分)
一、學時
4學時
二、實驗類型
綜合、設計
三、實驗目的
熟悉通過SQL對數據進行完整性控制。完成作業的上機練習。
四、實驗平台
實驗一中安裝的RDBMS及其交互查詢工具。
五、實驗內容和要求
使用SQL對數據進行完整性控制(三類完整性、CHECK短語、CONSTRAINT子句、觸發器)。用實驗證實,當操作違反了完整性約束條件時,系統是如何處理的。認真填寫實驗報告,記錄所有的實驗用例。
實驗八 據庫設計工具的使用
一、學時
4學時數
二、實驗類型
綜合、設計
三、實驗目的
初步學習使用Power_ Designer (S_ Designer)數據庫設計工具。
四、需用儀器、設備
486及以上微機;
Windows95/97/98操作系統;
安裝了Power_ Designer (S_ Designer)。
五、實驗准備
1.熟悉Power_Designer (S_ Designer)設計環境;
2.復習SQL語言命令;
3.復習E-R圖的繪制;
4.復習數據庫設計的方法、步驟
六、實驗方法及步驟
1. 對一小型數據庫應用系統進行需求分析;
2. 用Power_Designer (S_ Designer)建立CDM
3. 將CDM轉換為PDM;
4. 用PDM,創建數據庫,定義基本表
實驗九 數據庫設計
一、學時
4學時
二、實驗類型
綜合、設計
三、實驗目的
學習使用Power_ Designer (S_ Designer),進行數據庫的設計,並熟悉數據庫的設計的基本方法和步驟,搞清數據庫設計各階段的任務
四、需用儀器、設備
486及以上微機;
Windows95/97/98操作系統;
安裝了Power_ Designer (S_ Designer)。
五、實驗准備
1.熟悉Power_Designer (S_ Designer)設計環境;
2.復習SQL語言命令;
3.復習E-R圖的繪制;
4.復習數據庫設計的方法、步驟
六、實驗方法及步驟
5. 對一小型數據庫應用系統進行需求分析;
6. 繪制E-R圖;
7. 將E-R模型向數據模型轉換;
8. 創建數據庫,定義基本表
七、實驗內容
學生成績管理系統數據庫的設計;
以下為選做:
1. 課程管理子系統;
2. 圖書管理子系統;
3. 通訊錄子系統;
4. 教室管理子系統;
5. 宿舍管理子系統;
6. 個人小帳務管理子系統;
7. 個人事務管理子系統;
8. 食堂管理子系統;
9. 衛生科醫療管理子系統;
10. 游戲管理子系統;
11. 庫房入庫出庫管理子系統;
12. 小商店銷售管理子系統;
13. 其它管理子系統(自己選題需經指導教師認可)。