根据调研选定实体及相应属性画出E-R图

图书借阅系统数据库mysql 图书借阅数据库表_数据库

图书借阅系统数据库mysql 图书借阅数据库表_图书借阅系统数据库mysql_02

2、将E-R模型转换为对应关系模型,并指出主码和外码  

图书book(书号,类别,出版社,作者,书名,定价,备注);

读者reader(编号,姓名,单位,性别,电话);

借阅borrow(书号,读者编号,借阅日期,还书日期)。

3. 建数据库及表,定义各属性的域 。并完成主码、外码的定义。    

根据上面的表结构,要求:① 对每个属性选择合适的数据类型;② 定义每个表的主码、是否允许空值和默认值等列级数据约束;③ 对每个表的名字和表中属性的名字尽可能用英文符号标识。

实现相关约束(预习自学内容):①建立上述三个表的联系,即实现:借阅表与图书表之间、借阅表与读者表之间的外码约束;② 实现读者性别只能是“男”或“女”的约束等。

(1)新建数据库
 CREATE DATABASE Book_Reader_DB_20170513
 CONTAINMENT = NONE
 ON  PRIMARY
(
    NAME = 'Book_Reader_DB_20170513',
    FILENAME = 'C:\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\Book_Reader_DB_20170513.mdf' ,
    SIZE = 8192KB ,
    MAXSIZE = 2048GB,
    FILEGROWTH = 65536KB
)
LOG ON
(
    NAME = 'Book_Reader_DB_20170513_log',
    FILENAME = 'C:\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\Book_Reader_DB_20170513_log.ldf' ,
    SIZE = 8192KB ,
    MAXSIZE = 2048GB ,
    FILEGROWTH = 65536KB
)
(2)新建图书表
【操作语句】
            create table Book
(
    Bid char(6) primary key,
    Btype nvarchar(10) not null,
    Bname nvarchar(50) not null,
    Bauthor nvarchar(20) not null,
    Pressname nvarchar(30) not null,
    Bprice float not null ,
    Btip nvarchar(50)
)
(3)新建读者表
【操作语句】
create table Reader
(
    Rid char(8) primary key,
    Rname nvarchar(10) not null,
    Rsex nchar(2) not null check(Rsex='男' or Rsex='女'),
    Rdepartment nvarchar(20) not null,
    Rnumber char(11) 
)
(4)新建借阅表
【操作语句】
      create table RB
(
        Rid char(8) foreign key references Reader(Rid),
        Bid char(6) foreign key references Book(Bid),
        BorrowDate datetime not null default getdate(),
        ReturnDate datetime,
        primary key(Rid, Bid)
)


 

4、使用inesert语句向表中插入适当数据

--向Reader表插入数据:
                  insert Reader values('2017258','东方','女','软件学院','12345677654'),
('2017290','西门吹雪','男','软件学院','24190520724'),
('2017250','上官','女','软件学院','35729264967'),
('2017345','南宫问天','男','计算机学院','35705724064'),
('2017336','北冥雪','女','计算机学院','19036330639')
 
--向Book表插入数据:
insert Book values('111000','计算机','计算机组成原理','盖茨','清华出版社',32.8,'出版于2012年'),
('111110','计算机','计算机网络','扎克','清华出版社',28.2,'出版于2015年'),
('111120','计算机','计算机发展史','艾比恩姆','清华出版社',30.6,'出版于2013年'),
('111119','数据库','SQL Server从入门到精(fang)通(qi)','王琳','中国人民大学出版社',32.8,'出版于2012年'),
('111205','数据库','MY SQL实践','苏铭','中国科技大学出版社',38.3,'出版于2016年'),
('111250','操作系统','Linux就该这么学','托沃兹','北京大学出版社',32.1,null)
--向RB表(借阅表)插入数据:
insert RB values('2017258','111000','2018-10-28','2018-11-13'),
('2017258','111120','2018-10-28',null),
('2017290','111119','2018-10-25','2018-11-27'),
('2017250','111119','2018-10-24','2018-11-28'),
('2017336','111205','2018-10-28','2018-11-13'),
('2017345','111000','2018-10-28','2018-11-13'),
('2017345','111250','2018-10-10','2018-10-28')

 update和alter的使用:

1)在实验一的基础上使用数据定义语言在图书表中增加两个属性:数量和购买日期。

【定义语句】

              alter table Book add Bcount int not null default 0

alter table Book add Bbuytime datetime

【实验结果】

图书借阅系统数据库mysql 图书借阅数据库表_SQL_03

图书借阅系统数据库mysql 图书借阅数据库表_Server_04

 

(2)使用update语句来修改图书表中的数量和购买日期数据
【操作语句】
update Book set Bcount=200, Bbuytime='2015-2-3' where Btype='计算机'
update Book set Bcount=300, Bbuytime='2015-3-5' where Btype='数据库'
update Book set Bcount=500, Bbuytime='2017-7-7' where Btype='操作系统'