高校图书管理系统设计_第1页
高校图书管理系统设计_第2页
高校图书管理系统设计_第3页
高校图书管理系统设计_第4页
高校图书管理系统设计_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE3高校图书管理系统课程数据库原理实验需求分析1.1.1

图书管理的现状

在图书管理系统中,管理员为每个读者建立一个账户,账户内存储读者个人的详细信息,并依据读者类别的不同给每个读者发放借书卡。读者可凭借借书卡在图书馆进行借,还,查询图书等操作。由管理员录入借书卡号,显示姓名,学号,院系,出生年月,借书限额,已借书量等信息,完成借书操作同时修改相应图书信息的状态,读者信息中的已借数量并在借阅信息中添加相应记录。归还图书室,由管理员输入借书卡号,显示借书卡号,学号,姓名,读者编号等,并计算是否超期还书,若进行续借则取消超期和罚款信息。系统自动计算赔偿金额,完成归还操作的同时,修改相应的图书信息的状态,修改读者信息中的已借数量,在借书信息中对相应的借书记录做标记,在还书信息中添加相应记录。图书管理员不定期对图书信息进行添加,修改和删除等操作,也可以对读者的信息进行添加,删除,修改等操作。

1.2.2

选题的目的、意义

图书管理系统数据库有着手工管理无法比拟的优点,如检索迅速、查找方便、可靠性高、存储量大、保密性好,成本低等等。这些优点能极大提高图书管理的效率,因此,开发一套能够为用户提供充足的信息和快捷的查询手段的图书管理系统是十分必要的。1.2功能需求1.2.1读者信息的增加、修改、删除等基本操作1.读者类别信息的输入,包括图书类型、图书册数等2.读者档案信息的输入,包括读者编号、读者类型等1.2.2图书信息的增加、修改、删除等基本操作。1.图书类别信息的输入,包括类别编号,类别名称等。2.图书类别信息的查询,修改,包括类别编号,类别名称等。3.图书档案信息的输入,包括图书编号,图书名称,图书类别,作者名称,出版社名称,出版日期,图书页数,关键词,登记日期,备注信息等。1.2.3图书流通管理

1.图书征订管理

2.图书借阅管理

3.图书归还管理

4.图书罚款管理1.3系统开发环境1、系统:WindowsXP,7,8,102、开发平台:SQLSERVER2070,VISUALBASIC6.01.4SQLSERVER2017概述SQLSERVER2017是一个关系数据管理系统,是微软公司推出的新版本,该版本增加了许多先进的功能,具有方便使用,可伸缩性好与软件集成度高等的优点,可以运行在个人电脑到大型多处理器的服务器等多种平台使用。概念结构设计2.1实体型结构2.2实体间的联系

1.一个出版社对应多个图书,一个图书对应一个出版社,出版社和图书是一对多联系。

2.一个图书类型对应多个图书,一个图书对应一个图书类型,图书类型和图书是一对多联系。

3.一个读者类型对应多个读者,一个读者对应一个读者类型,读者类型和读者是一对多联系。

4.一个书库对应多个图书类型,一个图书类型对应一个书库,书库和图书类型是一对多联系。

5.一个图书入库单对应多个图书入库单明细,一个图书入库单明细对应一个图书入库单,图书入库单和图书入库单明细是一对多联系。

6.一个图书报损单对应多个图书报损单明细,一个图书报损单明细对于一个图书报损单,图书报损单和图书报损单明细是一对多联系。

7.一个读书对应多个图书入库单明细,一个图书入库单明细对应一个图书,图书和图书入库单明细是一对多联系。

8.一个读书对应多个图书报损单明细,一个图书报损单明细对应一个图书,图书和图书报损单明细是一对多联系。

9.一个读者对应多个罚款交费单,一个罚款交罚单对应一个读者,读者和罚款交费单是一对多联系。

10.一个职工对应多个图书入库单,一个图书入库单对应一个职工,职工和图书入库单是一对多联系。

11.一个职工对应多个图书报损单,一个图书报损单对应一个职工,职工和图书报损单是一对多联系。

12.一个职工对应多个罚款交费单,一个罚款交费单对应一个职工,职工和罚款交费单是一对多联系。

13.一个读者对应多个图书,一个图书对应多个读者,读者和图书之间是多对多联系。2.3整体简化E-R图

逻辑结构设计3.1E-R图向关系模式转换的原则1.一个实体型转换为一个关系模式。关系的属性:实体型的属性关系的码:实体型的码2.一个1:1联系可以转换为一个独立的关系模式,也可以与任何一端对应的关系模式合并。3.一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。4.一个m:n联系转换为一个关系模式。5.三个或三个以上实体间的一个多元联系可以转换为一个关系模式。6.具有相同码的关系模式可合并。目的:减少系统中关系个数7.同一实体集的实体之间的联系即自联系,也可以按1:1,1:n和m:n三种情况分别处理。3.2各个表的逻辑结构列

名数据类型长度主

键非空备注出版社编号Int

Yes

出版社名称Varchar50

Yes

出版社地址Varchar50

Yes

表3.1

出版社表

表3.2

图书表列

名数据类型长度主

键非空备注图书编号varchar20Yes

出版社编号Int

Yes外码,参照出版表出版社编号图书类型编号char1

Yes外码,参照图书类型表,图书类型编号书名varchar50

Yes

作者varchar20

Yes

价格Numeric(8,2)

Yes

页码Int

Yes

库存总量Int

Yes

现存量Int

Yes

入库时间Datetime

借出次数Int

Yes

表3.3

图书类型表

名数据类型长度主

键非空备注图书类型编号Char1YesYes”图书类型名varchar50

Yes

书库号int

外码,参照书库表的书库号

表3.4

读者表列

名数据类型长度主

键非空备注证书编号int

YesYes

读者类型编号Char10

外码,参照读者类型表的读者类型编号姓名varchar50

Yes

性别Char10

Yes只能为“男”、或“女”出生日期Datetime

Yes

身份证编号char18

Yes必须是18位

图书借阅次数int

是否挂失int

0未挂失1已挂失已借册数int

未交罚款金额Numeric(8,2)

表3.5

读者类型表列

名数据类型长度主

键非空备注读者类型编号Char10YesYes

读者类型名vachar20

Yes

可借阅册数Int

Yes有效范围是2060

借期天数int

Yes有效范围是90120

可续借天数int

Yes有效范围是1060

表3.6

书库表列

名数据类型长度主

键非空备注书库号int

YesYes

书库名varchat50

Yes

表3.7职工表列

名数据类型长度主

键非空备注职工编号int

YesYes

职工姓名varchar50

Yes

性别Char10

Yes只能为“男”、或“女”出生日期Datetime

Yes

文化程度varchar20

Yes

表3.8罚款交费单表列

名数据类型长度主

键非空备注交费单号int

YesYes

借书证编号int

Yes外码,参照读者表证书编号日期Datetime

Yes

金额Numeric(8,2)

Yes

表3.9图书入库单表列

名数据类型长度主

键非空备注入库编号int

YesYes

入库日期Datetime

Yes

经手职工编号int

外码,参照职工表的职工编号是否入库int

0已入库1未入库

表3.10图书入库单明细表列

名数据类型长度主

键非空备注图书入库单编号int

Yes报损单编号和图书编号一起作为主码Yes外码,参照图书入库单表的图书入库编号图书编号varchar20Yes外码,参照图书表的图书编号数量int

Yes

3.3视图结构

3.3.1

入库单视图列

名来源表入库单编号图书入库单表入库日期图书入库单表经手人姓名职工表是否已入库图书入库单表图书编号图书入库单明细表书名图书表出版社名出版社表入库数量图书入库单明细表

表3.3.2

报损单视图列

名来源表报损单编号图书报损单表报损日期图书报损单表经手人姓名职工表图书编号图书报损单明细表书名图书表出版社名出版社表报损数量图书报损单明细表报损原因图书报损单明细表

表3.3.3

读者未还借书视图列

名来源表借书证编号借阅表读者姓名读者表未还书编号借阅表未还书名图书表出版社名出版社表借书日期借阅表可借期天数读者类型表罚款金额借阅表

物理结构设计4.1索引的设计原则

(1)如果一个(或一组)属性经常在查询条件中出现,则考虑早这个(或这组)属性建立索引。(2)如果一个属性经常作为最大值和最小值等聚集函数的参数,则考虑这个属性上建立索引。(3)如果一个(或一组)属性经常在连接操作的连接条件中出现,则考虑在这个(或这组)属性上建立索引。

4.2索引结构设计

表4.1

索引结构表表名索引名索引列备注(索引的设计理由)图书书名索引书名经常查询的列图书出版社编号索引出版编社号经常连接的列图书图书类型索引图书类型编号经常连接的列图书作者索引作者经常查询的列图书类型书库号索引书库号经常连接的列读者姓名索引姓名经常查询的列读者图书借阅次数索引图书借阅次数聚集函数的参数读者已借册数索引已借册数聚集函数的参数读者未交罚款金额索引未交罚款金额聚集函数的参数职工姓名索引姓名经常查询的列罚款交费单借书证编号索引借书证编号经常连接的列图书入库单经手职工编号索引经手职工编号经常连接的列图书入库单明细图书入库单编号索引图书入库单编号经常连接的列图书入库单明细图书编号索引图书编号经常连接的列图书报损单经手职工编号索引经手职工编号经常连接的列图书报损单明细图书报损单编号索引图书报损单编号经常连接的列图书报损单明细图书编号索引图书编号经常连接的列借阅借书证编号索引借书证编号经常连接的列借阅图书编号索引图书编号经常连接的列数据库运行与维护5.1建表语句CREATEDATABASETianqiuyueCREATETABLE出版社(出版社编号INTPRIMARYKEY,出版社名称VARCHAR(50)NOTNULL,出版社地址VARCHAR(50));CREATETABLE书库(书库号INTPRIMARYKEY,书库名VARCHAR(50)NOTNULL);CREATETABLE图书类型(图书类型编号CHAR(1)PRIMARYKEY,图书类型名VARCHAR(50)NOTNULL,书库号INT,FOREIGNKEY(书库号)REFERENCES书库(书库号));CREATETABLE图书(图书编号VARCHAR(20)PRIMARYKEY,出版社编号INTNOTNULL,图书类型编号CHAR(1),书名VARCHAR(50)NOTNULL,作者VARCHAR(20)NOTNULL,价格NUMERIC(8,2)NOTNULL,页码INTNOTNULL,库存总量INTNOTNULL,现存量INTNOTNULL,入库时间DATETIME,借出次数INTNOTNULL,FOREIGNKEY(出版社编号)REFERENCES出版社(出版社编号),FOREIGNKEY(图书类型编号)REFERENCES图书类型(图书类型编号));CREATETABLE读者类型(读者类型编号CHAR(10)PRIMARYKEY,读者类型名VARCHAR(20)NOTNULL,可借阅册数INTCHECK(可借阅册数>=20AND可借阅册数<=60),借期天数INTCHECK(借期天数>=90AND借期天数<=120),可续借天数INTCHECK(可续借天数>=10AND可续借天数<=60))CREATETABLE读者(证书编号INTPRIMARYKEY,读者类型编号CHAR(10),姓名VARCHAR(50)NOTNULL,性别CHAR(10)CHECK(性别IN('男','女')),出生日期DATETIMENOTNULL,身份证编号CHAR(18)CHECK(LEN(TRIM(身份证编号))=18),图书借阅次数INT,是否挂失INT,已借册数INT,未交罚款金额NUMERIC(8,2),FOREIGNKEY(读者类型编号)REFERENCES读者类型(读者类型编号))CREATETABLE职工(职工编号INTPRIMARYKEY,职工姓名VARCHAR(50)NOTNULL,性别CHAR(10)CHECK(性别IN('男','女')),出生日期DATETIMENOTNULL,文化程度VARCHAR(20)NOTNULL)CREATETABLE罚款交费单(交费单号INTPRIMARYKEY,借书证编号INT,日期DATETIMENOTNULL,金额NUMERIC(8,2)NOTNULL,FOREIGNKEY(借书证编号)REFERENCES读者(证书编号))CREATETABLE图书入库单(入库单编号INTPRIMARYKEY,入库日期DATETIMENOTNULL,经手人编号INT,是否入库INT,FOREIGNKEY(经手人编号)REFERENCES职工(职工编号))CREATETABLE图书入库单明细(入库单编号INT,图书编号VARCHAR(20),数量INTNOTNULL,PRIMARYKEY(入库单编号,图书编号),FOREIGNKEY(入库单编号)REFERENCES图书入库单(入库单编号),FOREIGNKEY(图书编号)REFERENCES图书(图书编号))CREATETABLE图书报损单(报损单编号INTPRIMARYKEY,报损日期DATETIMENOTNULL,经手人编号INT,FOREIGNKEY(经手人编号)REFERENCES职工(职工编号))CREATETABLE图书报损单明细(报损单编号INT,图书编号VARCHAR(20),数量INTNOTNULL,报损原因VARCHAR(100)NOTNULL,PRIMARYKEY(报损单编号,图书编号),FOREIGNKEY(报损单编号)REFERENCES图书报损单(报损单编号),FOREIGNKEY(图书编号)REFERENCES图书(图书编号))CREATETABLE借阅(借书证编号INT,图书编号VARCHAR(20),借书日期DATETIMENOTNULL,还书日期DATETIME,罚款金额NUMERIC(8,2),是否续借INT,CHECK(借书日期>=还书日期),PRIMARYKEY(借书证编号,图书编号),FOREIGNKEY(借书证编号)REFERENCES读者(证书编号),FOREIGNKEY(图书编号)REFERENCES图书(图书编号))

5.2建视图语句CREATEVIEW入库单(入库单编号,入库日期,经手人姓名,是否已入库,图书编号,书名,出版社名,入库数量)ASSELECT图书入库单.入库单编号,图书入库单.入库日期,职工.职工姓名,图书入库单.是否入库,图书入库单明细.图书编号,图书.书名,出版社.出版社名称,图书入库单明细.数量FROM图书入库单,图书入库单明细,职工,图书,出版社WHERE图书入库单明细.入库单编号=图书入库单.入库单编号AND图书入库单明细.图书编号=图书.图书编号AND图书入库单.经手人编号=职工.职工编号AND图书.出版社编号=出版社.出版社编号CREATEVIEW图书分类库存(图书类型编号,图书类型名,库存册数合计,库存金额合计)ASSELECT图书类型.图书类型编号,图书类型.图书类型名,sum(图书.库存总量),sum(图书.价格*图书.库存总量)FROM图书,图书类型WHERE图书类型.图书类型编号=图书.图书类型编号GROUPBY图书类型.图书类型编号,图书类型.图书类型名CREATEVIEW借出次数前100图书(图书编号,书名,借出次数)ASSELECTTOP(100)图书编号,书名,借出次数FROM图书ORDERBY借出次数DESC

5.3建索引语句CREATEINDEX书名索引ON图书(书名);CREATEINDEX出版社编号索引ON图书(出版社编号);CREATEINDEX图书类型编号索引ON图书(图书类型编号);CREATEINDEX作者索引ON图书(作者);CREATEINDEX书库号索引ON图书类型(书库号);CREATEINDEX姓名索引ON读者(姓名);CREATEINDEX图书借阅次数索引ON读者(图书借阅次数);CREATEINDEX已借册数索引ON读者(已借册数);CREATEINDEX未交罚款金额索引ON读者(未交罚款金额);CREATEINDEX职工姓名索引ON职工(职工姓名);CREATEINDEX借书证编号索引ON罚款交费单(借书证编号);CREATEINDEX经手职工编号索引ON图书入库单(经手人编号);CREATEINDEX图书报损单编号索引ON图书报损单明细(报损单编号);CREATEINDEX图书编号索引ON图书报损单明细(图书编号);CREATEINDEX借书证编号索引ON借阅(借书证编号);CREATEINDEX图书编号索引ON借阅(图书编号);

5.4存储过程

每个存储过程的功能说明和建立语句INSERTINTO书库VALUES(2,'理工库');INSERTINTO图书类型VALUES('T','工业技术',2);INSERTINTO出版社VALUES(1,'清华大学出版社','北京');INSERTINTO图书(图书类型编号,出版社编号,图书编号,书名,作者,价格,页码,现存量,库存总量,入库时间,借出次数)VALUES('T',1,'101','数据库系统原理','王珊','20','400',0,0,null,0);INSERTINTO图书(图书类型编号,出版社编号,图书编号,书名,作者,价格,页码,现存量,库存总量,入库时间,借出次数)VALUES('T',1,'102','C程序设计','谭浩强','18','300',0,0,null,0);INSERTINTO图书(图书类型编号,出版社编号,图书编号,书名,作者,价格,页码,现存量,库存总量,入库时间,借出次数)VALUES('T',1,'103','计算机组成原理','张兵','20','400',0,0,null,0);INSERTINTO职工VALUES(10001,'王小伟','男',1995-3-7,'本科');INSERTINTO图书入库单明细(入库单编号,图书编号,数量)VALUES(100,101,75);INSERTINTO图书入库单明细(入库单编号,图书编号,数量)VALUES(100,102,75);INSERTINTO图书入库单明细(入库单编号,图书编号,数量)VALUES(100,103,75);

SELECT*FROM图书入库单明细select*from图书5.5触发器

每个触发器的功能说明和建立语句

1.编写图书入库单明细表的DELETE触发器,如已经入库(对应入库单的<是否已入库>

为1),报错’已入库不能删除!’,回滚事务(在触发器中执行ROLLBACKTRANSACTION,

回滚(撤销)引起触发器DELETE的语句)GOCREATETRIGGERtrig_delete_tsrkdmxON图书入库单明细FORDELETEASDECLARE@是否入库INT,@入库单编号INTSET@入库单编号=(SELECTTOP1入库单编号FROMdeleted)SET@是否入库=(SELECT是否入库FROM图书入库单WHERE入库单编号=@入库单编号)IF@是否入库=1BEGINRAISERROR('已入库不能删除!',16,1)ROLLBACKTRANSACTIONENDGO测试:删除入库明细单中入库单号为100的行触发器报错,

删除失败,截图

deletefrom图书入库单明细where入库单编号=1002.编写图书入库单明细表的UPDATE触发器,如已经入库(对应入库单<是否已入库>

为1),报错’已入库不能修改’,回滚事务测试:GOCREATETRIGGERtrig_update_tsrkdmxON图书入库单明细FORUPDATEASDECLARE@是否入库INT,@入库单编号INTSET@入库单编号=(SELECTTOP1入库单编号FROMdeleted)SET@是否入库=(SELECT是否入库FROM图书入库单WHERE入库单编号=@入库单编号)IF@是否入库=1BEGINRAISERROR('已入库不能修改!',16,1)ROLLBACKTRANSACTIONENDGOUPDATE入库明细单中入库单号为100的行触发器报错,

update失败update图书入库单明细set数量=110where入库单编号=100

3.读者借书时,要插入借阅行,编写触发器,当插入借阅时,如读者已借够可借册数,不准借了(报错,

回滚事务),如或读者有未交罚款>100,不准借了(报错,

回滚事务)否则{将读者已借册数加1,

图书借阅次数加1,将图书的借出次数加1,现存量减1}测试:GOCREATETRIGGERtrig_insert_jieyueON借阅FORINSERTASDECLARE@借书证编号INT,@已借册数INT,@可借册数INT,@读者类型编号CHAR(10),@未交罚款金额NUMERIC(8,2),@图书编号VARCHAR(20)SET@借书证编号=(SELECTTOP1借书证编号FROMinserted)SET@图书编号=(SELECTTOP1图书编号FROMinserted)SET@已借册数=(SELECT已借册数FROM读者WHERE证书编号=@借书证编号)SET@读者类型编号=(SELECT读者类型编号FROM读者WHERE证书编号=@借书证编号)SET@未交罚款金额=(SELECT未交罚款金额FROM读者WHERE证书编号=@借书证编号)SET@可借册数=(SELECT可借阅册数FROM读者类型WHERE读者类型编号=@读者类型编号)IF@已借册数>@可借册数BEGINRAISERROR('读者已借够可借册数!',16,1)ROLLBACKTRANSACTIONENDELSEIF@未交罚款金额>100BEGINRAISERROR('读者有未交罚款!',16,1)ROLLBACKTRANSACTIONENDELSEBEGINUPDATE读者SET图书借阅次数=图书借阅次数+1WHERE证书编号=@借书证编号UPDATE图书SET借出次数=借出次数+1,现存量=现存量-1WHERE图书编号=@图书编号ENDGO自行设计测试数据

INSERTINTO读者类型(读者类型编号,读者类型名,可借阅册数,借期天数,可续借天数)VALUES('10000','本科生',30,90,10);INSERTINTO读者(证书编号,姓名,读者类型编号,性别,出生日期,身份证编号,图书借阅次数,是否挂失,已借册数,未交罚款金额)VALUES(10,'王陆','10000','男','1999-5-6','370683199703786815',10,0,20,110);INSERTINTO借阅(借书证编号,图书编号,借书日期,还书日期,是否续借,罚款金额)VALUES(10,'101','2019-6-21',NULL,0,0);4.读者还书时,要修改借阅表,设置还书日期。编写触发器,当修改借阅时(一次只修改一行,不考虑修改多行的情况,不用游标)如果还书日期原来为空值,新值不是空值(这表明是还书操作)将读者的已借册数减1,

将图书的现存量加1如果罚款金额原来为空值,新值不是空值(这表明是有罚款)将读者的未交罚款增加如果罚款金额原来不是空值,新值不是空值(这表明是罚款修改了)将读者的未交罚款调整

(

减旧罚款,

加新罚款)GOCREATETRIGGERtrig_update_jieyueON借阅FORUPDATEASDECLARE@原还书日期DATETIME,@新还书日期DATETIME,@原罚款金额NUMERIC(8,2),@新罚款金额NUMERIC(8,2),@借书证编号INT,@已借册数INT,@图书编号VARCHAR(20)SET@原还书日期=(SELECTTOP1还书日期FROMdeleted)SET@新还书日期=(SELECTTOP1还书日期FROMinserted)SET@原罚款金额=(SELECTTOP1罚款金额FROMdeleted)SET@图书编号=(SELECTTOP1图书编号FROMdeleted)SET@已借册数=(SELECT已借册数FROM读者WHERE证书编号=@借书证编号)IF@原还书日期ISNULLAND@新还书日期ISNOTNULL--还书操作BEGINUPDATE读者SET图书借阅次数=图书借阅次数-1WHERE证书编号=@借书证编号UPDATE图书SET现存量=现存量+1WHERE图书编号=@图书编号ENDIF@原罚款金额ISNULLAND@新罚款金额ISNOTNULL--未交罚款增加BEGINUPDATE读者SET未交罚款金额=@新罚款金额WHERE证书编号=@借书证编号ENDIF@原罚款金额ISNOTNULLAND@新罚款金额ISNOTNULL--未交罚款修改BEGINUPDATE读者SET未交罚款金额=未交罚款金额+@新罚款金额WHERE证书编号=@借书证编号ENDGO测试:自行设计测试数据

INSERTINTO读者类型(读者类型编号,读者类型名,可借阅册数,借期天数,可续借天数)VALUES('10000','本科生',30,90,10);INSERTINTO读者(证书编号,姓名,读者类型编号,性别,出生日期,身份证编号,图书借阅次数,是否挂失,已借册数,未交罚款金额)VALUES(10,'王陆','10000','男','1999-5-6','370683199703786815',10,0,20,30);INSERTINTO借阅(借书证编号,图书编号,借书日期,还书日期,是否续借,罚款金额)VALUES(10,'101','2019-6-21',NULL,0,0);SELECT*FROM借阅UPDATE借阅SET还书日期='2019-6-21'WHERE借书证编号=10UPDATE借阅SET罚款金额=罚款金额+5WHERE借书证编号=10SELECT*FROM借阅SELECT*FROM读者SELECT*FROM图书

读者交罚款时,要插入罚款交费单,编写触发器,当插入罚款交费单,将读者的未交罚款减少GOCREATETRIGGERtrig_insert_fakuanON罚款交费单FORINSERTASDECLARE@借书证编号INT,@金额NUMERIC(8,2)SET@借书证编号=(SELECTTOP1借书证编号FROMinserted)SET@金额=(SELECTTOP1金额FROMinserted)IF@金额ISNOTNULLBEGINUPDATE读者SET未交罚款金额=未交罚款金额-@金额WHERE证书编号=@借书证编号ENDGO测试:自行设计测试数据

INSERTINTO读者类型(读者类型编号,读者类型名,可借阅册数,借期天数,可续借天数)VALUES('10000','本科生',30,90,10);INSERTINTO读者(证书编号,姓名,读者类型编号,性别,出生日期,身份证编号,图书借阅次数,是否挂失,已借册数,未交罚款金额)VALUES(10,'王陆','10000','男','1999-5-6','370683199703786815',10,0,20,100);INSERTINTO借阅(借书证编号,图书编号,借书日期,还书日期,是否续借,罚款金额)VALUES(10,'101','2019-6-21',NULL,0,0);INSERTINTO罚款交费单(交费单号,日期,职工编号,金额,借书证编号)VALUES(1,'2019-6-22',10001,100,10);select*from读者

6.编写触发器,借书表不允许DELETE操作GOCREATETRIGGERtrig_delete_jieyueON借阅FORDELETEASRAISERROR('借书表不允许DELETE操作',16,1)ROLLBACKTRANSACTIONGO测试:自行设计测试数据

DELETEFROM借阅

7.编写报损单触发器GOCREATETRIGGERtrig_insert_baosunON图书报损单明细FORINSERTASDECLARE@数量INT,@图书编号VARCHAR(20)SET@数量=(SELECTTOP1数量FROMinserted)SET@图书编号=(SELECTTOP1图书编号FROMinserted)UPDATE图书SET库存总量=库存总量-@数量,现存量=现存量-@数量WHERE图书编号=@图书编号GO六、测试数据6.1完整的测试数据/*在出版社表插入5行数据*/INSERTINTO出版社VALUES(1,'清华大学出版社','北京');INSERTINTO出版社VALUES(2,'高等教育出版社','北京');INSERTINTO出版社VALUES(3,'天津大学出版社','天津');INSERTINTO出版社VALUES(4,'复旦大学出版社','上海');INSERTINTO出版社VALUES(5,'山东大学出版社','济南');/*在书库表插入4行数据*/INSERTINTO书库VALUES(1,'文史库');INSERTINTO书库VALUES(2,'理工库');INSERTINTO书库VALUES(3,'经管库');INSERTINTO书库VALUES(4,'政法库');/*在图书类型表插入5行数据,注意图书类型编号为字符型*/INSERTINTO图书类型VALUES('T','工业技术',2);INSERTINTO图书类型VALUES('A','马克思,列,毛,邓',4);INSERTINTO图书类型VALUES('K','历史地理',1);INSERTINTO图书类型VALUES('F','经济',3);INSERTINTO图书类型VALUES('I','文学',1);/*在图书表插入20行数据*/INSERTINTO图书(图书类型编号,出版社编号,图书编号,书名,作者,价格,页码,现存量,库存总量,入库时间,借出次数)VALUES('T',1,'101','数据库系统原理','王珊','20','400',100,100,'6-10-2019',0);INSERTINTO图书(图书类型编号,出版社编号,图书编号,书名,作者,价格,页码,现存量,库存总量,入库时间,借出次数)VALUES('T',1,'102','C程序设计','谭浩强','18','300',100,100,'6-10-2019',0);INSERTINTO图书(图书类型编号,出版社编号,图书编号,书名,作者,价格,页码,现存量,库存总量,入库时间,借出次数)VALUES('I',5,'107','鲁迅文集','鲁迅','30','400',100,100,'6-20-2019',0);/*在读者类型表插入4行数据*/INSERTINTO读者类型(读者类型编号,读者类型名,可借阅册数,借期天数,可续借天数)VALUES('bk01','本科生',30,90,10);INSERTINTO读者类型(读者类型编号,读者类型名,可借阅册数,借期天数,可续借天数)VALUES('yj01','研究生',40,100,10);INSERTINTO读者类型(读者类型编号,读者类型名,可借阅册数,借期天数,可续借天数)VALUES('js02','教授',60,120,30);/*在读者表插入10行数据*/INSERTINTO读者(证书编号,姓名,读者类型编号,性别,出生日期,身份证编号,图书借阅次数,是否挂失,已借册数,未交罚款金额)VALUES(10,'王陆','bk01','男','1999-5-6',,10,0,20,10);INSERTINTO读者(证书编号,姓名,读者类型编号,性别,出生日期,身份证编号,图书借阅次数,是否挂失,已借册数,未交罚款金额)VALUES(11,'王舞','bk01','女','1998-5-16',,10,0,20,0);INSERTINTO读者(证书编号,姓名,读者类型编号,性别,出生日期,身份证编号,图书借阅次数,是否挂失,已借册数,未交罚款金额)VALUES(12,'陆飘','yj01','女','1995-4-16',,10,0,20,20);INSERTINTO读者(证书编号,姓名,读者类型编号,性别,出生日期,身份证编号,图书借阅次数,是否挂失,已借册数,未交罚款金额)VALUES(15,'孔燕','js02','女','1978-5-16',,10,0,20,0);/*在职工插入5行数据*/INSERTINTO职工VALUES(10001,'王小伟','男','1995-3-7','本科');INSERTINTO职工VALUES(10002,'张三','男','1996-7-8','本科');INSERTINTO职工VALUES(10003,'李四','男','1994-5-3','本科');INSERTINTO职工VALUES(10004,'王五','男','1995-4-23','本科');INSERTINTO职工VALUES(10005,'小六','男','1997-3-17','本科');/*在图书入库单表插入5行数据,是否已入库的值是0注意,日期格式:‘月-日-年’,例如’6-20-2016’*/INSERTINTO图书入库单(入库单编号,入库日期,经手人编号,是否入库)VALUES(100,'6-10-2019',10001,0);INSERTINTO图书入库单(入库单编号,入库日期,经手人编号,是否入库)VALUES(101,'6-19-2019',10002,0);INSERTINTO图书入库单(入库单编号,入库日期,经手人编号,是否入库)VALUES(102,'6-20-2019',10003,0);/*对应每个入库单,各输入3个明细数据*/INSERTINTO图书入库单明细(入库单编号,图书编号,数量)VALUES(100,103,100);INSERTINTO图书入库单明细(入库单编号,图书编号,数量)VALUES(101,104,100);INSERTINTO图书入库

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论