第1章 程序設(shè)計內(nèi)容及要求
1.1 程序設(shè)計題目
(1)創(chuàng)建student_dissertation數(shù)據(jù)庫酒觅,在該數(shù)據(jù)庫中創(chuàng)建4張數(shù)據(jù)表:t_student(學(xué)生表)翩瓜、t_department(專業(yè)表)、t_dissertation(課題表)、t_s_dissertation(選題表),它們表結(jié)構(gòu)設(shè)計如下:
(2)對各表輸入以下數(shù)據(jù):
(2)對各表輸入以下數(shù)據(jù):
1.2程序設(shè)計內(nèi)容及要求
(1)為各表設(shè)置主鍵
(2)查詢要求得到所有專業(yè)號為1的男生的學(xué)生信息
(3)查詢得到所有電子系男生的學(xué)生信息
(4)創(chuàng)建視圖,顯示學(xué)生所選課題還未通過審批的信息
(5)創(chuàng)建存儲過程烟勋,通過指定專業(yè),返回該專業(yè)所有學(xué)生的基本信息
(6)創(chuàng)建觸發(fā)器筐付,當(dāng)某課題被刪除時卵惦,選題表中相關(guān)記錄也同時被刪除
(7)建立數(shù)據(jù)庫相關(guān)表之間的參照完整性約束,均設(shè)置為級聯(lián)
1.3程序設(shè)計的目的
《數(shù)據(jù)庫原理及應(yīng)用》課程設(shè)計是非常重要的實踐環(huán)節(jié)之一瓦戚,是學(xué)完《數(shù)據(jù)庫原理及應(yīng)用》課程后的一次全面的綜合練習(xí)沮尿。本課程設(shè)計主要在于鞏固學(xué)生對數(shù)據(jù)庫基本原理和基礎(chǔ)理論得理解,掌握數(shù)據(jù)庫應(yīng)用系統(tǒng)的設(shè)計開發(fā)的基本方法伤极,進一步提高學(xué)生綜合運用所學(xué)知識的能力蛹找。
(1)通過本次設(shè)計是了解學(xué)生對數(shù)據(jù)庫?表的創(chuàng)建姨伤,以及插入數(shù)據(jù)?存儲過程等的掌握情況。
(2)掌握對MySQL的基本操作和使用技能庸疾。
(3)復(fù)習(xí)?鞏固本學(xué)期所學(xué)內(nèi)容乍楚。
(4)通過一個實訓(xùn)提高學(xué)生的綜合能力,并讓學(xué)生從中發(fā)現(xiàn)自身存在的問題届慈。
第2章程序?qū)崿F(xiàn)思路
在數(shù)據(jù)庫領(lǐng)域中徒溪,通常情況下都會設(shè)計E-R圖,用來描述現(xiàn)實世界的事物金顿。使用E-R圖每一個實體對應(yīng)一張數(shù)據(jù)表臊泌。
在實體圖中,使用矩形表示實體揍拆,橢圓表示屬性渠概,并且使用無向邊將其與實體連接起來。這樣就可以很明確的看出實體所帶有屬性嫂拴。如下畫出四張表的實體圖:
(1)學(xué)生表E-R圖
(2)專業(yè)表E-R圖
(3)課題表E-R圖
(4)選課表E-R圖
同時播揪,一個數(shù)據(jù)庫里的表也不是相互獨立,它們之間存在著一定的聯(lián)系筒狠,如學(xué)生表和專業(yè)表中都存在專業(yè)號這個屬性猪狈。在E-R圖中,可以使用關(guān)系表示實體間的聯(lián)系辩恼。通常使用棱形來表示實體之間的聯(lián)系雇庙。
通過表之間的聯(lián)系,我們可以實現(xiàn)多表連接查詢灶伊,通過表之間的關(guān)系疆前,可以由一表中的信息查詢得到另一表中的信息。理清各表之間的關(guān)系之后谁帕,再回顧所學(xué)知識數(shù)據(jù)庫創(chuàng)建語句create database 創(chuàng)建數(shù)據(jù)庫峡继,再通過create table 創(chuàng)建各個表冯袍,之后再完善表里的數(shù)據(jù)匈挖,用insert into values 將數(shù)據(jù)插入表中。這樣一個較完整的數(shù)據(jù)庫就被創(chuàng)建好了康愤。
然后儡循,在由創(chuàng)建好的數(shù)據(jù)表實現(xiàn)對數(shù)據(jù)的查詢,如提供學(xué)生的一個屬性信息征冷,可以查詢該學(xué)生的所有信息择膝。同時,根據(jù)題目要求检激,需要創(chuàng)建相應(yīng)的視圖?存儲過程?觸發(fā)器等肴捉。視圖作用類似于篩選腹侣;觸發(fā)器相當(dāng)于給事件發(fā)生的前或后裝一個觸發(fā)裝置;創(chuàng)建存儲過程可以減少數(shù)據(jù)端和服務(wù)端的數(shù)據(jù)傳輸齿穗。
根據(jù)所學(xué)知識傲隶,通過create view語句創(chuàng)建視圖,通過create procedure語句來完成存儲過程的創(chuàng)建窃页,通過create trigger來創(chuàng)建觸發(fā)器跺株。
第3章 程序清單或正文
1.創(chuàng)建數(shù)據(jù)庫
create database student_dissertation;
2.創(chuàng)建t_student表
mysql> create table t_student(
-> studentid char(20) not null,#學(xué)生學(xué)號
-> studentname char(8) null,#姓名
-> studentsex char(2) null,#性別
-> departmentid int(8) null,#專業(yè)號
-> studentphone char(30) null,#電話
-> password char(20) null,#密碼
-> primary key(studentid)
-> );
3.創(chuàng)建t_department表
mysql> create table t_department(
-> departmentid int(8) not null primary key,#專業(yè)號
-> departmentname char(50) null,#專業(yè)名稱
-> manager char(8) null #主任名
-> );
4.創(chuàng)建t_dissertation表
mysql> create table t_dissertation(
-> dissertationid char(20) not null primary key,#課題號
-> dissertationname char(30) null,#課題名稱
-> attachment char(30) null,#附件說明
-> teachername char(8) null #指導(dǎo)教師名
-> );
5.創(chuàng)建t_s_dissertation表
mysql> create table t_s_dissertation(
-> studentid char(20) not null,
-> dissertationid char(20) not null,
-> introduction text null,
-> sendtime datetime null,
-> state char(10) null,
-> primary key(studentid,dissertationid)
-> );
6.給表t_department輸入數(shù)據(jù)
mysql> insert into t_department values
(1,'電子系','楊明'),
(2,'計算機系','李長山'),
(3,'自動化系','顧林');
7.給表t_student輸入數(shù)據(jù)
mysql> insert into t_student values
-> ('1000','朱群','男',1,'13759778212','123456'),
-> ('1001','王小川','男',1,'13576543233','778899'),
-> ('1002','秦悅','女',2,'13767885731','456123'),
-> ('1003','陳小飛','男',3,'13755897651','369874'),
-> ('1004','胡小麗','女',3,'13567334622','147896'),
-> ('1005','張維','女',1,'13854673392','458972'),
-> ('1006','李勇','男',1,'13787416711','147896'),
-> ('1007','羅青','女',1,'13887914751','146697');
8.給表t_dissertation 輸入數(shù)據(jù)
mysql> insert into t_dissertation values
-> ('Z001','基于CRC技術(shù)的無線通信模塊','資助','沈方'),
-> ('Z002','基于ARM的室內(nèi)環(huán)境無線監(jiān)測系統(tǒng)','資助','羅青'),
-> ('D001','基于51單片機的GPS定位儀','資助','郭海'),
-> ('J001','基于B/S構(gòu)架的數(shù)字圖書館','資助','趙萍'),
-> ('J002','聽力訓(xùn)練播放器','非資助','王海');
9.給表t_s_dissertation 輸入數(shù)據(jù)
mysql> insert into t_s_dissertation values
-> ('1000','Z001','電子類','2009.10.20','待審批'),
-> ('1001','Z002','電子類','2008.8.5','通過'),
-> ('1002','J001','計算機類','2009.9.28','待審批'),
-> ('1003','D001','電子,自動化類','2009.9.26','待審批'),
-> ('1001','D001','電子脖卖,自動化類','2009.10.6','待審批'),
-> ('1002','J002','計算機類','2008.7.24','通過');
10.查詢要求得到所有專業(yè)號為1的男生的學(xué)生信息
mysql> select *from t_student where departmentid=1;
11.查詢得到所有電子系男生的學(xué)生信息
select * from t_student where departmentid=1 and studentsex='男';
12.創(chuàng)建視圖乒省,顯示學(xué)生所選課題還未通過審批的信息
mysql> create view v_nopass(studentid,dissertation,introduction,sendtime,state) as select * from t_s_dissertation where state='待審批
13.創(chuàng)建存儲過程,通過指定專業(yè)畦木,返回該專業(yè)所有學(xué)生的基本信息
mysql> delimiter //
mysql> create procedure p_department (in name char(50))
-> begin
-> select studentid,studentname,studentsex,studentphone,password from t_student where
-> departmentid in(select departmentid from t_department where departmentname=name);
-> end
->//
14.創(chuàng)建觸發(fā)器袖扛,當(dāng)某課題被刪除時,選題表中相關(guān)記錄也同時被刪除
mysql> delimiter //
mysql> create trigger tr_drop after delete
-> on t_dissertation for each row
-> begin
-> delete from t_s_dissertation where t_s_dissertation.dissertationid=old.dissertationid;
-> end
-> //
15.建立數(shù)據(jù)庫相關(guān)表之間的參照完整性約束十籍,均設(shè)置為級聯(lián)
AFTER TABLE t_student ADD FOREIGN KEY(departmentid) REFERENCES t_department(departmentid) on delete cascade on update cascade;
alter table t_s_dissertation add foreign key(studentid) references t_student(studentid) on delete cascade on update cascade;
alter table t_s_dissertation add foreign key(dissertationid) references t_dissertation(dissertationid) on delete cascade on update cascade;
第3章 課程設(shè)計心得
回顧起此課程設(shè)計攻锰,至今我仍感慨頗多,從理論到實踐妓雾,在這段日子里娶吞,可以說得是苦多于甜,但是可以學(xué)到很多很多的東西械姻,同時不僅可以鞏固了以前所學(xué)過的知識妒蛇,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的楷拳。主要收獲由以下幾點:
(1)回顧了這個學(xué)期以來所學(xué)的知識绣夺,發(fā)現(xiàn)了自身的不足和存在的問題。
(2)這是第一次完整的完成整個數(shù)據(jù)庫的創(chuàng)建欢揖,懂得我們不僅要掌握理論知識陶耍,還更加應(yīng)該鍛煉自己的操作能力,才能更好的學(xué)以致用她混。
(3)在這次難得的課程設(shè)計過程中我鍛煉了自己的思考能力和動手能力烈钞。通過題目選擇和設(shè)計電路的過程中,加強了我思考問題的完整性和實際生活聯(lián)系的可行性坤按。
(4)同時毯欣,培養(yǎng)了在實踐過程中遇到問題后,應(yīng)該尋找解決的辦法的習(xí)慣臭脓,如借助網(wǎng)絡(luò)或與同學(xué)交流等酗钞。
(5)通過這次實訓(xùn),讓我更能體會到數(shù)據(jù)庫的強大與奇妙,以及功能的多樣性砚作。
在這次實訓(xùn)中窘奏,不僅收獲了很多,同時也發(fā)現(xiàn)了自身存在的不足葫录,需要改進的地方:
(1)對知識掌握的還不夠牢固蔼夜,上機操作能力還有待于提高。
(2)對數(shù)據(jù)庫的認(rèn)識僅局限于書本压昼,而沒有通過實際生活中去理解求冷。
(3)對于一些查詢語句不夠熟悉,導(dǎo)致花費的時間較長
(4)對數(shù)據(jù)庫得存儲過程理解還不夠深入
(5)今后應(yīng)該多查詢資料窍霞,把所存在得問題尋找原因并改正匠题,學(xué)會學(xué)以致用。
(6)平時對遇到的問題沒及時解決但金,導(dǎo)致問題一直存在韭山。
第5章 參考文獻
[1] 陳林琳,蔣麗麗冷溃,解二虎主編.SQL Server 2008數(shù)據(jù)庫設(shè)計教程. 江蘇大學(xué)出版社钱磅,2016年8月
[2]任進軍,林海霞 主編 MySQL 數(shù)據(jù)庫管理與開發(fā) 人民郵電出版社 2017年6月
[3]百度知道:https://www.unjs.com/fanwenwang/ziliao/590237.html
[4]百度百科:
http://www.360doc.com/content/16/1011/21/15549660_597691151.shtml
[5]百度知道:https://bbs.csdn.net/topics/390822588