《數(shù)據(jù)庫系統(tǒng)概論》課程設(shè)計(jì)報(bào)告圖書管理系統(tǒng)設(shè)計(jì)_第1頁
《數(shù)據(jù)庫系統(tǒng)概論》課程設(shè)計(jì)報(bào)告圖書管理系統(tǒng)設(shè)計(jì)_第2頁
《數(shù)據(jù)庫系統(tǒng)概論》課程設(shè)計(jì)報(bào)告圖書管理系統(tǒng)設(shè)計(jì)_第3頁
《數(shù)據(jù)庫系統(tǒng)概論》課程設(shè)計(jì)報(bào)告圖書管理系統(tǒng)設(shè)計(jì)_第4頁
《數(shù)據(jù)庫系統(tǒng)概論》課程設(shè)計(jì)報(bào)告圖書管理系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、信息技術(shù)學(xué)院數(shù)據(jù)庫概論課程設(shè)計(jì)報(bào)告專 業(yè): 班 級(jí): 姓 名: 學(xué) 號(hào): 設(shè)計(jì)題目: 指導(dǎo)教師: 2009年 12 月 28 日?qǐng)D書管理系統(tǒng)設(shè)計(jì)一、系統(tǒng)設(shè)計(jì)的目的和意義 對(duì)該系統(tǒng)開發(fā)設(shè)計(jì)的重要性和必要性進(jìn)行論述。通過完成從用戶需求分析、概念結(jié)構(gòu)設(shè)計(jì),邏輯結(jié)構(gòu)設(shè)計(jì)等一系列的數(shù)據(jù)庫設(shè)計(jì)到上機(jī)編程、調(diào)試和應(yīng)用等全過程,進(jìn)一步理解和掌握教材中的相關(guān)內(nèi)容。二、系統(tǒng)需求分析1、 學(xué)生學(xué)生的操作流程如圖b.1所示。2、 管理員管理員可完成書籍和學(xué)生的增加、刪除和修改以及對(duì)學(xué)生借閱、續(xù)借、歸還的確認(rèn),其操作流程如圖b.2所示。要求:畫出系統(tǒng)功能模塊圖后,并對(duì)各個(gè)模塊進(jìn)行解釋。三、概念結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)庫需要表述的信

2、息有以下幾種:1、 圖書信息2、 學(xué)生信息3、 管理員信息4、 學(xué)生預(yù)定圖書信息5、 學(xué)生借閱歸還圖書信息可以用e/r模型表述該模型的設(shè)計(jì),e/r圖如圖b.3所示。四、邏輯結(jié)構(gòu)設(shè)計(jì)通過e/r模型到關(guān)系模型的轉(zhuǎn)化,可以得到如下關(guān)系模式:1、 book(bookid,title,author,publisher,pyear,language)2、 student(id,name,dept)3、 assistent(id,name)4、 bbook(bookid,stdid,bdate)5、 rbook(bookid,stdid,rdate)6、 lend(stdid,astid,bookid,ld

3、ate)7、 return(stdid,astid,bookid,rdate)說明1、 書號(hào)是圖書的鍵碼,每本書有惟一的書號(hào),一個(gè)學(xué)生可同時(shí)借閱多本書。一個(gè)管理員可處理多個(gè)同學(xué)的借閱等事宜。2、 一般情況下,學(xué)生、管理員和圖書之間的聯(lián)系為1:1:n,借書關(guān)系lend作為連接關(guān)系,其鍵碼為n端實(shí)體集的鍵碼,即書號(hào)為借書關(guān)系的鍵碼。這反映了如果還書時(shí)也把當(dāng)初的借書記錄刪除,則書號(hào)就能惟一識(shí)別一個(gè)元組。如果還書時(shí)不同時(shí)刪除借書記錄,則意味著同一本書前后可借給不同的學(xué)生,于是學(xué)生、管理員和圖書之間的聯(lián)系變?yōu)閙:1:n,這時(shí)借書關(guān)系的鍵碼為書號(hào)和學(xué)號(hào)的組合。如果在不刪除借書記錄的情況下,同一學(xué)生再次借同

4、一本書,這時(shí),學(xué)生、管理員和圖書之間的聯(lián)系變?yōu)閙:p:n,于是,借書關(guān)系的鍵碼為書號(hào)、學(xué)號(hào)和管理員號(hào)的組合。但這里有一個(gè)隱含的信息,即同一學(xué)生前后兩次借同一本書所遇到的管理員不同,而這種不同可能僅僅是“日期”不同。因此,借書日期成了必不可少的成分,也就是說,在這種情況下,屬性全集才是借書關(guān)系的鍵碼。總之,借書關(guān)系的鍵碼與圖書管理模式有關(guān),讀者可按照自己的理解確定鍵碼,并編寫相應(yīng)的事務(wù)處理流程。其他關(guān)系也有類似之處。3、 要知道圖書當(dāng)前的狀態(tài),是在圖書館存放,還是被借閱等,需要在book的模式中增加對(duì)應(yīng)項(xiàng)用以表示圖書當(dāng)前的狀態(tài)。比如我們?cè)黾觭tate,并且約定取值和狀態(tài)的對(duì)應(yīng)關(guān)系如下:1) 在圖

5、書館中并且沒有被預(yù)定2) 在圖書館中并且已被除數(shù)預(yù)定3) 被借出并且沒能被預(yù)定4) 被借出并且已被預(yù)定五、物理結(jié)構(gòu)設(shè)計(jì)為了提高在表中搜索元組的速度,在實(shí)際實(shí)現(xiàn)的時(shí)候應(yīng)該基于鍵碼建立索引。下面是各表中建立索引的表項(xiàng): book(bookid) student(id)六、系統(tǒng)實(shí)現(xiàn)(一)用sql實(shí)現(xiàn)設(shè)計(jì)1、 建立book表create table book(bookid varchar(20) primary key,title varchar(50) not null,author varchar(50),publisher varchar(50),pyear char(4),language c

6、har(1) default c,state char(1) default 0);2、 建立student表create table student(id varchar(6) primary key,name varchar(20) not null,dept varchar(20) not null);3、 建立assistent表create table assistent(id varchar(6) primary key,name varchar(20) not null,);4、 建立bbook表create table bbook(bid varchar(20) not nul

7、l,stdid varchar(6) not null,bdate datetime not null,constraint fk_bbook_bid foreign key(bid) references book(bookid),constraint fk_bbook_stdid foreign key(stdid) references student(id));5、 建立rbook表create table rbook(bookid varchar(20)not null,stdid varchar(6) not null,rdate datetime not null,constra

8、int fk_rbook_bookid foreign key(bookid) references book(bookid),constraint fk_rbook_stdid foreign key(stdid) references student(id));6、 建立lend表create table lend(stdid varchar(6) not null,astid varchar(6) not null,bookid varchar(20)not null,ldate datetime not null,constraint fk_lend_stdid foreign key

9、(stdid) references student(id),constraint fk_lend_astid foreign key(astid) references assistent(id),constraint fk_lend_bookid foreign key(bookid) references book(bookid));7、 建立return表create table return(stdid varchar(6) not null,astid varchar(6) not null,bookid varchar(20)not null,rdate datetime not

10、 null,constraint fk_return_stdid foreign key(stdid) references student(id),constraint fk_ return _astid foreign key(astid) references assistent(id),constraint fk_ return _bookid foreign key(bookid) references book(bookid));8、 管理員操作1) 增加學(xué)生:insert into student(id, name, dept) values(#stdno, #name, #de

11、pt);2) 刪除學(xué)生:delete from student where(id=#id);3) 修改學(xué)生信息:update student set name=#name, dept=#dept where(id=#id);4) 增加書籍:insert into book(bookid, title, author, publisher, pyear, language) values(#bookid, #title, #author, #publisher, #pyear, #language);5) 刪除書籍:delete from book where(bookid=#bookid);6

12、) 修改書籍信息:update book set title=#title, author =#author, publisher =#publisher, pyear =#pyear, language =#language where(bookid=#bookid);7)8)9) 待添加的隱藏文字內(nèi)容3學(xué)生借閱圖書:begin transactioninsert into lend(stdid, astid, bookid, ldate)values(#stdid, #astid, #bookid, #ldate);update book set state=2 where bookid=

13、#bookidcommit;10) 學(xué)生歸還圖書:begin transactioninsert into return(stdid, astid, bookid, rdate)values(#stdid, #astid, #bookid, #rdate);update book set state=0 where bookid=#bookidcommit;9、 學(xué)生操作1) 預(yù)定圖書:create proc book_book bookid varchar(20),stdid char(6), bdate datetimeasdeclare transname varchar(20)sele

14、ct transname=book_bookbegin transaction transnamedeclare booked int, book_state_before char(1), book_state_after char(1)select booked=count(*) from bbook where bid=bookidif booked0 rollback transaction transnameelse begin select book_state_before=state from book where bookid=bookidif book_state_befo

15、re=0 select book_state_after=1else if book_state_before=2 select book_state_after=3 update book set state=book_state_after where bookid=bookidinsert into bbook(bid,stdid,bdate) values(bookid,stdid,bdate) commit transaction transnameendgo學(xué)生預(yù)定圖書,假設(shè)圖書已經(jīng)被預(yù)定了,則不允許繼續(xù)預(yù)定。否則的話應(yīng)該根據(jù)圖書是在館內(nèi)還是被借出去兩種情況,修改圖書當(dāng)前的狀態(tài)。最

16、后在預(yù)定表中插入一條記錄。修改記錄和插入新記錄應(yīng)該發(fā)生或都不發(fā)生,所以將這個(gè)動(dòng)作封閉成一個(gè)事務(wù),保證這個(gè)操作的原子性。2) 續(xù)借圖書:create proc renew_book bookid varchar(20),stdid char(6), rdate datetimeasdeclare transname varchar(20)select transname=renew_bookbegin transaction transnamedeclare booked intselect booked=count(*) from bbook where bid=bookidif booked=0insert into rbook(bid,st

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論