图书馆一个数据库设计SQL

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

综合设计性实验

为图书馆设计一个数据库,此数据库对每个借阅者保存读者记录,包括:借书证号、姓名、性别、单位、可借数量。对每本书记录:书号、书名、作者、出版社。对每本被借出的书有:读者号、借出日期、应还日期。

可以随时查阅书库中的书籍信息,所有的书籍均由书号唯一标识;可以随时查阅书籍借还情况,系统约定任何人可以借多本图书,任何一种图书可以为多人所借,借书证号具有唯一性。

要求:

1.基于《数据库概论》中所学的知识分析该数据库的基本结构,

2.用Transact-sql命令完成如下要求:

(1)创建数据库和数据表,定义每个表的主键和外键,为每个属性选择合适的数据类型,定义每个属性是否允许空值,是否有默认值等;

(2)结合具体情况为数据库表设置合理的约束或规则;

(3)如果需要,为数据表设计合理的触发器;

(4)使用SQL语句,在你设计的每个表中插入至少3条数据,要求记录满足数据约束要求,且尽量真实可信;

(5)自行设计查询要求,给出经常需要用到的查询语句。

3.写出完整的实验报告。

附:实验报告模板

网络工程系综合性实验

实验报告

课程名称数据库技术与应用

学号 10539013 姓名张欢

任课老师高宁

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 ('10539013','张欢','男','安徽农业大学','3')

insert reader

values ('10539014','李四','女','经济技术学院','4')

insert reader

values ('10539015','张三','男','安徽医科大学','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

(读者号char(10)unique,

借出日期datetime not null,

应还日期datetime not null)

alter table rb

add constraint t check(应还日期

use library

go

insert rb

values ('1000','2012.09.11','2012.11.11')

insert rb

values ('1001','2012.10.08','2012.12.08')

insert rb

values ('1002','2012.10.24','2012.12.24')

create rule借出日期_rule

as@借出日期>='1982-01-01'and@借出日期<=getdate() exec sp_bindrule借出日期_rule,'rb.借出日期'

create rule书号_rule

as@value like'[a-h]%[0-9]'

exec sp_bindrule书号_rule,'book.书号'

use library

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

相关文档
最新文档