二期 , 第二章 数据库的实现---- 课后作业--- 创建图书馆管理系统数据库

 -- 创建数据库  Library  
  


use master
GO
IF exists (select* from sysdatabases where name='Library')
drop Database Library  --删除数据库
create database Library


on(
name ='Library_data',
filename ='E:\作业\Library_data.mdf',
size=5MB,
maxsize=100mb,
filegrowth=15%
)
log on
(
name='Library_log',
filename ='E:\作业\Library_log.ldf',
size=1MB,


filegrowth=15%


)




  -- 1. 创建表  学生信息表
use Library
  if exists (select *from sysobjects where name='Book')
  drop table Book
  


  create table Book(
  
  BID nvarchar(32) not null,
  BName nvarchar(32) not null,
 Author varchar(18) not null,
   PubComp nvarchar(30) ,
   PubDate datetime ,
   BCount int ,
   Price money 
   )


      --  添加主键约束(将BID 作为主键)
   alter table Book
   add constraint pk_BID primary key (BID)
  
   --  必须以“ISBN” 开头
   ALTER TABLE Book
   add constraint ck_BID check (BID='ISBN%')




   --  添加检查约束 ,出版日期 必须小于当前日期 
      ALTER TABLE Book
   add constraint ck_PubDate check (PubDate

   -- 现存数量,必须大于等于1 
        ALTER TABLE Book
   add constraint ck_BCount check (BCount>=1)


   -- 单价, 必须大于0
           ALTER TABLE Book
   add constraint ck_Price check (Price>0)










   ---- 2.  创建 读者信息表 
   use Library
if exists (select *from sysobjects where name='Reader')
drop table Reader
create table Reader(
  
    RID nvarchar(32) not null,
RName nvarchar(32) not null,
LendNum int ,
RAddress varchar(32) 
   ) 
       

    --  添加主键约束(将RID 作为主键)
   alter table Reader
   add constraint pk_RID primary key (RID)


   -- 已借书数量  必须大于0
            ALTER TABLE Reader
   add constraint ck_LendNum check (LendNum >=0)


















    --  3 . 创建 图书借阅表

  use Library
if exists (select *from sysobjects where name='Borrow')
drop table Borrow
create table Borrow(
  
    RID nvarchar(32) not null,
BID nvarchar(32) not null,
LendDate datetime not null,
WillDate datetime,
ReturnDate datetime
   ) 
   




   --  读者信息表的外键 
   alter table Borrow 
   add constraint fk_RID foreign key (RID) references Reader(RID)
   
   -- 图书信息表的外键


   ALTER TABLE Borrow
ADD CONSTRAINT FK_BID FOREIGN KEY (BID) REFERENCES Book(BID)


  -- 添加借阅日期 复合主键 (将LendDate作为主键)
    alter table Borrow
   add constraint pk_LendDate primary key (LendDate)


   -- 借阅日期,默认值为当前日期 


 
       alter table Borrow
   add constraint df_LendDate default(GetDate()) for LendDate


   --  应归还日期 ,必须大于等于借阅日期


   ALTER TABLE Borrow
ADD CONSTRAINT CK_WillDate CHECK (WillDate >=GetDate())


-- 应归还日期, 默认值为借阅日期+1个月
    alter table Borrow
   add constraint df_WillDate default(DateAdd(mm,1,getdate())) for WillDate




   -- 实际归还日期 ,默认值为空


      alter table Borrow
   add constraint df_ReturnDate default(null) for ReturnDate




   --  4. 创建 罚款记录表
      use Library
if exists (select *from sysobjects where name='Penalty')
drop table Penalty
create table Penalty(
  
    RID nvarchar(32) not null,
BID nvarchar(32) not null,
PDate datetime not null,
PType int,
Amount money
   ) 


   -- 复合主键,读者信息表的外键
      alter table Penalty
   add constraint fk_RIDd foreign key (RID) references Reader(RID)


   -- 复合主键 ,图书信息表的外键 
      alter table Penalty 
   add constraint fk_BIDd foreign key (BID) references Book(BID)




   -- 添加复合主键,将PType作为主键


       alter table Penalty
   add constraint pk_PDate primary key (PDate)




   -- 罚款日期, 默认值为当前日期  


         alter table Penalty
   add constraint df_PDate default(GetDate()) for PDate






   -- 罚款类型 ,1- 延期 ,2-损坏,  3- 丢失 
   ALTER TABLE Penalty
ADD CONSTRAINT CK_PType  CHECK (1='延期'or 2='损坏' or 3='丢失')


-- 罚款金额 ,必须大于0 
ALTER TABLE Penalty
ADD CONSTRAINT CK_Amount  CHECK (Amount>0)

你可能感兴趣的:(二期 , 第二章 数据库的实现---- 课后作业--- 创建图书馆管理系统数据库)