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