版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 課程設(shè)計(jì)題目:圖書管借還管理信息系統(tǒng)數(shù)據(jù)庫(kù)</p><p> 2009年 8 月 26 日</p><p><b> 目錄</b></p><p> 封面………………………………………………………………………1</p
2、><p> 目錄………………………………………………………………………2</p><p> 一、實(shí)驗(yàn)題目……………………………………………………………3</p><p> 二、實(shí)驗(yàn)時(shí)間與地點(diǎn)……………………………………………………3</p><p> 三、實(shí)驗(yàn)?zāi)康摹?</p>&l
3、t;p> 四、實(shí)驗(yàn)要求與內(nèi)容……………………………………………………3</p><p> (一)實(shí)驗(yàn)要求………………………………………………………3</p><p> (二)實(shí)驗(yàn)內(nèi)容………………………………………………………3</p><p> 五、實(shí)現(xiàn)思路……………………………………………………………4</p><p> (
4、一)系統(tǒng)需求分析…………………………………………………4</p><p> (二)數(shù)據(jù)流程圖……………………………………………………5</p><p> 六、實(shí)現(xiàn)過程……………………………………………………………6</p><p> (一)數(shù)據(jù)庫(kù)需求分析………………………………………………6</p><p> (二)概念結(jié)構(gòu)設(shè)計(jì)………
5、…………………………………………7</p><p> 1、局部E-R圖………………………………………………7</p><p> 2、全局E-R圖………………………………………………8</p><p> (三)邏輯結(jié)構(gòu)設(shè)計(jì)…………………………………………………9</p><p> (四)物理結(jié)構(gòu)設(shè)計(jì)…………………………………………………
6、9</p><p> (五)數(shù)據(jù)庫(kù)實(shí)施……………………………………………………9</p><p> 七、實(shí)驗(yàn)總結(jié)……………………………………………………………19</p><p> 八、心得體會(huì)……………………………………………………………19</p><p> 附錄………………………………………………………………………21</
7、p><p><b> 一、實(shí)驗(yàn)題目</b></p><p> 圖書管借還管理信息系統(tǒng)數(shù)據(jù)庫(kù)</p><p><b> 二、實(shí)驗(yàn)時(shí)間、地點(diǎn)</b></p><p> 時(shí)間:2009年8月24日——2009年8月27日</p><p> 地點(diǎn):軟件樓501、503 <
8、/p><p><b> 三、實(shí)驗(yàn)?zāi)康?lt;/b></p><p> 通過本次課程設(shè)計(jì),讓學(xué)生綜合運(yùn)用所學(xué)的關(guān)系數(shù)據(jù)庫(kù)原理知識(shí)解決實(shí)際問題,進(jìn)一步掌握數(shù)據(jù)庫(kù)原理的相關(guān)理論和數(shù)據(jù)庫(kù)的設(shè)計(jì)實(shí)現(xiàn)過程,進(jìn)一步提高學(xué)生的分析問題和解決問題的能力以及學(xué)生的接收能力。</p><p><b> 四、實(shí)驗(yàn)要求與內(nèi)容</b></p>
9、<p><b> (一)實(shí)驗(yàn)要求:</b></p><p> 1、自己獨(dú)立完成,最終提交課程設(shè)計(jì)報(bào)告和實(shí)驗(yàn)成果。</p><p> 2、課程設(shè)計(jì)報(bào)告格式:封面、題目、時(shí)間地點(diǎn)、要求、內(nèi)容、詳細(xì)步驟和過程、總結(jié)。</p><p> 3、指定時(shí)間必須在實(shí)驗(yàn)機(jī)房上機(jī)。</p><p> 4、最終成績(jī)包括
10、平時(shí)成績(jī)(50%)和最終考核成績(jī)(50%)。</p><p> 5、實(shí)驗(yàn)設(shè)計(jì)內(nèi)容必須以老師指定的題目為準(zhǔn),老師指定的題目為最終檢查的依據(jù)。</p><p><b> (二)實(shí)驗(yàn)內(nèi)容:</b></p><p> 1、對(duì)各個(gè)系統(tǒng)進(jìn)行系統(tǒng)功能需求分析。</p><p> 2、數(shù)據(jù)庫(kù)設(shè)計(jì)分析階段,進(jìn)行詳細(xì)的數(shù)據(jù)庫(kù)需求分析
11、,進(jìn)行概念數(shù)據(jù)庫(kù)的設(shè)計(jì),畫出數(shù)據(jù)庫(kù)的E-R圖(局部和整體E-R圖)。</p><p> 3、設(shè)計(jì)出詳細(xì)的邏輯數(shù)據(jù)庫(kù)結(jié)構(gòu),將各個(gè)實(shí)體和聯(lián)系轉(zhuǎn)化為相應(yīng)的二維表即關(guān)系模式,指定各個(gè)關(guān)系的主關(guān)鍵字和外部關(guān)鍵字,并對(duì)各個(gè)關(guān)系的約束加以限定。</p><p> 4、通過企業(yè)管理器或是查詢分析器實(shí)現(xiàn)各個(gè)二維關(guān)系(建議最好用SQL代碼實(shí)現(xiàn)),要求建立相關(guān)的索引。</p><p>
12、; 5、根據(jù)系統(tǒng)功能需求設(shè)計(jì)相應(yīng)的查詢視圖。</p><p> 6、要求根據(jù)系統(tǒng)功能需求建立存儲(chǔ)過程。</p><p> 7、根據(jù)功能需求建立相應(yīng)的觸發(fā)器以保證數(shù)據(jù)的一致性。</p><p> 8、通過建立用戶和權(quán)限分配實(shí)現(xiàn)數(shù)據(jù)庫(kù)一定的安全性,考慮數(shù)據(jù)庫(kù)的備份與恢復(fù)(此內(nèi)容選作)。</p><p><b> 五、實(shí)現(xiàn)思路&
13、lt;/b></p><p> (一)系統(tǒng)需求分析:</p><p> 圖書管理系統(tǒng)需要滿足來(lái)自三方面的需求,這三個(gè)方面分別是圖書借閱者、圖書館工作人員和圖書館管理人員。圖書借閱者的需求是查詢圖書館所存的圖書、個(gè)人借閱情況及個(gè)人信息的修改;圖書館工作人員對(duì)圖書借閱者的借閱及還書要求進(jìn)行操作,同時(shí)形成借書或還書報(bào)表給借閱者查看確認(rèn);圖書館管理人員的功能最為復(fù)雜,包括對(duì)工作人員、圖書
14、借閱者、圖書進(jìn)行管理和維護(hù),及系統(tǒng)狀態(tài)的查看、維護(hù)并生成催還圖書報(bào)表。</p><p> 圖書借閱者可直接查看圖書館圖書情況,如果圖書借閱者根據(jù)本人借書證號(hào)和密碼登錄系統(tǒng),還可以進(jìn)行本人借書情況的查詢和維護(hù)部分個(gè)人信息。一般情況下,圖書借閱者只應(yīng)該查詢和維護(hù)本人的借書情況和個(gè)人信息,若查詢和維護(hù)其他借閱者的借書情況和個(gè)人信息,就要知道其他圖書借閱者的借書證號(hào)和密碼。這些是很難得到的,特別是密碼,所以不但滿足了圖
15、書借閱者的要求,還保護(hù)了圖書借閱者的個(gè)人隱私。</p><p> 圖書館工作人員有修改圖書借閱者借書和還書記錄的權(quán)限,所以需對(duì)工作人員登陸本模塊進(jìn)行更多的考慮。在此模塊中,圖書館工作人員可以為圖書借閱者加入借書記錄或是還書記錄,并打印生成相應(yīng)的報(bào)表給用戶查看和確認(rèn)。</p><p> 圖書館管理人員功能的信息量大,數(shù)據(jù)安全性和保密性要求最高。本功能實(shí)現(xiàn)對(duì)圖書信息、借閱者信息、總體借閱情
16、況信息的管理和統(tǒng)計(jì)、工作人員和管理人員信息查看及維護(hù)。圖書館管理員可以瀏覽、查詢、添加、刪除、修改、統(tǒng)計(jì)圖書的基本信息;瀏覽、查詢、統(tǒng)計(jì)、添加、刪除和修改圖書借閱者的基本信息,瀏覽、查詢、統(tǒng)計(jì)圖書館的借閱信息,但不能添加、刪除和修改借閱信息,這部分功能應(yīng)該由圖書館工作人員執(zhí)行,但是,刪除某條圖書借閱者基本信息記錄時(shí),應(yīng)實(shí)現(xiàn)對(duì)該圖書借閱者借閱記錄的級(jí)聯(lián)刪除。并且還應(yīng)具有生成催還圖書報(bào)表,并打印輸出的功能。</p><p
17、><b> (二)數(shù)據(jù)流程圖:</b></p><p> 數(shù)據(jù)流程圖是一種能全面地描述信息系統(tǒng)邏輯模型的主要工具,它可以用少數(shù)幾種符號(hào)綜合地反映出信息在系統(tǒng)中的流動(dòng)、處理和存儲(chǔ)情況。</p><p> 系統(tǒng)的數(shù)據(jù)流程圖如圖1所示,所有數(shù)據(jù)由圖書管理員輸入。</p><p> 圖1 系統(tǒng)數(shù)據(jù)流程圖</p><
18、p><b> 六、實(shí)現(xiàn)過程</b></p><p> (一)數(shù)據(jù)庫(kù)需求分析</p><p> 根據(jù)這個(gè)系統(tǒng)所要實(shí)現(xiàn)的目的和任務(wù),建立了八張表:管理員、藏書室、圖書類別、圖書信息表、用戶信息表、借書信息表、還書信息表、罰款信息表。</p><p> 管理員表包括:管理員編號(hào)、管理員名、管理員級(jí)別。</p><p&
19、gt; 藏書室表包括:藏書室編號(hào)、藏書室名稱、管理員編號(hào)。</p><p> 圖書類別表包括:類型編號(hào)、類型名稱、藏書室編號(hào)。</p><p> 圖書信息表包括:圖書編號(hào)、圖書名稱、作者、單價(jià)、類型編號(hào)。借出狀態(tài)、出版社、出版日期。</p><p> 用戶信息表包括:用戶號(hào)、用戶名、有效證件類型、罰款總金額、借書數(shù)量。</p><p>
20、; 借書信息表包括:用戶號(hào)、圖書編號(hào)、是否續(xù)借、借書日期。</p><p> 還書信息表包括:用戶號(hào)、圖書編號(hào)、還書日期。</p><p> 罰款信息表包括:用戶號(hào)、圖書編號(hào)、罰款日期、罰款金額。</p><p> (二)概念結(jié)構(gòu)設(shè)計(jì)(畫出數(shù)據(jù)庫(kù)的E-R圖局部和整體E-R圖)</p><p><b> 1、局部E-R圖&l
21、t;/b></p><p><b> 11</b></p><p><b> 1</b></p><p><b> n</b></p><p> 圖2 管理信息局部E-R圖</p><p> m
22、 n</p><p><b> m</b></p><p><b> n</b></p><p> 圖3 用戶借還書局部E-R圖</p><p><b> 2、全局E-R圖</b></p><p><b> 1
23、1</b></p><p><b> 1</b></p><p> 1 m</p><p> m n m</p><p> 圖4 全局E-R圖</p><p> (三)邏輯數(shù)據(jù)
24、庫(kù)結(jié)構(gòu)設(shè)計(jì)</p><p><b> 關(guān)系模式:</b></p><p> 管理員(管理員編號(hào),管理員名,管理員級(jí)別)</p><p> 藏書室(藏書室編號(hào),藏書室名稱,管理員編號(hào))</p><p> 圖書類別(類別編號(hào),類別名稱,藏書室編號(hào))</p><p> 圖書信息表(圖書編號(hào),圖
25、書名稱,作者,單價(jià),類別編號(hào),借出狀態(tài),出版社,出版日期)</p><p> 用戶信息表(用戶號(hào),用戶名,有效證件類型,罰款總金額,借書數(shù)量)</p><p> 借書信息表(用戶名,圖書編號(hào),是否續(xù)借,借書日期)</p><p> 還書信息表(用戶號(hào),圖書編號(hào),還書日期)</p><p> 罰款信息表(用戶號(hào),圖書編號(hào),罰款日期,罰款
26、金額)</p><p><b> (四)物理結(jié)構(gòu)設(shè)計(jì)</b></p><p> 建立圖書信息表圖書名稱索引</p><p> create index/*索引*/ number_inx</p><p> on 圖書信息表(圖書名稱 asc)</p><p><b> (五)數(shù)據(jù)
27、庫(kù)實(shí)施</b></p><p> 根據(jù)系統(tǒng)功能需求設(shè)計(jì)了相關(guān)視圖:返回圖書管現(xiàn)存圖書信息視圖(book_information)、返回用戶借書的具體信息視圖(user_book_information)、顯示用戶罰款總金額視圖(user_money_information)、顯示還書信息視圖(book_back)。代碼如下:</p><p> --視圖1 返回圖書管現(xiàn)存圖
28、書信息</p><p> create view book_information</p><p> (圖書名稱,作者,出版社,所屬類型,所屬藏書室,單價(jià))</p><p><b> as </b></p><p> select 圖書名稱,作者,出版社,類型名稱,藏書室名稱,單價(jià)</p><
29、;p> from 圖書信息表 join 圖書類別 join 藏書室</p><p> on (藏書室.藏書室編號(hào)=圖書類別.藏書室編號(hào))</p><p> on (圖書信息表.類型編號(hào)=圖書類別.類型編號(hào))</p><p> --視圖2 返回用戶借書的具體信息</p><p> create view user_book_i
30、nformation</p><p> (用戶號(hào),用戶名,圖書名稱,借書日期)</p><p><b> as</b></p><p> select 借書信息表.用戶號(hào),用戶名,圖書名稱,借書日期</p><p> from 用戶信息表 join 借書信息表 join 圖書信息表</p><
31、p> on 圖書信息表.圖書編號(hào)=借書信息表.圖書編號(hào)</p><p> on 借書信息表.用戶號(hào)=用戶信息表.用戶號(hào)</p><p> --視圖3 顯示用戶罰款總金額</p><p> create view user_money_information</p><p> (用戶號(hào),用戶名,罰款金額)</p>
32、<p><b> as</b></p><p> select 用戶號(hào),用戶名,罰款總金額</p><p> from 用戶信息表</p><p> where 罰款總金額>0</p><p> --視圖4 顯示還書信息</p><p> create view b
33、ook_back</p><p> (圖書編號(hào),圖書名稱,所屬分類)</p><p><b> as</b></p><p> select 還書統(tǒng)計(jì)表.圖書編號(hào),還書統(tǒng)計(jì)表.圖書編號(hào),類型名稱</p><p> from 還書統(tǒng)計(jì)表 join 圖書信息表 join 圖書類別</p><p&g
34、t; on 圖書信息表.類型編號(hào)=圖書類別.類型編號(hào)</p><p> on 還書統(tǒng)計(jì)表.圖書編號(hào)=圖書信息表.圖書編號(hào)</p><p> 根據(jù)系統(tǒng)功能需求,要求對(duì)表進(jìn)行查詢、插入、修改、刪除等功能,建立了存儲(chǔ)過程:用戶表的修改(ba_user_update)、圖書信息表的修改(ba_book_update)、還書信息表插入操作(ba_back_insert)、用戶表更新(bo_us
35、er_update)、圖書信息表更新(bo_book_update)、借書信息插入(borrow)、圖書續(xù)借(continue_borrow)、罰款信息表插入(money_insert)、還書(back)、圖書查詢(search_book)存儲(chǔ)過程。代碼如下:</p><p> --還書過程,用戶表的修改 </p><p> create procedure ba_user_updat
36、e</p><p> (@usernumber char(8),@money smallint)</p><p><b> as </b></p><p> update/*刷新*/ 用戶信息表 set 借書數(shù)量=借書數(shù)量-1,罰款總金額=罰款總金額+@money</p><p> where 用戶號(hào)=@user
37、number</p><p> --還書過程,圖書信息表的修改</p><p> create procedure ba_book_update</p><p> (@booknumber char(8))</p><p><b> as </b></p><p> update 圖書信
38、息表 set 借出狀態(tài)='在館'</p><p> where 圖書編號(hào)=@booknumber</p><p> --還書信息表插入操作</p><p> create procedure ba_back_insert --修改還書統(tǒng)計(jì)表</p><p> (@usernumber char(8),@booknum
39、ber char(8))</p><p><b> as</b></p><p> declare @date char(10)</p><p> select @date=getdate()</p><p> insert into 還書統(tǒng)計(jì)表</p><p> values(@us
40、ernumber,@booknumber,@date)</p><p> --用戶表更新存儲(chǔ)過程</p><p> create procedure bo_user_update</p><p> (@usernumber char(8))</p><p><b> as</b></p><p
41、> update 用戶信息表 set 借書數(shù)量=借書數(shù)量+1</p><p> where 用戶號(hào)=@usernumber</p><p> --圖書信息表更新存儲(chǔ)器</p><p> create procedure bo_book_update</p><p> (@booknumber char(8))</p&g
42、t;<p><b> as </b></p><p> update 圖書信息表 set 借出狀態(tài)='借出'</p><p> where 圖書編號(hào)=@booknumber</p><p> --借書信息插入存儲(chǔ)過程</p><p> create procedure borrow
43、</p><p> (@usernumber char(8),@booknumber char(8))</p><p><b> as</b></p><p> declare @sum int --自定義一個(gè)局部變量 </p><p> if @usernumber is null</p>&l
44、t;p><b> begin </b></p><p> print '請(qǐng)輸入用戶號(hào)!'</p><p><b> return </b></p><p><b> end</b></p><p> if not exists(select *
45、from 用戶信息表 where 用戶號(hào)=@usernumber)</p><p><b> begin</b></p><p> print '不存在該用戶'+@usernumber+',請(qǐng)確定您輸入的用戶號(hào)'</p><p><b> return </b></p>
46、<p><b> end</b></p><p> select @sum=借書數(shù)量 from 用戶信息表 where 用戶號(hào)=@usernumber</p><p><b> if @sum=4</b></p><p><b> begin </b></p><
47、p> print '該用戶借書已滿,不能繼續(xù)借書'</p><p><b> return</b></p><p><b> end</b></p><p> if not exists (select *from 圖書信息表 where 圖書編號(hào)=@booknumber)</p>
48、<p><b> begin</b></p><p> print '該圖書編號(hào)不存在,請(qǐng)核實(shí)!'</p><p><b> return</b></p><p><b> end</b></p><p> insert into 借書信
49、息表(用戶號(hào),圖書編號(hào),是否續(xù)借)</p><p> values (@usernumber,@booknumber,'否') </p><p> print '借書成功'</p><p><b> --圖書續(xù)借</b></p><p> create procedure cont
50、inue_borrow</p><p> (@booknumber char(8))</p><p><b> as</b></p><p> declare @continue char(10)</p><p> declare @borrowdate datetime</p><p>
51、 if @booknumber is null</p><p><b> begin</b></p><p> print '請(qǐng)輸入圖書編號(hào)'</p><p><b> return </b></p><p><b> end</b></p>
52、;<p> if not exists (select * from 借書信息表 where 圖書編號(hào)=@booknumber)</p><p><b> begin</b></p><p> print '該圖書編號(hào)不存在,請(qǐng)確認(rèn)您所輸入的圖書編號(hào)'</p><p><b> return &l
53、t;/b></p><p><b> end</b></p><p> select @continue=是否續(xù)借,@borrowdate=借書日期 from 借書信息表 where 圖書編號(hào)=@booknumber</p><p> if @continue='否'</p><p><
54、b> begin</b></p><p> if (@borrowdate+15)<getdate() --返回當(dāng)前日期和時(shí)間</p><p><b> begin</b></p><p> print '圖書借閱超時(shí),不能續(xù)借. 罰款:'</p><p><b>
55、; return </b></p><p><b> end</b></p><p><b> else</b></p><p><b> begin</b></p><p> update 借書信息表 set 借書日期=getdate(),是否續(xù)借=
56、39;是'</p><p> where 圖書編號(hào)=@booknumber</p><p> print '續(xù)借成功'</p><p><b> end</b></p><p><b> end</b></p><p><b> e
57、lse</b></p><p> print '該書已經(jīng)續(xù)借過,不能在續(xù)借'</p><p> --罰款信息表插入過程</p><p> create procedure money_insert</p><p> (@usernumber char(8),@booknumber char(8),@mone
58、y smallint)</p><p><b> as</b></p><p> insert into 罰款信息表(用戶號(hào),圖書編號(hào),罰款金額)</p><p> values(@usernumber,@booknumber,@money)</p><p><b> --還書過程存儲(chǔ)器</b&g
59、t;</p><p> create procedure back</p><p> (@booknumber char(8))</p><p><b> as</b></p><p> declare @borrowdate char(10)</p><p> if @booknumb
60、er is null</p><p><b> begin</b></p><p> print '請(qǐng)輸入圖書編號(hào)'</p><p><b> return </b></p><p><b> end</b></p><p>
61、if not exists (select * from 借書信息表 where 圖書編號(hào)=@booknumber)</p><p><b> begin</b></p><p> print '該圖書編號(hào)不存在,請(qǐng)確認(rèn)你所輸入的圖書編號(hào)'</p><p><b> return </b></p
62、><p><b> end</b></p><p><b> else</b></p><p><b> begin </b></p><p> select @borrowdate=借書日期 from 借書信息表 where 圖書編號(hào)=@booknumber</p&
63、gt;<p> if (@borrowdate+15)<getdate()</p><p><b> begin</b></p><p> print '圖書借閱超時(shí),罰款:' </p><p><b> end</b></p><p> delete
64、from 借書信息表</p><p> where 圖書編號(hào)=@booknumber</p><p> print '還書成功'</p><p><b> end</b></p><p><b> --圖書查詢</b></p><p> create
65、 proc search_book</p><p> (@name varchar(40)=null,@author varchar(30)=null,@publisher varchar(40)=null)</p><p><b> as</b></p><p> if @name is null</p><p>
66、; select @name='%'</p><p> if @author is null</p><p> select @author='%'</p><p> if @publisher is null</p><p> select @publisher='%'</p&
67、gt;<p><b> select *</b></p><p> from 圖書信息表</p><p> where (圖書名稱 like '%'+@name+'%') and (作者 like '%'+@author+'%') and (出版社 like '%'+@
68、publisher+'%') </p><p> create procedure show_back_information</p><p><b> as</b></p><p> select * from book_back</p><p> exec show_back_informat
69、ion</p><p> 根據(jù)系統(tǒng)功能需求建立了兩個(gè)觸發(fā)器以保證數(shù)據(jù)的一致性:離職表插入觸發(fā)器和升職表插入觸發(fā)器。代碼如下:</p><p> --借書信息表插入觸發(fā)器</p><p> create trigger borrow_tigger</p><p> on 借書信息表 for insert</p><p
70、><b> as</b></p><p> declare @booknumber char(8),@usernumber char(8)</p><p> select @booknumber=圖書編號(hào),@usernumber=用戶號(hào) from inserted</p><p> execute bo_user_update @
71、usernumber</p><p> execute bo_book_update @booknumber</p><p> --借書信息表觸發(fā)器,還書刪除信息</p><p> create trigger back_trigger --觸發(fā)器</p><p> on 借書信息表 for delete</p><
72、;p><b> as</b></p><p> declare @booknumber char(8),@usernumber char(8),@borrowdate char(10),@fine smallint</p><p> select @booknumber=圖書編號(hào),@usernumber=用戶號(hào),@borrowdate=借書日期 from
73、deleted</p><p> select @fine=0</p><p> if (@borrowdate+15)<getdate()</p><p><b> begin</b></p><p> select @fine=datediff(dd,(@borrowdate+15),getdate()
74、)*0.2</p><p> execute money_insert @usernumber,@booknumber,@fine</p><p><b> end</b></p><p> execute ba_user_update @usernumber,@money --調(diào)用存儲(chǔ)過程</p><p>
75、 execute ba_book_update @booknumber</p><p> execute ba_back_insert @usernumber,@booknumber</p><p><b> 七、實(shí)驗(yàn)總結(jié)</b></p><p> 在數(shù)據(jù)庫(kù)軟件的開發(fā)過程中,數(shù)據(jù)庫(kù)的定義是實(shí)現(xiàn)良好軟件的基礎(chǔ),在實(shí)際的開發(fā)過程中,開發(fā)人員應(yīng)
76、該有一份數(shù)據(jù)字典列表,這樣不僅有利于程序設(shè)計(jì),而且有利于開發(fā)者之間的交流。</p><p> 在定義字段時(shí)既要考慮數(shù)據(jù)輸入的一般值,更要考慮數(shù)據(jù)可能輸入的最大值,以此來(lái)確定字段的寬度。</p><p> 在進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí),都要考慮數(shù)據(jù)的完整性,一般用約束來(lái)實(shí)現(xiàn)。約束是數(shù)據(jù)庫(kù)設(shè)計(jì)中使用的概念,它涉及字段的唯一性、關(guān)系等等。因此,約束在數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)實(shí)現(xiàn),用約束來(lái)確保完整性實(shí)現(xiàn)起來(lái)快速且可
77、以減少代碼的編寫量。在實(shí)際使用中,我們使用這種方法來(lái)確保數(shù)據(jù)的完整性,當(dāng)數(shù)據(jù)庫(kù)中一個(gè)字段的值會(huì)隨著另一個(gè)字段的值而改變時(shí)使用約束。</p><p><b> 八、心得體會(huì)</b></p><p> 一般而言,一個(gè)實(shí)體不能既無(wú)主鍵又無(wú)外鍵。在E-R 圖中, 處于葉子部位的實(shí)體, 可以定義主鍵,也可以不定義主鍵(因?yàn)樗鼰o(wú)子孫), 但必須要有外鍵(因?yàn)樗懈赣H)。主鍵與
78、外鍵的設(shè)計(jì),在全局?jǐn)?shù)據(jù)庫(kù)的設(shè)計(jì)中,占有重要地位。當(dāng)全局?jǐn)?shù)據(jù)庫(kù)的設(shè)計(jì)完成以后,有個(gè)美國(guó)數(shù)據(jù)庫(kù)設(shè)計(jì)專家說(shuō):“鍵,到處都是鍵,除了鍵之外,什么 也沒有”,這就是他的數(shù)據(jù)庫(kù)設(shè)計(jì)經(jīng)驗(yàn)之談,也反映了他對(duì)信息系統(tǒng)核心(數(shù)據(jù)模型)的高度抽象思想。因?yàn)椋褐麈I是實(shí)體的高度抽象,主鍵與外鍵的配對(duì),表示實(shí)體之間的連接。</p><p> 另外主鍵是確定數(shù)據(jù)庫(kù)中的表的記錄的唯一標(biāo)識(shí)字段,可以是表中的一個(gè)字段,也可以是表中的多個(gè)字段組成的
79、。一旦確定為主鍵,則該字段不可為空也不可以重復(fù)。比如學(xué)生表中的學(xué)號(hào)就可以定義成該表的字段。</p><p> 外鍵的定義是相對(duì)于主鍵而言的,比如另有一張成績(jī)表,表中也出現(xiàn)了學(xué)生表中的對(duì)應(yīng)學(xué)號(hào)字段,則相對(duì)于學(xué)生表,學(xué)號(hào)就是成績(jī)表的外鍵。</p><p> 在給定的系統(tǒng)硬件和系統(tǒng)軟件條件下,提高數(shù)據(jù)庫(kù)系統(tǒng)的運(yùn)行效率的辦法是:</p><p> (1) 在數(shù)據(jù)庫(kù)物理
80、設(shè)計(jì)時(shí),降低范式,增加冗余, 少用觸發(fā)器, 多用存儲(chǔ)過程。</p><p> (2) 當(dāng)計(jì)算非常復(fù)雜、而且記錄條數(shù)非常巨大時(shí)(例如一千萬(wàn)條),復(fù)雜計(jì)算要先在數(shù)據(jù)庫(kù)外面,以文件系統(tǒng)方式用C++語(yǔ)言計(jì)算處理完成之后,最后才入庫(kù)追加到表中去。這是電信計(jì)費(fèi)系統(tǒng)設(shè)計(jì)的經(jīng)驗(yàn)。</p><p> (3) 發(fā)現(xiàn)某個(gè)表的記錄太多,例如超過一千萬(wàn)條,則要對(duì)該表進(jìn)行水平分割。水平分割的做法是,以該表主鍵PK
81、的某個(gè)值為界線,將該表的記錄水平分割為兩個(gè)表。若發(fā)現(xiàn)某個(gè)表的字段太多,例如超過八十個(gè),則垂直分割該表,將原來(lái)的一個(gè)表分解為兩個(gè)表。</p><p> (4) 對(duì)數(shù)據(jù)庫(kù)管理系統(tǒng)DBMS進(jìn)行系統(tǒng)優(yōu)化,即優(yōu)化各種系統(tǒng)參數(shù),如緩沖區(qū)個(gè)數(shù)。</p><p> (5) 在使用面向數(shù)據(jù)的SQL語(yǔ)言進(jìn)行程序設(shè)計(jì)時(shí),盡量采取優(yōu)化算法。</p><p> 總之,要提高數(shù)據(jù)庫(kù)的運(yùn)行
82、效率,必須從數(shù)據(jù)庫(kù)系統(tǒng)級(jí)優(yōu)化、數(shù)據(jù)庫(kù)設(shè)計(jì)級(jí)優(yōu)化、程序?qū)崿F(xiàn)級(jí)優(yōu)化,這三個(gè)層次上同時(shí)下功夫。</p><p><b> 附錄</b></p><p> ------------------ 1、創(chuàng) 建 數(shù) 據(jù) 庫(kù) ------------------</p><p> create database 圖書管理系統(tǒng)</p>
83、<p><b> on</b></p><p> ( name=library_dat,</p><p> filename='d:\zym\library.mdf',</p><p> size=10mb,</p><p> maxsize=50mb,</p>&l
84、t;p> filegrowth=5mb)</p><p><b> log on</b></p><p> (name=library_log,</p><p> filename='d:\zym\library.ldf',</p><p><b> size=5mb,</
85、b></p><p> maxsize=50mb,</p><p> filegrowth=5mb)</p><p> ------------------- 2、創(chuàng) 建 表 ---------------------</p><p> --(1)圖書分類表</p><p> create
86、 table 管理員</p><p> ( 管理員編號(hào) char(3) primary key not null,</p><p> 管理員名 varchar(10) not null,</p><p> 管理員級(jí)別 char(2) not null)</p><p> create table 藏書室</p><
87、p> (藏書室編號(hào) char(3) primary key not null,</p><p> 藏書室名稱 varchar(30) unique not null,</p><p> 管理員編號(hào) char(3) foreign key references 管理員(管理員編號(hào)) not null)</p><p> create table 圖書類別
88、</p><p> (類型編號(hào) char(8) primary key,</p><p> 類型名稱 varchar(40) not null,</p><p> 藏書室編號(hào) char(3)foreign key references 藏書室(藏書室編號(hào)) not null)</p><p> --(2)圖書信息表</p>
89、<p> create table 圖書信息表</p><p> (圖書編號(hào) char(8) primary key not null,</p><p> 圖書名稱 varchar(30) not null,</p><p> 作者 varchar(30) not null,</p><p> 單價(jià) smallmone
90、y check(單價(jià)>0) not null,</p><p> 類型編號(hào) char(8) foreign key references 圖書類別(類型編號(hào)),</p><p> 借出狀態(tài) char(8) not null default '在館',</p><p> 出版社 varchar(40) not null,</p>
91、<p> 出版日期 char(20) not null)</p><p> create table 用戶信息表</p><p> (用戶號(hào) char(8) primary key,</p><p> 用戶名 varchar(40) not null,</p><p> 有效證件類型 varchar(40) not n
92、ull,</p><p> 罰款總金額 smallint default 0,</p><p> 借書數(shù)量 int check((借書數(shù)量>=0) and (借書數(shù)量<=4)) default 0)</p><p> --(4)借書信息表</p><p> create table 借書信息表</p><
93、;p> (用戶號(hào) char(8) foreign key references 用戶信息表(用戶號(hào)),</p><p> 圖書編號(hào) char(8)foreign key references 圖書信息表(圖書編號(hào)), </p><p> 是否續(xù)借 char(10) not null,</p><p> 借書日期 char(20) default get
94、date(),</p><p> primary key(圖書編號(hào),用戶號(hào)))</p><p> --(5)還書信息表</p><p> create table 還書統(tǒng)計(jì)表</p><p> (用戶號(hào) char(8) foreign key references 用戶信息表(用戶號(hào)) not null,</p><
95、;p> 圖書編號(hào) char(8) foreign key references 圖書信息表(圖書編號(hào))not null,</p><p> 還書日期 char(20) not null,</p><p> primary key(用戶號(hào),圖書編號(hào),還書日期)) </p><p> --(6)罰款信息表</p><p> cre
96、ate table 罰款信息表</p><p> (用戶號(hào) char(8) foreign key references 用戶信息表(用戶號(hào)),</p><p> 圖書編號(hào) char(8)foreign key references 圖書信息表(圖書編號(hào)), </p><p> 罰款日期 char(20) default getdate(),</p&g
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)---圖書管理信息系統(tǒng)
- 圖書管理信息系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)---圖書館圖書借閱管理信息系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)---圖書管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)
- 數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)---圖書管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--圖書管理系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告---圖書管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告----圖書管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告---圖書管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告---圖書管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告--圖書管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告-圖書管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告-------圖書管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告--圖書管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--- 圖書管理系統(tǒng)
- 圖書管理系統(tǒng)—數(shù)據(jù)庫(kù)課程設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)-圖書管理系統(tǒng)
- 圖書管理系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--圖書管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)---圖書管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論