数据库实训sqlserver

一、数据库设计题

1、以“library”为名称创建一个数据库。该数据库中包含一个主数据文件tsdata.mdf,存放路径为“d:\data\”;一个事务日志文件tslog.ldf,存放路径为“d:\data\”。其他设置自定。

 2、在上题创建好的数据库中,按如下要求创建三张表。

表1 书籍表:用来存储书籍的基本信息

字段名称

数据类型

长度

是否为空

说明

序号

int

非空

初始值和增量均为1

图书编号

char

10

非空

主键

书名

varchar

50

非空

作者

varchar

20

非空

价格

Money

出版社

varchar

50

非空

出版日期

smalldatetime

库存量

int

非空

>=0

 

表2读者表:用来存储读者的基本信息

字段名称

数据类型

长度

是否为空

约束

借书证号

char

10

非空

主键

姓名

varchar

20

非空

性别

char

2

非空

默认值为“男”

单位

 varchar

50

联系电话

char

11

表3 借阅表:存储读者借阅的信息

字段名称

数据类型

长度

是否为空

约束

图书编号

char

10

非空

外键,参照书籍表

借书证号

char

10

非空

外键,参照读者表

借书日期

smalldatetime

非空

还书日期

smalldatetime

归还否

char

2

非空

3、在“library”数据库中插入以下记录。

(1)在书籍表中插入以下数据:

图书编号

书名

作者

价格

出版社

出版日期

库存量

J1

计算机基础

刘大石

29

机械工业出版社

2014/2/1

5

J2

数据库应用教程

李刚

32

电子工业出版社

2014/9/1

8

(2)在读者表中插入以下数据:

借书证号

姓名

性别

单位

联系电话

10001

柯思扬

信息系

13837482123

10002

孙一明

管理系

13978621278

(3)在借阅表中插入以下数据:

图书编号

借书证号

借书日期

还书日期

归还否

J1

10001

2015/6/3

2015/12/3

J2

10001

2015/6/3

2015/12/3

 

 

 4、为读者表创建一个“姓名”列的非聚集索引文件。

 5、创建“读者借阅信息”视图,包括借书证号、姓名、书名、还书日期等信息。

 

二、查询设计题(每小题5分,共25分)

1、在library数据库中查询“孙一明”的相关信息。

请粘贴T-SQL查询语句:

select * from 读者表 where 姓名='孙一明';

2、查询信息系或电子系的读者信息。

请粘贴T-SQL查询语句:

select * from 读者表 where 单位='信息系' or 单位='电子系';

3、查找书名以“计算机”打头的所有图书和作者。

请粘贴T-SQL查询语句:

select * from 书籍表 where 书名 like '计算机%';

4、查找姓名为“柯思扬”借阅书本的书名。  

请粘贴T-SQL查询语句:

select 书名 from 书籍表 where 图书编号 in

(select 图书编号 from 借阅表 where 借书证号 =

(select 借书证号 from 读者表 where 姓名='柯思扬'))

5、查询借书证号为“10001”所借书本的本数,显示借书证号和借书本数,并按借书证号升序排序。(4分)

请粘贴T-SQL查询语句:

select  b.借书证号,COUNT(*) 借书本数 from 借阅表 b,书籍表 a

where a.图书编号=b.图书编号 and b.借书证号='10001' group by b.借书证号 order by b.借书证号;

三、填空题(每空2分,共10分)

1、读者还书存储过程:ReturnBook的创建,若读者没有借阅此书,则显示‘对不起,你没有借阅此书,故而无法进行此次还书操作,请核实!’信息。

use Library

go

create  procedure ___ReturnBook___

@no char(10),@bid char(10)

as

if not exists(___select * from 借阅表where 借书证号=@no and 图书编号=@bid______________________________________________________)

begin

       print'对不起,你没有借阅此书,故而无法进行此次还书操作,请核实!'

end

 

2、在借阅表中创建一个触发器:tri_Book,若要借的书已无库存,则无法进行借书操作,即无法在‘借阅表’中插入记录。

create ____trigger_____ tri_Book ________

on _____借阅表_______

for  insert

as

declare @btotal varchar(10),@bborrowed varchar(10)

select  @bborrowed=图书编号  from inserted

select @btotal=库存量 from 书籍表 where 图书编号=@bborrowed

if(___@btotao=0___________)

begin

rollback transaction

print '借阅失败!'

print'对不起,此书已经没有库存,无法进行本次借书操作!'

end

go

四、程序题(共15分)

1、读者还书存储过程:ReturnBook_1的创建,1.成功还书时将归还否字段的‘否’改成‘是’,还书日期为当前时间,3.显示“成功地向图书馆归还!”。

create procedure ReturnBook_1

@no varchar(10),@bid varchar(30)

as

if exists(select *  from 借阅表 where 借书证号=@no and 图书编号=@bid and 归还否='')

begin

update 借阅表 set 归还否='',借书日期=GETDATE()

where 借书证号=@no and 图书编号=@bid

select '成功地向图书馆归还!'

end

go

2、用借书证号和图书编号为“10001”和“j1” 来验证存储过程。  

exec ReturnBook_1 '10001','J1'

select * from 借阅表;

-- 5、查询借书证号为“10001”所借书本的本数,
-- 显示借书证号和借书本数,并按借书证号升序排序。

select  b.借书证号,COUNT(*) 借书本数 from 借阅表 b,书籍表 a
where a.图书编号=b.图书编号 and b.借书证号='10001' group by b.借书证号 order by b.借书证号;

select * from 书籍表
select * from 读者表
select * from 借阅表


-- 1、读者还书存储过程:ReturnBook_1的创建,1.成功还书时将归还否字段的‘否’改成‘是’,还书日期为当前时间,3.显示“成功地向图书馆归还!”。
create procedure xxx
@no varchar(10),@bid varchar(30)
as
if exists(select * from 借阅表 where 借书证号=@no and 图书编号=@bid and 归还否='否')
begin
update 借阅表 set 归还否='是',还书日期=GETDATE()
select '成功地向图书馆还书!'
end
go

-- 读者还书
exec xxx '10001','J2'
select* from 借阅表

-- 1、读者借书触发器
create trigger borrowbok2
on 借阅表
for insert
as
declare @total varchar(10),@borrow varchar(10)
select @borrow=图书编号 from 借阅表
select @total=库存量 from 书籍表 where 图书编号=@borrow
if(@total>0)
begin
update 书籍表 set 库存量=库存量-1
print'借书成功'
end
go


insert into 借阅表(图书编号,借书证号,借书日期,还书日期,归还否)
values('J1',10002,2022-12-12,2022-12-13,'否')

select* from 书籍表
select * from 借阅表
-- 在借阅表中创建一个触发器:tri_Book,若要借的书已无库存,则无法进行借书操作,即无法在‘借阅表’中插入记录
create trigger tri_Book
on 借阅表
for  insert 
as
declare @btotal varchar(10),@bborrowed varchar(10)
select  @bborrowed=图书编号  from 借阅表
select @btotal=库存量 from 书籍表 where 图书编号=@bborrowed
if(@btotal=0)
begin
rollback transaction
print '借阅失败!'
print'对不起,此书已经没有库存,无法进行本次借书操作!'
end
go

insert into 借阅表(图书编号,借书证号,借书日期,还书日期,归还否)
values('J3',10001,2022-12-12,2022-12-13,'否')


use Library
go
create  procedure ReturnBook
@no char(10),@bid char(10)
as
if not exists(select * from 借阅表 where 借书证号=@no and 图书编号=@bid)
begin
    print'对不起,你没有借阅此书,故而无法进行此次还书操作,请核实!'
end

exec ReturnBook '10002','J1'
select* from 借阅表

create procedure ReturnBook_11
@no char(10),@bid char(10)
as
if not exists(select * from 借阅表 where @no=借书证号 and @bid=图书编号)
begin
    print'你没有借到这本书,无法归还'
end

exec ReturnBook_11 '10001','J3'
select * from 借阅表

  • 23
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
数据库系统概论课程设计之“图书馆数据库管理系统” ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 小组成员: *** QQ:763157698 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ “图书馆数据库备份文件”使用说明: 1、数据库备份文件还原时,应先将同目录下的备份文件 "LibrarySystem" 放置于“D:\LibrarySystem\”目录下; 2、该数据库使用到的所有数据均备份在同目录下的文件 "LibrarySystem" 中,读者可以根据需要还原数据、测试数据; 3、本课程设计附有“图书馆数据库管理系统的所有源代码”,您可以根据需要在“第四章节”至“第七章节”中进行查看,或查看与本课程设计处于同一目录下的 *.sql 源代码文件! 本图书馆管理系统谨根据实际需求所创建创建有如下八个数据表:Book(图书信息表),Dept(学生系部信息表),Major(学生专业信息表),Student(学生信息表),StudentBook(学生借阅图书信息表),Teacher(教师信息表),TeacherBook(教师借阅图书信息表),RDeleted(读者还书信息表)等。这些数据表结合图书馆数据库中的五个存储过程,即实现了普通图书馆的大部分功能。如读者借阅图书功能(Execute RBorrowBook '读者号','图书分类号'),读者归还图书功能(Execute RReturnBook '读者号','图书分类号'),读者续借图书功能(Execute RRenewBook '读者号','图书分类号'),读者查询图书借阅情况功能(Execute RQueryBook '读者号'),读者检索的图书信息功能(Execute RIndexBook '关键字')等。具体的功能表现皆在“第三章、图书馆管理系统功能图例”中有详细的图例说明。 本图书馆管理系统谨根据实际需要,创建了七个触发器,就此,创作者对这些触发器做如下说明: 1、tri_Book 功能表现:只有在图书馆内相关书籍尚有库存的情况下,读者才可以进行借阅操作 2、tri_SborrowNum 功能表现:控制学生的图书借阅量在5本以内(包括5本) 3、tri_SrenewBook 功能表现:控制学生续借图书次数在3次以内(包括3次) 4、tri_SreturnBook 功能表现:将学生的还书信息插入RDeleted表 5、tri_TborrowNum 功能表现:控制教师的图书借阅量在10本以内(包括10本) 6、tri_TrenewBook 功能表现:控制学生续借图书次数在4次以内(包括4次) 7、tri_TreturnBook 功能表现:将教师的还书信息插入RDeleted表 本图书馆管理系统设计思路较为肤浅,但在一定程度上实现了图书馆数据库管理系统的实用功能。初次设计数据库,其中肯定会有不足之处,还望读者谅解!
公司人事管理系统的人事功能需要包括以下基本要求: 1. 员工信息管理:系统需要能够存储和管理员工的基本信息,如姓名、性别、年龄、联系方式、入职日期等。同时,系统还应支持员工信息的查询、修改和删除等操作。 2. 员工档案管理:系统应具备员工档案的管理功能,包括员工证件、学历、工作经历等相关文件的管理和存储。员工档案应与员工信息进行绑定,方便员工查询和管理。 3. 薪资管理:系统需要支持薪资的计算和管理功能,包括根据员工的职位、工作时长、绩效等因素计算薪资,并能生成薪资报表。 4. 考勤管理:系统需要支持员工的考勤管理,包括记录员工的上下班时间、迟到早退情况等,并根据考勤情况进行统计分析。 5. 员工培训管理:系统应支持员工培训计划的制定和管理,包括培训内容、培训时间、培训人员等信息的记录和管理。 6. 员工福利管理:系统需要支持员工福利的管理,包括员工的健康保险、社会保险、带薪假期等福利的记录和管理。 7. 绩效考评管理:系统应支持员工绩效的考评和管理,包括设定评价指标、评定员工绩效等相关功能。 8. 组织架构管理:系统需要支持公司的组织架构管理,包括部门、岗位等的设定和管理,以及员工在组织架构中的归属和调整。 总之,公司人事管理系统的人事功能需要能够全面、灵活地管理员工的基本信息、档案、薪资、考勤、培训、福利、绩效等方面,以提高人力资源的管理效率和精确度。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值