图书馆一个数据库设计SQL
- 格式:doc
- 大小:30.00 KB
- 文档页数:5
综合设计性实验
为图书馆设计一个数据库,此数据库对每个借阅者保存读者记
录,包括:借书证号、姓名、性别、单位、可借数量。对每本书记录:
书号、书名、作者、出版社。对每本被借出的书有:读者号、借出日
期、应还日期。
可以随时查阅书库中的书籍信息,所有的书籍均由书号唯一标
识;可以随时查阅书籍借还情况,系统约定任何人可以借多本图书,
任何一种图书可以为多人所借,借书证号具有唯一性。
要求:
1.基于《数据库概论》中所学的知识分析该数据库的基本结构,
2.用Transact-sql命令完成如下要求:
(1)创建数据库和数据表,定义每个表的主键和外键,为每个
属性选择合适的数据类型,定义每个属性是否允许空值,是否
有默认值等;
(2)结合具体情况为数据库表设置合理的约束或规则;
(3)如果需要,为数据表设计合理的触发器;
(4)使用SQL语句,在你设计的每个表中插入至少3条数据,
要求记录满足数据约束要求,且尽量真实可信;
(5)自行设计查询要求,给出经常需要用到的查询语句。
3.写出完整的实验报告。
附:实验报告模板
网络工程系综合性实验
实验报告
课程名称 数据库技术与应用
学 号
姓 名 张欢
任课老师 高宁
2012年 11 月
实验名称 图书馆数据库设计
create database library
:创建图书馆数据库
create table reader:创建读者记录数据表
create table book:创建每本书记录数据表
create table rb:创建借出的书数据表
create rule 借出日期_rule:创建借出日期的规则并且绑定
create rule 书号_rule:创建书号约束规则并且绑定
create trigger set_可借数量:创建可借数量触发器
alter table rb add constraint t:约束可借时间3个月
select * from reader:查询reader表所有信息
select * from book:查询book表所有信息
select * from rb:查询rb表所有信息
select * from rb where 姓名='张欢':查询张欢的所有信息
select * from reader,rb:查询读者借书的所有信息
源程序代码:
create database library
go
use library
go
create table reader
(借书证号 char(10)not null primary key,
姓名 nchar(4)not null,
性别 char(1)check(性别 in('男','女')),
单位 char(20),
可借数量 char(1))
use library
go
insert reader
values ('','张欢','男','安徽农业大学','3')
insert reader
values ('','李四','女','经济技术学院','4')
insert reader
values ('','张三','男','安徽医科大学','5')
create table book
(书号 char(16)not null primary key,
书名 char(18)not null,
作者 char(4),
出版社 char(20))
use library
go
insert book
values ('ab123','天龙八部','金庸','新华出版社')
insert book
values ('bc124','呐喊','鲁迅','安徽出版社')
insert book
values ('dc124','数据库','刘卫国','清华大学出版社')
create table rb use library create rule 借出日期_rule create rule 书号_rule use library
(读者号 char(10)unique,
借出日期 datetime not null ,
应还日期 datetime not null)
alter table rb
add constraint t check(应还日期
go
insert rb
values ('1000','','')
insert rb
values ('1001','','')
insert rb
values ('1002','','')
as @借出日期>='1982-01-01'and @借出日期<=getdate()
exec sp_bindrule 借出日期_rule,'rb.借出日期'
as @value like '[a-h]%[0-9]'
exec sp_bindrule 书号_rule,'book.书号'
go
create trigger set_可借数量 on reader
for insert,delete
as
if exists(select * from inserted)
update 可借数量 set 可借数量=可借数量+1 where reader in
(select reader from inserted)
else
update 可借数量 set 可借数量=可借数量-1 where reader in
(select reader from deleted)
select * from reader
select * from book
select * from rb
select * from rb
where 姓名='张欢'
select * from reader,rb
where reader.借书证号=rb.读者号