国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

這篇具有很好參考價(jià)值的文章主要介紹了數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

統(tǒng)

——數(shù)據(jù)庫(kù)實(shí)踐課程設(shè)計(jì)實(shí)驗(yàn)

注:圖為word插入自帶的,表格為excel表格先制作后復(fù)制粘貼到word的,代碼為高亮處理后的代碼塊

目錄

第一章 ?設(shè)計(jì)背景與需求分析

1.1 ?設(shè)計(jì)需求

1.2 ?設(shè)計(jì)背景

1.2.1 ?圖書管理的現(xiàn)狀??

1.2.2 ?選題的目的、意義 ??

1.3 系統(tǒng)開發(fā)環(huán)境

第二章 ?數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)

2.1 ?實(shí)體型結(jié)構(gòu)

2.1.1 ?實(shí)體確定與分析

2.1.2 ?實(shí)體屬性圖

2.2 ?實(shí)體間的聯(lián)系

2.2.1 ?實(shí)際條件(題設(shè)條件已經(jīng)省略)

2.2.2 ?聯(lián)系

第三章 ?數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)

3.1 ?E-R圖向關(guān)系模式轉(zhuǎn)換的原則

3.2 ?E-R圖向關(guān)系模型的轉(zhuǎn)化與關(guān)系模型的優(yōu)化

3.2.1 ?模型優(yōu)化概念

3.2.2 ?優(yōu)化方法

3.2.3 ?模型優(yōu)化后的關(guān)系模式圖

3.3 ?視圖結(jié)構(gòu)

3.3.1 ?設(shè)計(jì)需求(1)視圖

3.3.2 ?設(shè)計(jì)需求(2)視圖

3.3.3 ?設(shè)計(jì)需求(3)視圖

3.3.4 ?借閱次數(shù)前五的書視圖

3.3.5 ?管理員操作記錄視圖

第四章 ?數(shù)據(jù)庫(kù)物理結(jié)構(gòu)設(shè)計(jì)

4.1 ?索引的設(shè)計(jì)原則

4.2 ?索引與視圖的關(guān)系

4.3 ?索引結(jié)構(gòu)設(shè)計(jì)

第五章 ?數(shù)據(jù)庫(kù)實(shí)施

5.1 ?建表語(yǔ)句

5.1.1 ?出版社表

5.1.2 ?管理員表

5.1.3 ?讀者表

5.1.4 ?書庫(kù)表

5.1.5 ?書表

5.1.6 ?借閱表

5.1.7 ?存取表

5.2 ?建視圖語(yǔ)句

5.2.1 ?視圖1

5.2.2 ?視圖2

5.2.3 ?視圖3

5.2.4 ?借閱次數(shù)前五的書視圖

5.2.5 ?管理員操作記錄視圖

5.3 ?索引

5.4 ?觸發(fā)器

5.4.1 ?觸發(fā)器——入庫(kù)

5.4.2 ?觸發(fā)器——借閱數(shù)據(jù)保護(hù)

5.4.3 ?觸發(fā)器——借書

5.4.4 ?觸發(fā)器——還款

5.4.5 ?觸發(fā)器——還書

5.4.6 ?觸發(fā)器——續(xù)借管理

第六章 ?測(cè)試數(shù)據(jù)

6.1 ?完整的測(cè)試數(shù)據(jù)

6.1.1 ?出版社

6.1.2 ?管理員

6.1.3 ?讀者

6.1.4 ?書庫(kù)

6.1.5 ?書

6.2 ?觸發(fā)器測(cè)試

6.2.1 ?觸發(fā)器——入庫(kù)測(cè)試

6.2.2 ?觸發(fā)器——借閱數(shù)據(jù)保護(hù)

6.2.3 ?觸發(fā)器——借書測(cè)試

6.2.4 ?觸發(fā)器——還款測(cè)試

6.2.5 ?觸發(fā)器——還書測(cè)試

6.2.6 ?觸發(fā)器——續(xù)借管理測(cè)試

6.3 ?測(cè)試視圖

6.3.1 ?視圖1測(cè)試

6.3.2 ?視圖2測(cè)試

6.3.3 ?視圖3測(cè)試

6.3.4 ?借閱次數(shù)前五的書測(cè)試

6.3.5 ?管理員操作記錄測(cè)試

6.4 ?數(shù)據(jù)庫(kù)操作管理

第七章 ?設(shè)計(jì)總結(jié)

7.1??遇到的主要問題和解決方法

7.2 ?進(jìn)一步改進(jìn)的設(shè)想

7.3 ?課程設(shè)計(jì)體會(huì)

7.4 ?學(xué)習(xí)數(shù)據(jù)庫(kù)系統(tǒng)原理后的體會(huì)

第一章 ?設(shè)計(jì)背景與需求分析

1.1 ?設(shè)計(jì)需求

(1)可隨時(shí)查詢書庫(kù)中現(xiàn)有書籍的品種、數(shù)量與存放位置。所有各類書籍均可由書號(hào)惟一標(biāo)識(shí)。

(2)可隨時(shí)查詢書籍借還情況,包括借書人單位、姓名、借書證號(hào)、借書日期和還書日期。

我們約定:任何人可借多種書,任何一種書可為多個(gè)人所借,借書證號(hào)具有惟一性。

(3)當(dāng)需要時(shí),可通過數(shù)據(jù)庫(kù)中保存的出版社的電報(bào)編號(hào)、電話、郵編及地址等信息向相應(yīng)出版社增購(gòu)有關(guān)書籍。我們約定,一個(gè)出版社可出版多種書籍,同一本書僅為一個(gè)出版社出版,出版社名具有惟一性

1.2 ?設(shè)計(jì)背景

1.2.1 ?圖書管理的現(xiàn)狀??

圖書館作為一種資源的集散地,圖書和用戶在借閱資料繁多,包含很多的信息管理,現(xiàn)在有很多的圖書館都是初步的開始使用,甚至尚未使用計(jì)算機(jī)進(jìn)行資源管理,沒有建立相對(duì)應(yīng)的圖書管理數(shù)據(jù)系統(tǒng),而是使用人工計(jì)算,抄寫進(jìn)行,數(shù)據(jù)處理工作量大,容易出錯(cuò)和數(shù)據(jù)丟失。

1.2.2 ?選題的目的、意義 ??

圖書管理系統(tǒng)數(shù)據(jù)庫(kù)有著手工管理無(wú)法比擬的優(yōu)點(diǎn),如檢索迅速、查找方便、可靠性高、存儲(chǔ)量大、保密性好,成本低等等。這些優(yōu)點(diǎn)能極大提高圖書管理的效率,因此,開發(fā)一套能夠?yàn)橛脩籼峁┏渥愕男畔⒑涂旖莸牟樵兪侄蔚膱D書管理系統(tǒng)是十分必要的。

1.3 系統(tǒng)開發(fā)環(huán)境

1、系統(tǒng):Windows10

2、開發(fā)平臺(tái):Microsoft SQL Server 2019

第二章 ?數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)

2.1 ?實(shí)體型結(jié)構(gòu)

2.1.1 ?實(shí)體確定與分析

我們對(duì)題目進(jìn)行了一段時(shí)間的分析,并在討論后得出,此系統(tǒng)應(yīng)該具備以下實(shí)體及屬性。

實(shí)體與其屬性對(duì)應(yīng)如下:

讀者:借書證號(hào)、姓名、性別、年齡、借書人單位

:書號(hào)、書名、標(biāo)價(jià)(損壞或丟失書籍時(shí)的賠償價(jià)格)、作者、借閱次數(shù)

出版社:電報(bào)編號(hào)、出版社名字、地址、郵編、電話

書庫(kù)書庫(kù)號(hào)、書籍的品種(即書庫(kù)的分類大區(qū)

管理員:管理員編號(hào)、姓名、性別

2.1.2 ?實(shí)體屬性圖

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

讀者實(shí)體型

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

書實(shí)體型

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

出版社實(shí)體型

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

書庫(kù)實(shí)體型

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

管理員實(shí)體型

2.2 ?實(shí)體間的聯(lián)系

2.2.1 ?實(shí)際條件(題設(shè)條件已經(jīng)省略)

我們假定:

一個(gè)管理員只管一個(gè)書庫(kù);每個(gè)書庫(kù)位置分開,且讀者借閱書籍時(shí)只能在書籍所屬的書庫(kù)登記;一個(gè)讀者一次只能借閱一本書,即要?dú)w還前一本書才能借后一本書;一般入庫(kù)書籍是5本,特殊情況更新存取表;

2.2.2 ?聯(lián)系

1.一個(gè)出版社對(duì)應(yīng)多本書,一個(gè)本書對(duì)應(yīng)一個(gè)出版社,出版社和書是一對(duì)多聯(lián)系。


2.讀者、管理員和書三者之間是多對(duì)多的關(guān)系,即一個(gè)讀者對(duì)應(yīng)多本書,一個(gè)管理員對(duì)應(yīng)不同書的讀者,一本書對(duì)應(yīng)多個(gè)讀者。

3.一個(gè)書庫(kù)對(duì)應(yīng)多本書,一本書對(duì)應(yīng)一個(gè)書庫(kù),書庫(kù)和書之間是一對(duì)多聯(lián)系。

4.一個(gè)管理員對(duì)應(yīng)一個(gè)書庫(kù),一個(gè)書庫(kù)對(duì)應(yīng)一個(gè)管理員,管理員和書庫(kù)之間是一對(duì)一聯(lián)系。

2.3 ?E-R圖

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

第三章 ?數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)

3.1 ?E-R圖向關(guān)系模式轉(zhuǎn)換的原則

1. 一個(gè)實(shí)體型轉(zhuǎn)換為一個(gè)關(guān)系模式。

關(guān)系的屬性:實(shí)體型的屬性

關(guān)系的碼:實(shí)體型的碼

2.一個(gè)1:1聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與任何一端對(duì)應(yīng)的關(guān)系模式合并。

3.一個(gè)1:n聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與n端對(duì)應(yīng)的關(guān)系模式 合并。

4.一個(gè)m:n聯(lián)系轉(zhuǎn)換為一個(gè)關(guān)系模式。

5.三個(gè)或三個(gè)以上實(shí)體間的一個(gè)多元聯(lián)系可以轉(zhuǎn)換為一個(gè)關(guān)系模式。

6.具有相同碼的關(guān)系模式可合并。

目的:減少系統(tǒng)中關(guān)系個(gè)數(shù)

7.同一實(shí)體集的實(shí)體之間的聯(lián)系即自聯(lián)系,也可以按1:1,1:n和m:n三種情況分別處理。

3.2 ?E-R圖向關(guān)系模型的轉(zhuǎn)化與關(guān)系模型的優(yōu)化

3.2.1 ?模型優(yōu)化概念

數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)的結(jié)果不是唯一的。為了進(jìn)一步提高數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的性能,還應(yīng)該根據(jù)應(yīng)用需要適當(dāng)?shù)匦薷?、調(diào)整數(shù)據(jù)模型的結(jié)構(gòu),這就是數(shù)據(jù)模型的優(yōu)化。

3.2.2 ?優(yōu)化方法

1.確定數(shù)據(jù)依賴。


2.對(duì)于各個(gè)關(guān)系模式之間的數(shù)據(jù)依賴進(jìn)行極小化處理,消除冗余的聯(lián)系。

3.按照數(shù)據(jù)依賴的理論對(duì)關(guān)系模式逐一進(jìn)行分析,考察是否存在部分函數(shù)依賴、傳遞函數(shù)依賴、多值依賴等,確定各關(guān)系模式分別屬于第幾范式。


4.根據(jù)需求分析階段得到的處理要求分析對(duì)于這樣的應(yīng)用環(huán)境這些模式是否合適,確定是否要對(duì)某些模式進(jìn)行合并或分解。


5.對(duì)關(guān)系模式進(jìn)行必要分解,提高數(shù)據(jù)操作效率和存儲(chǔ)空間利用率。常用的兩種分解方法是水平分解和垂直分解。

3.2.3 ?模型優(yōu)化后的關(guān)系模式圖

3.2.3.1 ?出版社實(shí)體所對(duì)應(yīng)的關(guān)系模式

列名(出版社)

數(shù)據(jù)類型

長(zhǎng)度

主鍵

非空

備注

電報(bào)編號(hào)

char

10

Yes

Yes

出版社名稱

varchar

20

Yes

地址

varchar

20

Yes

電話

char

20

Yes

郵編

char

20

Yes

3.2.3.2 ?管理員實(shí)體所對(duì)應(yīng)的關(guān)系模式

列名(管理員)

數(shù)據(jù)類型

長(zhǎng)度

主鍵

非空

備注

管理員編號(hào)

int

<=2

Yes

Yes

姓名

char

10

Yes

性別

char

2

3.2.3.3 ?讀者實(shí)體所對(duì)應(yīng)的關(guān)系模式

列名(讀者)

數(shù)據(jù)類型

長(zhǎng)度

主鍵

非空

備注

借書證號(hào)

int

6

Yes

Yes

姓名

char

10

Yes

性別

char

2

年齡

int

<=3

借書人單位

varchar

20

3.2.3.4 ?書實(shí)體所對(duì)應(yīng)的關(guān)系模式

列名(書)

數(shù)據(jù)類型

長(zhǎng)度

主鍵

非空

備注

書號(hào)

int

Yes

Yes

書名

char

20

Yes

標(biāo)價(jià)

numeric(6,2)

6

Yes

作者

varchar

10

Yes

電報(bào)編號(hào)

char

10

Yes

外鍵,參照出版社表出版社編號(hào)

管理員編號(hào)

int

<=2

Yes

外鍵,參照管理員表的管理員編號(hào)

借閱次數(shù)

int

Yes

3.2.3.5 ?借閱關(guān)系所對(duì)應(yīng)的關(guān)系模式

列名(借閱)

數(shù)據(jù)類型

長(zhǎng)度

主鍵

非空

備注

借書證號(hào)

int

6

Yes

Yes

外鍵,讀者表的借書證號(hào)

書號(hào)

int

Yes

Yes

外鍵,參照書表的書號(hào)

管理員編號(hào)

int

<=2

Yes

Yes

外鍵,參照管理員表的管理員編號(hào)

借書日期

datetime

Yes

還書日期

datetime

Yes

違規(guī)罰款

numeric(6,2)

6

Yes

續(xù)借

int

1

Yes

是否還款

char

2

Yes

是否還書

char

2

Yes

3.2.3.6 ?書庫(kù)實(shí)體所對(duì)應(yīng)的關(guān)系模式

列名(書庫(kù))

數(shù)據(jù)類型

長(zhǎng)度

主鍵

非空

備注

書庫(kù)號(hào)

int

<=2

Yes

Yes

書籍品種

char

20

Yes

管理員編號(hào)

int

<=2

Yes

外鍵,參照管理員表的管理員編號(hào)

3.2.3.7 ?存取關(guān)系所對(duì)應(yīng)的關(guān)系模式

列名(存?。?/span>

數(shù)據(jù)類型

長(zhǎng)度

主鍵

非空

備注

書號(hào)

int

Yes

Yes

外鍵,參照書表的書號(hào)

存取位置

int

<=2

Yes

Yes

外鍵,參照書庫(kù)表的書庫(kù)號(hào)

存取數(shù)量

int

Yes

可借數(shù)量

int

Yes

3.3 ?視圖結(jié)構(gòu)

3.3.1 ?設(shè)計(jì)需求(1)視圖

列名

來(lái)源表

書庫(kù)號(hào)

書庫(kù)表

書籍品種

書庫(kù)表

存取位置

存取表

數(shù)量

存取表(每個(gè)書庫(kù)各書數(shù)量之和)

3.3.2 ?設(shè)計(jì)需求(2)視圖

列名

來(lái)源表

借書日期

借閱表

姓名

讀者表

借書證號(hào)

借閱表

借書人單位

讀者表

還書日期

借閱表

3.3.3 ?設(shè)計(jì)需求(3)視圖

列名

來(lái)源表

編號(hào)

出版社表

電話

出版社表

郵編

出版社表

地址

出版社表

3.3.4 ?借閱次數(shù)前五的書視圖

列名

來(lái)源表

書號(hào)

書表

書名

書表

借閱次數(shù)

書表

3.3.5 ?管理員操作記錄視圖

列名

來(lái)源表

借書證號(hào)

借閱表

姓名

讀者表

借書日期

借閱表

還書日期

借閱表

是否還書

借閱表

本次操作人編號(hào)

借閱表

第四章 ?數(shù)據(jù)庫(kù)物理結(jié)構(gòu)設(shè)計(jì)

4.1 ?索引的設(shè)計(jì)原則

(1)如果一個(gè)(或一組)屬性經(jīng)常在查詢條件中出現(xiàn),則考慮早這個(gè)(或這組)屬性建立索引。

(2)如果一個(gè)屬性經(jīng)常作為最大值和最小值等聚集函數(shù)的參數(shù),則考慮這個(gè)屬性上建立索引。

(3)如果一個(gè)(或一組)屬性經(jīng)常在連接操作的連接條件中出現(xiàn),則考慮在這個(gè)(或這組)屬性上建立索引。

4.2 ?索引與視圖的關(guān)系

視圖是通過索引查詢表而的出結(jié)果的,表建立了索引,查詢速度會(huì)提高

索引:在關(guān)系數(shù)據(jù)庫(kù)中,索引是一種單獨(dú)的、物理的對(duì)數(shù)據(jù)庫(kù)表中一列或多列的值進(jìn)行排序的一種存儲(chǔ)結(jié)構(gòu),它是某個(gè)表中一列或若干列值的集合和相應(yīng)的指向表中物理標(biāo)識(shí)這些值的數(shù)據(jù)頁(yè)的邏輯指針清單。

視圖:數(shù)據(jù)庫(kù)中的視圖,是一個(gè)虛擬表,其內(nèi)容由查詢定義。

4.3 ?索引結(jié)構(gòu)設(shè)計(jì)

表名

??索引名

?索引列

?書號(hào)索引

書號(hào)

?書名索引

書名

?借閱次數(shù)索引

借閱次數(shù)

讀者

??姓名索引

姓名

讀者

借書人單位索引

借書人單位

書庫(kù)

書庫(kù)號(hào)索引

書庫(kù)號(hào)

書庫(kù)

書籍品種索引

書籍品種

出版社

電報(bào)編號(hào)索引

電報(bào)編號(hào)

出版社

電話索引

電話

出版社

郵編索引

郵編

出版社

地址索引

地址

存取

存取位置索引

存取位置

存取

存取數(shù)量索引

存取數(shù)量

借閱

借書證號(hào)索引

借書證號(hào)

借閱

書號(hào)索引

書號(hào)

借閱

管理員編號(hào)索引

管理員編號(hào)

借閱

借書日期索引

借書日期

借閱

還書日期索引

還書日期

借閱

違規(guī)罰款索引

違規(guī)罰款

借閱

續(xù)借索引

續(xù)借

借閱

是否還款索引

是否還款

第五章 ?數(shù)據(jù)庫(kù)實(shí)施

5.1 ?建表語(yǔ)句

5.1.1 ?出版社表

--出版社表-1??
create?table?出版社(??
????電報(bào)編號(hào)?char(10)?primary?key,--主鍵??
????出版社名稱?varchar(20)?not?null,??
????地址?varchar(20)?not?null,??
????電話?char(20)?not?null?unique,??
????郵編?char(20)?not?null??
)??
go??
--調(diào)試(記錄會(huì)在正式測(cè)試時(shí)清除)??
insert?into?出版社(電報(bào)編號(hào),出版社名稱,地址,電話,郵編)?values('000','測(cè)試','養(yǎng)根樓','173821068830','417000')??
select?*?from?出版社

5.1.2 ?管理員表

--管理員表-2??
create?table?管理員(
--管理員離職更新名字、性別即可??
????管理員編號(hào)?int?identity(1,1)?check(len(管理員編號(hào))<=2)?primary?key,
--主鍵;管理員編號(hào)初始值為1,遞加也為1??
????姓名?char(10)?not?null,??
????性別?char(2)?check?(性別?in?('男','女'))??
)??
go??
--調(diào)試(記錄會(huì)在正式測(cè)試時(shí)清除)??
insert?into?管理員(姓名,性別)?values('劉志強(qiáng)','男')??
delete?from?管理員?where?管理員編號(hào)=1??
select?*?from?管理員

5.1.3 ?讀者表

--讀者表-3??
create?table?讀者(??
????借書證號(hào)?int?identity(220000,1)?check(len(借書證號(hào))<230000)?primary?key,--主鍵;借書證號(hào)初始值為220000,遞加也為1??
????姓名?char(10)?not?null,--220000前兩位為年份可自己修改??
????性別?char(2)?check?(性別?in?('男','女')),??
????年齡?int?check?(len(年齡)<=3),??
????借書人單位?varchar(20),??
)??
go??
--調(diào)試(記錄會(huì)在正式測(cè)試時(shí)清除)??
insert?into?讀者(姓名,性別,年齡,借書人單位)?values('劉志強(qiáng)','男',21,'湖南人文科技學(xué)院')??
delete?from?讀者?where?借書證號(hào)=220001??
select?*?from?讀者

5.1.4 ?書庫(kù)表

--書庫(kù)表-4??
create?table?書庫(kù)(??
????書庫(kù)號(hào)?int?check(len(書庫(kù)號(hào))<=2)?primary?key,--主鍵??
????書籍品種?char(20)unique?not?null,??
????管理員編號(hào)?int?not?null,--外鍵--保證一個(gè)管理員管一個(gè)書庫(kù)??
????check(書庫(kù)號(hào)=管理員編號(hào)),--保證一個(gè)管理員管一個(gè)書庫(kù)??
????foreign?key(管理員編號(hào))?references?管理員(管理員編號(hào))??
)??
go??
--調(diào)試(記錄會(huì)在正式測(cè)試時(shí)清除)??
insert?into?書庫(kù)(書庫(kù)號(hào),書籍品種,管理員編號(hào))?values(1,'sdd54ss',1)??
delete?from?書庫(kù)?where?書庫(kù)號(hào)=6??
select?*?from?書庫(kù)?

5.1.5 ?書表

--書表-5?
create?table?書(??
????書號(hào)?int?identity(1,1)?primary?key,
--主鍵;書號(hào)初始值為1,遞加也為1??
????書名?char(20)?not?null,??
????標(biāo)價(jià)?numeric(6,2)?not?null,??
????作者?varchar(10)?not?null,??
????電報(bào)編號(hào)?char(10)?not?null,--外鍵??
????管理員編號(hào)?int,--外鍵??
????借閱次數(shù)?int?default?0,--初始值默認(rèn)為0??
????foreign?key(電報(bào)編號(hào))?references?出版社(電報(bào)編號(hào)),??
????foreign?key(管理員編號(hào))?references?管理員(管理員編號(hào))??
)??
go??
--調(diào)試(記錄會(huì)在正式測(cè)試時(shí)清除)??
insert?into?書(書名,標(biāo)價(jià),作者,電報(bào)編號(hào),管理員編號(hào))?values('數(shù)據(jù)庫(kù)',99.99,'xxx','000',1)??
delete?from?書?where?書號(hào)=1??
select?*?from?書

5.1.6 ?借閱表

--借閱表-6??
create?table?借閱(??
????借書證號(hào)?int,--主屬性、外鍵??
????書號(hào)?int,--主屬性、外鍵??
????管理員編號(hào)?int,??
????借書日期?datetime?default?getdate(),
--主屬性;借書日期為系統(tǒng)時(shí)間??
????還書日期?datetime?default?dateadd(day,7,getdate()),
--第一次借書還書日期為七天后,可提前還書??
????違規(guī)罰款?numeric(6,2)?default?0,
--罰款金額長(zhǎng)度為6,精度為2,默認(rèn)數(shù)值為0??
????續(xù)借?int?default?0?check?(續(xù)借<=4),
--每次續(xù)借可多借7天,最多續(xù)借4次,默認(rèn)0次??
????是否還款?char(2)?default?'是'?check?(是否還款?in?('是','否')),
--借書時(shí)默認(rèn)為'是'??
????是否還書?char(2)?default?'否'?check?(是否還書?in?('是','否')),
--借書時(shí)默認(rèn)填否,還書時(shí)改回來(lái)??
????check(還書日期>=借書日期),--保證還書日期小于借書日期??
????primary?key(借書證號(hào),書號(hào),借書日期),??
????foreign?key(借書證號(hào))?references?讀者(借書證號(hào))on?delete?cascade?on?update?cascade,--級(jí)聯(lián)刪除、更新??
????foreign?key(書號(hào))?references?書(書號(hào))on?delete?cascade?on?update?cascade,--級(jí)聯(lián)刪除、更新??
????foreign?key(管理員編號(hào))?references?管理員(管理員編號(hào))??
)??
go??
--調(diào)試(記錄會(huì)在正式測(cè)試時(shí)清除)??
insert?into?借閱(借書證號(hào),書號(hào),管理員編號(hào))?values(220000,6,1)??
update?借閱??
set?是否還款='是'??
where?借書證號(hào)=220000??
select?*?from?借閱??
update?借閱??
set?是否還書='是'??
where?借書證號(hào)=220000?and?書號(hào)=6??
update?借閱??
set?續(xù)借=1??
where?借書證號(hào)=220002?and?書號(hào)=4?

5.1.7 ?存取表

--存取表-7??
create?table?存取(??
????書號(hào)?int,--主屬性、外鍵??
????存取位置?int,--主屬性、外鍵??
????存取數(shù)量?int?default?5?not?null,--本系統(tǒng)一般存5本書,非5時(shí)可修改??
????可借數(shù)量?int?default?5?check?(可借數(shù)量>=0)?not?null,??
????check?(可借數(shù)量<=存取數(shù)量),--0<=可借數(shù)量<=存取數(shù)量??限制可借數(shù)量在合理范圍內(nèi)??
????primary?key(書號(hào),存取位置),??
????foreign?key(存取位置)?references?書庫(kù)(書庫(kù)號(hào)),??
????foreign?key(書號(hào))?references?書(書號(hào))on?delete?cascade?on?update?cascade,--級(jí)聯(lián)刪除、更新??
)??
go??
--調(diào)試(記錄會(huì)在正式測(cè)試時(shí)清除)??
insert?into?存取(書號(hào),存取位置)?values(2,1)??
select?*?from?存取

5.2 ?建視圖語(yǔ)句

5.2.1 ?視圖1

--視圖1??
create?view?視圖1(書庫(kù)號(hào),書籍品種,存取位置,數(shù)量)??
as??
select?書庫(kù)號(hào),書籍品種,存取位置,sum(存取數(shù)量)??
from?書庫(kù),存取??
where?存取位置=書庫(kù)號(hào)??
group?by?書庫(kù)號(hào),書籍品種,存取位置??
go??
--配套查詢語(yǔ)句??
select?*?from?視圖1??

5.2.2 ?視圖2

--視圖2??
create?view?視圖2(借書日期,姓名,借書證號(hào),借書人單位,還書日期)??
as??
select?借書日期,姓名,借閱.借書證號(hào),借書人單位,還書日期??
from?借閱?left?outer?join?讀者?on(借閱.借書證號(hào)=讀者.借書證號(hào))??
go??
--配套查詢語(yǔ)句??
select?*?from?視圖2?order?by?借書日期?desc??

5.2.3 ?視圖3

--視圖3??
create?view?視圖3(編號(hào),電話,郵編,地址)??
as??
select?電報(bào)編號(hào),電話,郵編,地址??
from?出版社??
go??
--配套查詢語(yǔ)句??
select?*?from?視圖3?

5.2.4 ?借閱次數(shù)前五的書視圖??

--借閱次數(shù)前五的書視圖??
create?view?借閱次數(shù)前五的書(書號(hào),書名,借閱次數(shù))??
as??
select?top(5)?書號(hào),書名,借閱次數(shù)??
from?書??
where?借閱次數(shù)>0??
order?by?借閱次數(shù)?desc??
go??
--配套查詢語(yǔ)句??
select?*?from?借閱次數(shù)前五的書??

5.2.5 ?管理員操作記錄視圖

--管理員操作記錄視圖??
create?view?管理員操作記錄(借書證號(hào),姓名,借書日期,還書日期,是否還書,本次操作人編號(hào))??
as??
select?借閱.借書證號(hào),讀者.姓名,借閱.借書日期,借閱.還書日期,借閱.是否還書,借閱.管理員編號(hào)??
from?借閱?left?outer?join?讀者?on(借閱.借書證號(hào)=讀者.借書證號(hào))??
go??
--配套查詢語(yǔ)句??
select?*?from?管理員操作記錄?order?by?借書日期?desc??

5.3 ?索引

--索引??
--drop?index?借閱次數(shù)索引?on?書;??
create?index?書號(hào)索引?on?書(書號(hào));??
create?index?書名索引?on?書(書名);??
create?index?借閱次數(shù)索引?on?書(借閱次數(shù));??
create?index?姓名索引?on?讀者(姓名);??
create?index?借書人單位索引?on?讀者(借書人單位);??
??
create?index?書庫(kù)號(hào)索引?on?書庫(kù)(書庫(kù)號(hào));??
create?index?書籍品種索引?on?書庫(kù)(書籍品種);??
??
create?index?電報(bào)編號(hào)索引?on?出版社(電報(bào)編號(hào));??
create?index?電話索引?on?出版社(電話);??
create?index?郵編索引?on?出版社(郵編);??
create?index?地址索引?on?出版社(地址);??
??
create?index?存取位置索引?on?存取(存取位置);??
create?index?存取數(shù)量索引?on?存取(存取數(shù)量);??
??
create?index?借書證號(hào)索引?on?借閱(借書證號(hào));??
create?index?書號(hào)索引?on?借閱(書號(hào));??
create?index?管理員編號(hào)索引?on?借閱(管理員編號(hào));??
create?index?借書日期索引?on?借閱(借書日期);??
create?index?還書日期索引?on?借閱(還書日期);??
create?index?違規(guī)罰款索引?on?借閱(違規(guī)罰款);??
create?index?續(xù)借索引?on?借閱(續(xù)借);??
create?index?是否還款索引?on?借閱(是否還款);??

5.4 ?觸發(fā)器

5.4.1 ?觸發(fā)器——入庫(kù)

--入庫(kù)---1??
--當(dāng)入庫(kù)新書時(shí),書表改變,存取表也需要添加數(shù)據(jù)??
create?trigger?入庫(kù)?on?書???
for?insert?as????
????declare?@新書書號(hào)?int,@新書分管人?int??
????select?@新書書號(hào)=書號(hào),@新書分管人=管理員編號(hào)?from?inserted???
begin??
????insert?into?存取(書號(hào),存取位置)?values(@新書書號(hào),@新書分管人)--管理員號(hào)和存取位置是一致的,因?yàn)橐粋€(gè)管理員管一個(gè)書庫(kù)??
end???

5.4.2 ?觸發(fā)器——借閱數(shù)據(jù)保護(hù)

--借閱數(shù)據(jù)保護(hù)---2??
create?trigger?借閱數(shù)據(jù)保護(hù)?on?借閱?--借閱表不允許delete操作??
for?delete?as????
????raiserror('借閱表數(shù)據(jù)不允許刪除!',16,1)??
????rollback

5.4.3 ?觸發(fā)器——借書

--借書---3??
--insert?into?借閱(借書證號(hào),書號(hào),管理員編號(hào))?values(220000,1,1)??
create?trigger?借書?on?借閱???
for?insert?as??--筆記:在觸發(fā)器執(zhí)行時(shí),觸發(fā)器所對(duì)的被操作表??等于??之前操作的所有數(shù)據(jù)加剛剛操作的數(shù)據(jù)??
????declare?@未還書數(shù)量?int,@借書證號(hào)?int,@所借書號(hào)?int,@此次借書日期?datetime??
begin??
????select?@借書證號(hào)=借書證號(hào),@所借書號(hào)=書號(hào),@此次借書日期=借書日期?from?inserted??
????select?@未還書數(shù)量=count(是否還書)?from?借閱?where?借書證號(hào)=@借書證號(hào)?and?是否還書='否'??
end??
if?'否'?in?(select?是否還款?from?借閱?where?借書證號(hào)=@借書證號(hào))--欠款未交??
begin??
????raiserror('請(qǐng)先交齊罰款!',16,1)??
????rollback??
end??
else?if?@所借書號(hào)?in?(select?書號(hào)?from?借閱?where?借書日期!=@此次借書日期?and?書號(hào)=@所借書號(hào)?and?借書證號(hào)=@借書證號(hào)?and?是否還書='否')
--同本書一人只能借一次???
begin??
????raiserror('同本書一人只能借一次!',16,1)??
????rollback??
end??
else?if?@未還書數(shù)量>3--借了3本書還沒還??
begin??
????select?*?from?借閱??
????raiserror('已借書3本,無(wú)法再借!',16,1)??
????rollback??
end??
else--成功插入后需進(jìn)行以下操作??
begin??
????update?書??
????set?借閱次數(shù)=借閱次數(shù)+1??
????where?書號(hào)=@所借書號(hào)??
????update?存取??
????set?可借數(shù)量=可借數(shù)量-1??
????where?書號(hào)=@所借書號(hào)??
end?

5.4.4 ?觸發(fā)器——還款

--還款---4??
create?trigger?還款?on?借閱???
for?update?as????
????declare?@新是否還款?char(2),@舊是否還款?char(2),@借書證號(hào)?int,@所借書號(hào)?int,@此次借書日期?datetime??
????select?@新是否還款=是否還款,@借書證號(hào)=借書證號(hào),@所借書號(hào)=書號(hào),@此次借書日期=借書日期?from?inserted??
????select?@舊是否還款=是否還款?from?deleted??
if?update(是否還款)--此列更新都會(huì)進(jìn)入此觸發(fā)器??
begin??
????if?@新是否還款=@舊是否還款?and?@舊是否還款='是'??
????begin??
????????raiserror('此書欠款已還清!',16,1)??
????????rollback??????
????end??
????else?if?@舊是否還款='否'?and?@新是否還款='是'??
????begin??
????????update?借閱??
????????set?違規(guī)罰款=0??
????????where?借書證號(hào)=@借書證號(hào)?and?書號(hào)=@所借書號(hào)?and?借書日期=@此次借書日期??
????end??
end?

5.4.5 ?觸發(fā)器——還書

--還書---5??
create?trigger?還書?on?借閱???
for?update?as????
????declare?@新是否還書?char(2),@舊是否還書?char(2),@借書證號(hào)?int,@所借書號(hào)?int,@此次借書日期?datetime,@舊還書日期?datetime??
????select?@新是否還書=是否還書,@借書證號(hào)=借書證號(hào),@所借書號(hào)=書號(hào),@此次借書日期=借書日期?from?inserted??
????select?@舊是否還書=是否還書,@舊還書日期=還書日期?from?deleted??
if?update(是否還書)--此列更新都會(huì)進(jìn)入此觸發(fā)器??
begin??
????if?@新是否還書=@舊是否還書?and?@舊是否還書='是'??
????begin??
????????raiserror('此書已還!',16,1)??
????????rollback??????
????end??
????else?if?@舊還書日期<getdate()--還書太晚罰款??
????begin??
????????update?借閱??
????????set?是否還款='否',違規(guī)罰款=10??
????????where?借書證號(hào)=@借書證號(hào)?and?@所借書號(hào)=7?and?借書日期=@此次借書日期??
????????select?*?from?借閱??
????end??
????else?if?@舊是否還書='否'?and?@新是否還書='是'??
????begin??
????????update?存取??
????????set?可借數(shù)量=可借數(shù)量+1??
????????where?書號(hào)=@所借書號(hào)??
????????update?借閱??
????????set?還書日期=getdate()??
????????where?借書證號(hào)=@借書證號(hào)?and?書號(hào)=@所借書號(hào)?and?借書日期=@此次借書日期??
????end??
end??

5.4.6 ?觸發(fā)器——續(xù)借管理

--續(xù)借管理---6??
create?trigger?續(xù)借管理?on?借閱???
for?update?as????
????declare?@新是否還書?char(2),@舊是否還書?char(2),@借書證號(hào)?int,@所借書號(hào)?int,@還書日期?datetime,@此次借書日期?datetime??
????select?@新是否還書=是否還書,@借書證號(hào)=借書證號(hào),@所借書號(hào)=書號(hào)?from?inserted??
????select?@舊是否還書=是否還書,@還書日期=還書日期,@此次借書日期=借書日期??from?deleted??
if?update(續(xù)借)--此列更新都會(huì)進(jìn)入此觸發(fā)器??
begin??
????if?@新是否還書=@舊是否還書?and?@舊是否還書='是'??
????begin??
????????raiserror('此書已還,無(wú)法續(xù)借!',16,1)??
????????rollback??????
????end??
????else?if?@新是否還書=@舊是否還書?and?@舊是否還書='否'??
????begin??
????????update?借閱????
????????set?還書日期=dateadd(day,7,@還書日期)??
????????where?借書證號(hào)=@借書證號(hào)?and?書號(hào)=@所借書號(hào)?and?借書日期=@此次借書日期??
????end??
end??

第六章 ?測(cè)試數(shù)據(jù)

6.1 ?完整的測(cè)試數(shù)據(jù)

6.1.1 ?出版社

--出版社??
insert?into?出版社(電報(bào)編號(hào),出版社名稱,地址,電話,郵編)?values('00-01','婁底出版社','婁底','010-58565118','417000')??
insert?into?出版社(電報(bào)編號(hào),出版社名稱,地址,電話,郵編)?values('00-02','衡陽(yáng)出版社','衡陽(yáng)','041-68934658','421001')??
insert?into?出版社(電報(bào)編號(hào),出版社名稱,地址,電話,郵編)?values('00-03','長(zhǎng)沙出版社','長(zhǎng)沙','031-52635632','410013')??
insert?into?出版社(電報(bào)編號(hào),出版社名稱,地址,電話,郵編)?values('00-04','邵陽(yáng)出版社','邵陽(yáng)','037-55699988','422000')??
insert?into?出版社(電報(bào)編號(hào),出版社名稱,地址,電話,郵編)?values('00-05','株洲出版社','株洲','054-85698752','412000')??
insert?into?出版社(電報(bào)編號(hào),出版社名稱,地址,電話,郵編)?values('00-06','云南出版社','云南','079-68855832','650000')

6.1.2 ?管理員

--管理員??
insert?into?管理員(姓名,性別)?values('劉志強(qiáng)','男')??
insert?into?管理員(姓名,性別)?values('黃平','男')??
insert?into?管理員(姓名,性別)?values('洪寧','男')??
insert?into?管理員(姓名,性別)?values('余家榮','男')??
insert?into?管理員(姓名,性別)?values('王香蘭','女')

6.1.3 ?讀者

--讀者表??
insert?into?讀者(姓名,性別,年齡,借書人單位)?values('羅凱','男',20,'湖南人文科技學(xué)院')??
insert?into?讀者(姓名,性別,年齡,借書人單位)?values('葉博宇','男',19,'湖南人文科技學(xué)院')??
insert?into?讀者(姓名,性別,年齡,借書人單位)?values('蔣杰','男',21,'湖南人文科技學(xué)院')??
insert?into?讀者(姓名,性別,年齡,借書人單位)?values('陳晗','男',22,'湖南人文科技學(xué)院')??
insert?into?讀者(姓名,性別,年齡,借書人單位)?values('宇智波佐助','男',20,'火影忍者')??
insert?into?讀者(姓名,性別,年齡,借書人單位)?values('日向雛田','女',19,'火影忍者')??
insert?into?讀者(姓名,性別,年齡,借書人單位)?values('丁真','男',21,null)?

6.1.4 ?書庫(kù)

--書庫(kù)??
insert?into?書庫(kù)(書庫(kù)號(hào),書籍品種,管理員編號(hào))?values(1,'教輔類',1)??
insert?into?書庫(kù)(書庫(kù)號(hào),書籍品種,管理員編號(hào))?values(2,'經(jīng)濟(jì)學(xué)類',2)??
insert?into?書庫(kù)(書庫(kù)號(hào),書籍品種,管理員編號(hào))?values(3,'小說類',3)??
insert?into?書庫(kù)(書庫(kù)號(hào),書籍品種,管理員編號(hào))?values(4,'游戲教程類',4)??
insert?into?書庫(kù)(書庫(kù)號(hào),書籍品種,管理員編號(hào))?values(5,'自然科學(xué)類',5)

6.1.5 ?書

--書??
insert?into?書(書名,標(biāo)價(jià),作者,電報(bào)編號(hào),管理員編號(hào))?values('數(shù)據(jù)庫(kù)原理設(shè)計(jì)',25.00,'王珊','00-01',1)??
insert?into?書(書名,標(biāo)價(jià),作者,電報(bào)編號(hào),管理員編號(hào))?values('操作系統(tǒng)與linux設(shè)計(jì)',38.00,'申豐山','00-03',1)
insert?into?書(書名,標(biāo)價(jià),作者,電報(bào)編號(hào),管理員編號(hào))?values('大學(xué)英語(yǔ)',69.90,'鄭樹棠','00-05',1)??
insert?into?書(書名,標(biāo)價(jià),作者,電報(bào)編號(hào),管理員編號(hào))?values('毛澤東思想概論',25.00,'王偉光','00-01',1)??
??
insert?into?書(書名,標(biāo)價(jià),作者,電報(bào)編號(hào),管理員編號(hào))?values('經(jīng)濟(jì)學(xué)',120.56,'茲維博迪','00-04',2)??
insert?into?書(書名,標(biāo)價(jià),作者,電報(bào)編號(hào),管理員編號(hào))?values('投資學(xué)',140.29,'茲維博迪','00-01',2)??
insert?into?書(書名,標(biāo)價(jià),作者,電報(bào)編號(hào),管理員編號(hào))?values('經(jīng)濟(jì)發(fā)展規(guī)律',243.89,'巴菲克','00-01',2)??
insert?into?書(書名,標(biāo)價(jià),作者,電報(bào)編號(hào),管理員編號(hào))?values('虛擬貨幣',620.00,'黃sir','00-04',2)??
??
insert?into?書(書名,標(biāo)價(jià),作者,電報(bào)編號(hào),管理員編號(hào))?values('金瓶梅',98.96,'王世貞','00-01',3)??
insert?into?書(書名,標(biāo)價(jià),作者,電報(bào)編號(hào),管理員編號(hào))?values('十八摸',78.36,'黃sir','00-04',3)??
insert?into?書(書名,標(biāo)價(jià),作者,電報(bào)編號(hào),管理員編號(hào))?values('霸道總裁愛上我',20.00,'洪sir','00-03',3)??
insert?into?書(書名,標(biāo)價(jià),作者,電報(bào)編號(hào),管理員編號(hào))?values('都市傳奇',20.00,'黃sir','00-04',3)??
??
insert?into?書(書名,標(biāo)價(jià),作者,電報(bào)編號(hào),管理員編號(hào))?values('射擊游戲教程',34.69,'aou君','00-05',4)??
insert?into?書(書名,標(biāo)價(jià),作者,電報(bào)編號(hào),管理員編號(hào))?values('賽馬娘教程攻略',34.69,'aou君','00-05',4)??
insert?into?書(書名,標(biāo)價(jià),作者,電報(bào)編號(hào),管理員編號(hào))?values('二次元游戲的那些事',34.69,'aou君','00-05',4)
insert?into?書(書名,標(biāo)價(jià),作者,電報(bào)編號(hào),管理員編號(hào))?values('火影忍者游戲攻略',34.69,'呆某','00-02',4)??
??
insert?into?書(書名,標(biāo)價(jià),作者,電報(bào)編號(hào),管理員編號(hào))?values('小蝌蚪找媽媽',34.69,'王某人','00-06',5)??
insert?into?書(書名,標(biāo)價(jià),作者,電報(bào)編號(hào),管理員編號(hào))?values('狗子刨坑',34.69,'黃sir','00-04',5)??
insert?into?書(書名,標(biāo)價(jià),作者,電報(bào)編號(hào),管理員編號(hào))?values('蜻蜓點(diǎn)水',34.69,'洪sir','00-03',5)??
insert?into?書(書名,標(biāo)價(jià),作者,電報(bào)編號(hào),管理員編號(hào))?values('植物是怎么睡覺的',34.69,'aou君','00-05',5)

6.2 ?觸發(fā)器測(cè)試

首先查看數(shù)據(jù)庫(kù)導(dǎo)入的表數(shù)據(jù):

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

?數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

?數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

?數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

6.2.1 ?觸發(fā)器——入庫(kù)測(cè)試

功能:書表插入數(shù)據(jù)后,自動(dòng)填寫存取表,存取數(shù)量和可借數(shù)量都默認(rèn)為5,用戶想修改也是可以修改的。

經(jīng)過上面數(shù)據(jù)導(dǎo)入之后,我們查詢存取表,結(jié)果如下:

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

很明顯,該觸發(fā)器功能已實(shí)現(xiàn)。

6.2.2 ?觸發(fā)器——借閱數(shù)據(jù)保護(hù)

功能:保護(hù)借閱數(shù)據(jù)不能被刪除(delete)

插入數(shù)據(jù)并查詢:

insert?into?借閱(借書證號(hào),書號(hào),管理員編號(hào))?values(220000,6,1)??

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

此時(shí)進(jìn)行delete操作:

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

很明顯,該觸發(fā)器功能已實(shí)現(xiàn)。

6.2.3 ?觸發(fā)器——借書測(cè)試

功能:

1.欠款未交----事務(wù)回滾

2.違反同本書一人只能借一次----事務(wù)回滾

3.借了3本書還沒還----事務(wù)回滾

4.成功插入后需進(jìn)行以下操作----update書的借閱次數(shù)+1

?????????????????????????????????update存取的可借數(shù)量-1

首先更新此人為欠款的人:

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

我們發(fā)現(xiàn)其可以還書,

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

但是不能借書,必須先交罰款

此時(shí),我們?cè)倏匆幌聲砗痛嫒”淼淖兓?/span>

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

由于是借了書所以借閱次數(shù)+1,但是剛剛進(jìn)行過還書。

此時(shí)我們讓220000讀者再借兩次同本書。首先還款,

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

第一次借書號(hào)=6的書:

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

?數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

還書后再次借書成功

第二次借書:

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

同一人只能借同一本書一本

然后我們?cè)僮?20000讀者借3本書

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

?數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

很明顯,書號(hào)1=9的書沒借成功,因?yàn)橐粋€(gè)人最多借三本書

因此,此觸發(fā)器實(shí)現(xiàn)完成。

6.2.4 ?觸發(fā)器——還款測(cè)試

功能:

1.已經(jīng)還清的人再還款----回滾事務(wù)

2.還款----罰款清0

修改數(shù)據(jù),使其違規(guī)罰款=10

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

此時(shí)進(jìn)行還款操作

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

我們發(fā)現(xiàn)還款清0了,且也已還款

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

經(jīng)測(cè)試發(fā)現(xiàn)該觸發(fā)器良好。

6.2.5 ?觸發(fā)器——還書測(cè)試

功能:

1.已經(jīng)還書還還書----回滾事務(wù)

2.還書太晚----罰款

3.還書成功----update借閱表此次借閱的還書日期

??????????????update存取表的可借數(shù)量+1

驗(yàn)證如下:

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

此時(shí),我們?cè)俅巫?20000還這本書

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

還書太晚就會(huì)出現(xiàn)下面的情況,雖然還是還了但是罰款

220001讀者借了7號(hào)書,預(yù)計(jì)還書日期是2022-5-14 3:38:00

結(jié)果還書晚了一分鐘,就罰款了

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

經(jīng)過測(cè)試基本可行。

6.2.6 ?觸發(fā)器——續(xù)借管理測(cè)試

功能:

1.書已經(jīng)還了----回滾事務(wù)

2.續(xù)借----實(shí)現(xiàn)續(xù)借后借書日期和還書日期的自動(dòng)更新(一次續(xù)借+7天)

我們讓220000讀者續(xù)借7號(hào)書,可以發(fā)現(xiàn)還書日期和續(xù)借的改變

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

我們?cè)僮?20000讀者續(xù)借6號(hào)書,6號(hào)書他已經(jīng)還了,所以續(xù)借不了

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

續(xù)借次數(shù)是不能大于4的,這是一開始建表用戶定義的完整性

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

總的來(lái)說,此觸發(fā)器符合預(yù)期。

6.3 ?測(cè)試視圖

6.3.1 ?視圖1測(cè)試

可隨時(shí)查詢書庫(kù)中現(xiàn)有書籍的品種、數(shù)量與存放位置。所有各類書籍均可由書號(hào)惟一標(biāo)識(shí)。

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

6.3.2 ?視圖2測(cè)試

可隨時(shí)查詢書籍借還情況,包括借書人單位、姓名、借書證號(hào)、借書日期和還書日期。

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

6.3.3 ?視圖3測(cè)試

當(dāng)需要時(shí),可通過數(shù)據(jù)庫(kù)中保存的出版社的電報(bào)編號(hào)、電話、郵編及地址等信息向相應(yīng)出版社增購(gòu)有關(guān)書籍。

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

6.3.4 ?借閱次數(shù)前五的書測(cè)試

查看借閱次數(shù)前5的書,不是前五不用查,且按降序排列

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

6.3.5 ?管理員操作記錄測(cè)試

查詢管理員的操作記錄,且按時(shí)間大小降序排列

數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)

6.4 ?數(shù)據(jù)庫(kù)操作管理

下面給管理員提供快捷的操作方式:

--插入數(shù)據(jù)管理:??
??
--管理員導(dǎo)入數(shù)據(jù)業(yè)務(wù)時(shí)的操作??
??
--1--出版社表數(shù)據(jù)導(dǎo)入形式如下:??
insert?into?出版社(電報(bào)編號(hào),出版社名稱,地址,電話,郵編)?values('000','測(cè)試','養(yǎng)根樓','173821068830','417000')??
--2--管理員表數(shù)據(jù)導(dǎo)入形式如下:??
insert?into?管理員(姓名,性別)?values('劉志強(qiáng)','男')??
--3--讀者表數(shù)據(jù)導(dǎo)入形式如下:??
insert?into?讀者(姓名,性別,年齡,借書人單位)?values('劉志強(qiáng)','男',21,'湖南人文科技學(xué)院')??
--4--書庫(kù)表數(shù)據(jù)導(dǎo)入形式如下:??
insert?into?書庫(kù)(書庫(kù)號(hào),書籍品種,管理員編號(hào))?values(1,'sdd54ss',1)??
--5--書表數(shù)據(jù)導(dǎo)入形式如下:??
insert?into?書(書名,標(biāo)價(jià),作者,電報(bào)編號(hào),管理員編號(hào))?values('數(shù)據(jù)庫(kù)',99.99,'xxx','000',1)??
--------------------------------------------------------------------------------------------------
--管理員處理讀者借書業(yè)務(wù)的操作??
??
--1--讀者借書操作形式如下:??
insert?into?借閱(借書證號(hào),書號(hào),管理員編號(hào))?values(220000,6,1)??
select?*?from?借閱??
delete?from?借閱?where?借書證號(hào)=220000?and?書號(hào)=6??
--2--讀者借書發(fā)現(xiàn)自己欠款:??
select?*?from?借閱?where?借書證號(hào)=220000?and?書號(hào)=6?and?是否還款='否'??
--此時(shí)再進(jìn)行后面的?管理員處理讀者還書、還款業(yè)務(wù)的操作2??
??
--------------------------------------------------------------------------------------------------
--管理員處理讀者還書、還款業(yè)務(wù)的操作??
??
--1--讀者還書操作形式如下:??
declare?@借書日期?datetime??
select?@借書日期=max(借書日期)?from?借閱?where?借書證號(hào)=220000?and?書號(hào)=6??
update?借閱??
set?是否還書='是'??
where?借書證號(hào)=220000?and?書號(hào)=6?and?借書日期=@借書日期??
??
--2--讀者還款操作形式如下:??
declare?@借書日期?datetime??
select?@借書日期=max(借書日期)?from?借閱?where?借書證號(hào)=220000?and?書號(hào)=6??
update?借閱??
set?是否還款='是'??
where?借書證號(hào)=220000?and?書號(hào)=6?and?借書日期=@借書日期??
??
--3--讀者還款加還書??
declare?@借書日期?datetime??
select?@借書日期=max(借書日期)?from?借閱?where?借書證號(hào)=220000?and?書號(hào)=6??
update?借閱??
set?是否還書='是',是否還款='是'??
where?借書證號(hào)=220000?and?書號(hào)=6?and?借書日期=@借書日期??
??
--------------------------------------------------------------------------------------------------
--管理員處理讀者續(xù)借業(yè)務(wù)的操作??
??
--1--讀者續(xù)借書籍??
declare?@借書日期?datetime??
select?@借書日期=max(借書日期)?from?借閱?where?借書證號(hào)=220000?and?書號(hào)=6??
update?借閱??
set?續(xù)借=4??
where?借書證號(hào)=220000?and?書號(hào)=6?and?借書日期=@借書日期?

第七章 ?設(shè)計(jì)總結(jié)

7.1??遇到的主要問題和解決方法

1.在討論這個(gè)E-R圖時(shí)出現(xiàn)了一些分歧,但是經(jīng)過細(xì)致的討論和分析,最終我們從理論上選擇了現(xiàn)在的E-R圖模型;

2.其次我在寫代碼時(shí),發(fā)現(xiàn)了觸發(fā)器的設(shè)置很容易出現(xiàn)觸發(fā)器之間的沖突,最后我們合理運(yùn)用分類的方法。首先按表給觸發(fā)器分類,同表再按不同操作分類,最壞的情況是幾個(gè)觸發(fā)器的觸發(fā)條件都是對(duì)一個(gè)表是更新操作,此時(shí)需要去考慮集合包含之間的關(guān)系,將條件卡死,最終我得到了不起沖突的6個(gè)觸發(fā)器;

3.在之前表的結(jié)構(gòu)還是有些問題的,由于判斷失誤,借閱表我們選擇了借書證號(hào)、書號(hào)、管理員號(hào)做主碼,這給我們前期造成了不小的麻煩,但是后面我將借閱的主碼定位借書證號(hào)、書號(hào)、結(jié)束時(shí)間解決了這個(gè)問題;

4.其次是觸發(fā)器設(shè)計(jì)代碼實(shí)現(xiàn)時(shí)我遇到的問題,就是在觸發(fā)器內(nèi)進(jìn)行該表查詢時(shí),該表的數(shù)據(jù)應(yīng)該是之前的加上剛剛操作的,即使事務(wù)最后被回滾了也是能查詢到的,但是回滾后再在觸發(fā)器外單獨(dú)查詢將查不到回滾事務(wù)去掉的那條數(shù)據(jù),這給我很大啟示,使得我做觸發(fā)器時(shí)選擇更加靈活多變;

7.2 ?進(jìn)一步改進(jìn)的設(shè)想

該圖書借閱管理系統(tǒng)還存在著許多問題,在邏輯結(jié)構(gòu)設(shè)計(jì)的過程中一些表雖然減少了冗余,但在查詢使用的過程中卻存在著語(yǔ)句復(fù)雜,使用復(fù)雜的問題。同時(shí)用于實(shí)時(shí)檢驗(yàn)和修改的觸發(fā)器設(shè)計(jì)過于簡(jiǎn)陋,觸發(fā)器數(shù)量太少,使得該系統(tǒng)不太成熟。

7.3 ?課程設(shè)計(jì)體會(huì)

通過對(duì)圖書借閱管理系統(tǒng)的設(shè)計(jì),一方面讓我們組明白了數(shù)據(jù)庫(kù)原理在圖書管理上運(yùn)用的流程,另一方面也讓我們?cè)俅问煜QL-server 2019的開發(fā)工具的使用方法,了解了SQL建立數(shù)據(jù)庫(kù)的一系列過程。在課程設(shè)計(jì)的過程中也遇到了一些問題,但是通過請(qǐng)教老師和同組同學(xué)討論,解決了不少問題,對(duì)數(shù)據(jù)庫(kù)系統(tǒng)原理也用了一個(gè)體系化的理解,收獲很大。

7.4 ?學(xué)習(xí)數(shù)據(jù)庫(kù)系統(tǒng)原理后的體會(huì)

數(shù)據(jù)庫(kù)的使用和高級(jí)程序開發(fā)的關(guān)系密不可分,學(xué)好數(shù)據(jù)庫(kù)系統(tǒng)原理對(duì)于進(jìn)一步理解程序設(shè)計(jì)流程和軟件開發(fā)應(yīng)用有著很大作用,通過本學(xué)期數(shù)據(jù)庫(kù)系統(tǒng)原理的學(xué)習(xí),雖然現(xiàn)在還沒有真正使用數(shù)據(jù)庫(kù)和高級(jí)語(yǔ)言一起用于程序的開發(fā),但對(duì)開發(fā)流程和其中用到的數(shù)據(jù)庫(kù)原理已經(jīng)有所理解了。

注:本系統(tǒng)并不完善,僅僅為期末的課程設(shè)計(jì)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-462043.html

到了這里,關(guān)于數(shù)據(jù)庫(kù)原理課程設(shè)計(jì)/圖書借閱管理系統(tǒng)代碼與word(sql server)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包