图书馆数据库系统的模拟练习

本文档展示了如何设计和管理一个图书馆数据库系统,包括图书信息表、读者信息表、图书借阅表和罚款记录表的创建,以及相关数据操作如增加、查询和更新。此外,还涉及了罚款记录的文本说明、图书借阅的日期处理、读者借阅图书的事务处理和存储过程的编写。
摘要由CSDN通过智能技术生成

create database Library
on(
  name='library',
  filename='e:\yangbo\library.mdf',
  size=5,
  filegrowth=15%
)
log on(
  name='library_log',
  filename='e:\yangbo\library_log.ldf',
  size=1MB,
  filegrowth=15%
)

use library
go
--创建图书信息表

create table Book(
  BID     VARCHAR(50) NOT NULL PRIMARY KEY(BID) CHECK(BID LIKE 'ISBN%'),--图书编号,主键,该栏必填,必须以'isbn'开头
  BName   varchar(50) not null,                                         --图书书名,该栏必填
  Author  varchar(50),                                                  --作者姓名
  PubComp varchar(50),                                                  --出版社
  PubDate datetime    check(pubdate<getdate()),                         --出版日期,必须小于当前日期
  BCount  int         check(bcount>1 or bcount=1),                      --现存数量,必须大于等于1
  price   money       check(price>0)                                    --单价,必须大于0
)

--创建读者信息表

create table Reader(
  RID      varchar(50) not null primary key(rid),                       --读者编号,主键,该栏必填
  RName    varchar(50) not null,                                        --读者姓名,该栏必填
  LendNum  int         check(lendnum>0 or lendnum=0),                   --已借书数量,必须大于等于0
  RAddress varchar(50)                                                  --联系地址
)

--创建图书借阅表

create table Borrow(
  RID        varchar(50) not null,                                      --读者编号,复合主键,读者信息表的外键,该栏必填
  BID        varchar(50) not null,                                      --图书编号,复合主键,图书信息表的外键,该栏必填
  LendDate   datetime    not null default(getdate()),                   --借阅日期,复合主键,默认值为当前日期,该栏必填
  WillDate   datetime    ,                                              --应归还日期,必须大于等于借阅日期,默认值为借阅日期+1个月
  ReturnDate datetime                                                   --实际归还日期,默认值为空
)

alter table borrow
add constraint borrow_pk primary key(rid,bid,lenddate)                         --设置复合主键
alter table borrow
add constraint rid_fk foreign key(rid) references reader(rid)                  --设置RID为外键
alter table borrow
add constraint bid_fk foreign key(bid) references book(bid)                    --设置bid为外键
alter table borrow
add constraint default_willdate default(dateadd(mm,1,getdate())) for willdate --应归还日期的默认值
alter table borrow
add constraint willdate_check check(willdate>lenddate)                         --应归还日期的约束


--创建惩罚记录表

create table Penalty(
  RID    varchar(50) not null,                                          --读者编号,复合主键,读者信息表的外键,该栏必填
  BID    varchar(50) not null,                                          --图书编号,复合主键,图书信息表的外键,该栏必填
  PDate  datetime    not null default(getdate()),                       --罚款日期,复合主键,默认值为当前日期,该栏必填
  PType  int,                                                           --罚款类型,1——延期  2——损坏  3——丢失
  Amount money       check(amount>0)                                    --罚金金额,必须大于0
)
alter table penalty
add constraint penalty_pk    primary key(rid,bid,pdate)                 --设置复合主键
alter table penalty
add constraint prid_fk foreign key(rid) references read

  • 8
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值