资源描述
1、系统功能模块图
开始
登录
身份认证
读者
管理员
借还图书
预约图书
图书信息查询
系统维护
预约信息管理
借阅信息管理
读者信息管理
图书信息管理
读者信息管理
2、系统E-R图
3、数据库逻辑构造设计
关系模式表(红色表达主码,蓝色表达外码)
读者类型表(读者类型,可借阅天数,可借阅数量,续借次数)
读者(姓名,借阅证号,系别,读者类型,密码)
管理员(姓名,工号,密码)
书籍类型(书籍类型编号,书籍类型)
某类书籍(ISBN,书名,作者,出版社编号,价格,出版时间,库存量,在馆数量,书籍类型编号)
书籍(图书编号,ISBN,书名,书架编号,书籍状态,损坏限度)(ISBN相称于书籍类型编号)
阅览室(阅览室编号,阅览室名称,阅览室位置)
书架(书架编号,阅览室编号)
预约(借阅证号,ISBN,预约时间,预约到期时间)
借阅表(读者帐号,图书编号,借出日期,实际归还日期,到期时间,超过还书天数,续借次数,罚款金额,实缴金额)
出版社(出版社编号,名称,联系人,地址,联系电话)
管理员表
管理员表(Administrator)
名称
别名
数据类型
取值范畴
默认值
阐明
与否为空
工号
ANo
Char(15)
主键
不为空
姓名
AName
varChar(8)
密码
APwd
Char(6)
000000
读者身份表
读者身份(ReaderType)
名称
别名
数据类型
取值范畴
默认值
阐明
与否为空
读者类型
ReaderType
Char(4)
“学生”,”教师”
主码
借书上限
MaxBorNum
Tinyint
0-10
6
不为空
最大续借次数
MaxBorcount
TinyInt
0-2
2
最长借书时间
MaxBorTime
Tinyint
2
单位是月
不为空
读者信息表
读者信息(Reader)
名称
别名
数据类型
取值范畴
默认值
阐明
与否为空
借阅证号
ReaderAccount
Char(8)
主码
读者类型
ReaderType
Char(4)
“学生”
,”教师”
外码,外键参照读者身份表Readertype
不为空
读者姓名
ReaderName
varChar(8)
读者密码
ReaderPwd
Char(6)
000000
读者系别
ReaderSdept
varChar(20)
书籍类型表
书籍类型(BookType)
名称
别名
数据类型
取值范畴
默认值
阐明
与否为空
书籍类型编号
BookTypeId
varChar(10)
主键
不为空
书籍类型
BookType
text
出版社表
出版社(Press)
名称
别名
数据类型
取值范畴
默认值
阐明
与否为空
出版社编号
PressNo
Char(10)
名称
PressName
Text
联系人
contact
Text
联系电话
Tele
Char(12)
地址
addr
text
某类书籍表(BookSeries)
某类书籍表(BookSeries)
列名
数据类型
空/非空
约束条件
表达含义
ISBN
char(20)
非空
主键
ISBN
BookName
text
可觉得空
无
书名
Author
varchar(20)
可觉得空
无
作者
PressNo
varchar(20)
可觉得空
外键,参照出版社表PressNo字段
出版社编号
Price
smallmoney
可觉得空
无
价格
PublishTime
datetime
可觉得空
无
出版日期
BookNum
int
可觉得空
无
库存量
BookIn
int
可觉得空
无
在馆数量
SeriesId
varchar(10)
可觉得空
外键,参照书籍类型表SeriesId字段
书籍类型编号
阅览室表
阅览室表(ReadingRoom)
名称
别名
数据类型
取值范畴
默认值
阐明
与否为空
阅览室编号
RoomNum
Char(20)
主键
不为空
阅览室名称
RoomName
Text
阅览室位置
RoomLocal
text
书架表
书架表(Shelf)
名称
别名
数据类型
取值范畴
默认值
阐明
与否为空
书架编号
Shelfnum
Char(20)
主键
不为空
阅览室编号
roomnum
Char(20)
外键,参照阅览室表RoomNum字段
图书信息表
图书信息(Book)
名称
别名
数据类型
取值范畴
默认值
阐明
与否为空
图书编号
BookId
varChar(20)
主键
不为空
ISBN
ISBN
Char(20)
外键,参照某类书籍表
书名
BookName
text
书架编号
Shelfnum
varChar(20)
外键,参照书架表
损坏限度
BookState
varchar(20)
书籍状态
BookDamage
smallint
读者借阅表
读者借阅表(BorrowReturn)
名称
别名
数据类型
取值范畴
默认值
阐明
与否为空
借阅证号
ReaderAcount
Char(15)
主键,外码,参照读者表
不为空
ISBN
ISBN
Char(20)
主码,外码,参照某类书籍表
不为空
续借次数
BorCount
Char(1)
0-2
借出日期
BorrowTime
DateTime
不为空
实际归还日期
ReturnTime
DateTime
不为空
到期时间
Deadline
datetime
超过还书天数
ExceedingDays
罚款金额
Fine
实缴金额
PaidAmount
预约表
预约表(Appointment)
名称
别名
数据类型
取值范畴
默认值
阐明
与否为空
借阅证号
ReaderAccount
Char(15)
主键、外键参照读者表ReaderAccount字段
ISBN
ISBN
Char(20)
主键、外键参照图书表ISBN字段
预约时间
AppTime
Datetime
截止时间
ExpirationTime
datetime
4、SQL语句建库与建表
创立图书管理系统数据库
CREATE DATABASE LibarySystem
ON
(NAME='library_Data',
FILENAME='d:\sql\data\library.mdf',
SIZE=5MB,
MAXSIZE=50MB,
FILEGROWTH=10%)
LOG ON
(NAME='library_Log',
FILENAME='d:\sql\data\library_Log.ldf',
SIZE=2MB,
MAXSIZE=5MB,
FILEGROWTH=1MB)
GO
创立读者身份表
use LibarySystem
GO
create table ReaderType
(ReaderType char(4)
check (ReaderType in ('教师','学生')) primary key,
MaxBorNum tinyint ,
MaxBorTime tinyint ,
MaxBorCount tinyint
)
GO
创立读者表
use LibarySystem
GO
create table Reader
(ReaderAccount char(8) primary key,
ReaderName varchar(8) ,
ReaderPwd char(6) ,
ReaderSdept varchar(20) ,
ReaderType char(4)
foreign key references ReaderType(ReaderType)
)
GO
创立管理员表
USE LibarySystem
GO
CREATE TABLE Administrator(
ANo CHAR(8) PRIMARY KEY,
AName varCHAR(8),
APwd CHAR(6),
);
GO
创立书籍类型表
USE LibarySystem
GO
CREATE TABLE BookType(
BookTypeId varCHAR(10) PRIMARY KEY,
BookType TEXT);
GO
创立阅览室表
USE LibarySystem
GO
CREATE Table ReadingRoom(
RoomNum CHAR(20),
RoomName TEXT,
RoomLocal TEXT,
PRIMARY KEY (RoomNum));
GO
创立书架表
USE LibrarySystem
GO
CREATE TABLE Shelf(
ShelfNum CHAR(20),
RoomNum CHAR(20),
PRIMARY KEY (ShelfNum),
FOREIGN KEY (RoomNum) REFERENCES ReadingRoom(RoomNum));
GO
创立出版社表
use LibarySystem
GO
create table Press
(PressNo Char(10),
PressName Text,
Contact Text,
Tele Char(12),
Addr text,
primary key(PressNo),
)
GO
创立某类书籍表
USE LibarySystem
GO
CREATE Table BookSeries(
ISBN CHAR(20),
BookName TEXT,
Author VARCHAR(20),
PressNo VARCHAR(20),
PageNum SMALLINT,
Price SMALLint,
PublishTime DATETIME,
BookNum INT,
BookIn INT,
SeriesId VARCHAR(10),
PRIMARY KEY (ISBN),
FOREIGN KEY (SeriesId) REFERENCES
BookType(BookTypeId));
GO
创立图书表
USE LibarySystem
GO
CREATE Table Book(
BookId VARCHAR(20),
ISBN CHAR(20),
BookName TEXT,
ShelfNum CHAR(20),
BookState VARCHAR(20),
BookDamage SMALLINT,
PRIMARY KEY (BookId),
FOREIGN KEY (ISBN) REFERENCES BookSeries(ISBN),
FOREIGN KEY (ShelfNum) REFERENCES Shelf(ShelfNum));
GO
创立预约表
USE LibarySystem
GO
CREATE Table Appointment(
ReaderAccount CHAR(8),
ISBN CHAR(20),
AppTime DATETIME,
ExpirationTime DATETIME,
PRIMARY KEY (ReaderAccount,ISBN),
FOREIGN KEY (ReaderAccount) REFERENCES Reader(ReaderAccount),
FOREIGN KEY (ISBN) REFERENCES BookSeries(ISBN));
GO
创立借阅表
USE LibarySystem
CREATE Table BorrowReturn(
ReaderAccount CHAR(8),
ISBN CHAR(20),
BorrowTime DATETIME,
Deadline DATETIME,
ReturnTime DATETIME,
ExceedingDays INT,
BorCount INT,
Fine SMALLMONEY,
PaidAmount SMALLINT,
PRIMARY KEY (ReaderAccount,ISBN,BorrowTime),
FOREIGN KEY (ISBN) REFERENCES BookSeries(ISBN),
FOREIGN KEY (ReaderAccount) REFERENCES Reader(ReaderAccount));
GO
5、对数据库记录进行操作
insert(举某些例子,其她则用交互式SQL语句添加记录)
;往ReaderType表中添加记录
use LibarySystem;
go
insert into
ReaderType(ReaderType,MaxBorNum,MaxBorTime,MaxBorCount)
values('学生',8,1,1);
go
insert into
ReaderType
values('教师',10,2,2);
go
;往Reader表中添加记录
use LibarySystem;
go
insert into
Reader(ReaderAccount,ReaderName,ReaderPwd,ReaderSdept,ReaderType)
values('1913','杨扬','888888','计算机科学与技术','学生');
go
insert into
Reader
values('','刘一','888888','计算机科学与技术','教师');
go
insert into
Reader
values('','刘二','888888','生物科学技术','教师');
go
insert into
Reader
values('','刘三','888888','教诲科学学院','教师');
go
update
;将帐号为读者系别更新为数学系
use LibarySystem;
go
update Reader
set ReaderSdept='数学'
where ReaderAccount='';
go
delete
;删除帐号为’’读者
use LibarySystem;
go
delete from
Reader
where ReaderAccount='';
go
select
(单表查询)
;查找帐号为‘‘读者信息
use LibarySystem;
go
select*
from Reader
where ReaderAccount='';
go
;查询所有学生信息
use LibarySystem;
go
select*
from Reader
where ReaderType='学生';
go
;查询书架1上所有图书
use LibarySystem;
go
select*
from Book
where ShelfNum='1';
go
(连接查询)
;查找读者预约信息
select Reader.ReaderAccount,ReaderName,ReaderSdept,ReaderType,ISBN,AppTime,ExpirationTime
from Reader,Appointment
where Reader.ReaderAccount=Appointment.ReaderAccount;
;查询读者借阅信息
select Reader.ReaderAccount,ReaderName,ReaderSdept,ReaderType,ISBN,BorrowTime,Deadline
from Reader,BorrowReturn
where Reader.ReaderAccount=BorrowReturn.ReaderAccount;
(嵌套查询)
;查找1号阅览室所有书架上书籍
select BookId,ISBN,BookName
from Book
where ShelfNum IN
(select ShelfNum
from Shelf
where RoomNum='1');
;查询书名为数据库书籍详细信息
select *
from BookSeries
where ISBN IN
(select ISBN
FROM Book
where BookName like '%数据库%' );
;依照输入学号,列出该同窗当前所借图书详细信息
select *
from BookSeries
where ISBN in
(select ISBN
from BorrowReturn
where ReaderAccount='1913');
(集合查询)
;查询计算机专业教师信息
select *
from Reader
where ReaderType='教师'
intersect
select *
from Reader
where ReaderSdept='计算机科学与技术';
;查阅读者身份为教师或系别为计算机系读者
select *
from Reader
where ReaderType='教师'
union
select *
from Reader
where ReaderSdept='计算机科学与技术';
;查询在馆数量不不大于2或价格低于30书籍信息
select *
from BookSeries
where BookIn>=2
union
select *
from BookSeries
where price<=30;
展开阅读全文