资源描述
. .
1、系统的功能模块图
开场
登录
身份认证
读者
管理员
借还图书
预约图书
图书信息查询
系统维护
预约信息管理
借阅信息管理
读者信息管理
图书信息管理
读者信息管理
2、系统E-R图
3、数据库逻辑构造设计
关系模式表〔红色表示主码,蓝色表示外码〕
读者类型表〔读者类型,可借阅天数,可借阅数量, 续借次数〕
读者〔XX,借阅证号,系别,读者类型,密码〕
管理员〔XX,工号,密码〕
书籍类型(书籍类型编号,书籍类型)
某类书籍(ISBN,书名,作者,编号,价格,出版时间,库存量,在馆数量,书籍类型编号)
书籍〔图书编号,ISBN,书名,书架编号,书籍状态,损坏程度〕〔ISBN相当于书籍类型编号〕
阅览室〔阅览室编号,阅览室名称,阅览室位置〕
书架〔书架编号,阅览室编号〕
预约〔借阅证号,ISBN,预约时间,预约到期时间〕
借阅表〔读者XX,图书编号,借出日期,实际归还日期,到期时间,超出还书天数,续借次数,罚款金额,实缴金额〕
〔编号,名称,联系人,地址,联系〕
管理员表
管理员表〔Administrator〕
名称
别名
数据类型
取值围
默认值
说明
是否为空
工号
ANo
Char(15)
主键
不为空
XX
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
不为空
读者XX
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语句建库与建表
创立图书管理系统数据库
CREATEDATABASELibarySystem
ON
(NAME='library_Data',
FILENAME='d:\sql\data\library.mdf',
SIZE=5MB,
MAXSIZE=50MB,
FILEGROWTH=10%)
LOGON
(NAME='library_Log',
FILENAME='d:\sql\data\library_Log.ldf',
SIZE=2MB,
MAXSIZE=5MB,
FILEGROWTH=1MB)
GO
创立读者身份表
useLibarySystem
GO
createtableReaderType
(ReaderTypechar(4)
check (ReaderTypein('教师','学生'))primarykey,
MaxBorNumtinyint,
MaxBorTimetinyint,
MaxBorCounttinyint
)
GO
创立读者表
useLibarySystem
GO
createtableReader
(ReaderAccountchar(8)primarykey,
ReaderNamevarchar(8),
ReaderPwdchar(6),
ReaderSdeptvarchar(20),
ReaderTypechar(4)
foreignkeyreferencesReaderType(ReaderType)
)
GO
创立管理员表
USELibarySystem
GO
CREATETABLEAdministrator(
ANoCHAR(8)PRIMARYKEY,
ANamevarCHAR(8),
APwdCHAR(6),
);
GO
创立书籍类型表
USELibarySystem
GO
CREATETABLEBookType(
BookTypeIdvarCHAR(10)PRIMARYKEY,
BookTypeTEXT);
GO
创立阅览室表
USELibarySystem
GO
CREATETableReadingRoom(
RoomNumCHAR(20),
RoomNameTEXT,
RoomLocalTEXT,
PRIMARYKEY (RoomNum));
GO
创立书架表
USELibrarySystem
GO
CREATETABLEShelf(
ShelfNumCHAR(20),
RoomNumCHAR(20),
PRIMARYKEY (ShelfNum),
FOREIGNKEY (RoomNum)REFERENCESReadingRoom(RoomNum));
GO
创立表
useLibarySystem
GO
createtablePress
(PressNoChar(10),
PressNameText,
ContactText,
TeleChar(12),
Addrtext,
primarykey(PressNo),
)
GO
创立某类书籍表
USELibarySystem
GO
CREATETableBookSeries(
ISBNCHAR(20),
BookNameTEXT,
AuthorVARCHAR(20),
PressNoVARCHAR(20),
PageNumSMALLINT,
PriceSMALLint,
PublishTimeDATETIME,
BookNumINT,
BookInINT,
SeriesIdVARCHAR(10),
PRIMARYKEY (ISBN),
FOREIGNKEY (SeriesId)REFERENCES
BookType(BookTypeId));
GO
创立图书表
USELibarySystem
GO
CREATETableBook(
BookIdVARCHAR(20),
ISBNCHAR(20),
BookNameTEXT,
ShelfNumCHAR(20),
BookStateVARCHAR(20),
BookDamageSMALLINT,
PRIMARYKEY (BookId),
FOREIGNKEY (ISBN)REFERENCESBookSeries(ISBN),
FOREIGNKEY (ShelfNum)REFERENCESShelf(ShelfNum));
GO
创立预约表
USELibarySystem
GO
CREATETableAppointment(
ReaderAccountCHAR(8),
ISBNCHAR(20),
AppTimeDATETIME,
ExpirationTimeDATETIME,
PRIMARYKEY (ReaderAccount,ISBN),
FOREIGNKEY (ReaderAccount)REFERENCESReader(ReaderAccount),
FOREIGNKEY (ISBN)REFERENCESBookSeries(ISBN));
GO
创立借阅表
USELibarySystem
CREATETableBorrowReturn(
ReaderAccountCHAR(8),
ISBNCHAR(20),
BorrowTimeDATETIME,
DeadlineDATETIME,
ReturnTimeDATETIME,
ExceedingDaysINT,
BorCountINT,
FineSMALLMONEY,
PaidAmountSMALLINT,
PRIMARYKEY (ReaderAccount,ISBN,BorrowTime),
FOREIGNKEY (ISBN)REFERENCESBookSeries(ISBN),
FOREIGNKEY (ReaderAccount)REFERENCESReader(ReaderAccount));
GO
5、对数据库记录进展操作
insert〔举一些例子,其他的那么用交互式SQL语句添加记录〕
;往ReaderType表中添加记录
useLibarySystem;
go
insertinto
ReaderType(ReaderType,MaxBorNum,MaxBorTime,MaxBorCount)
values('学生',8,1,1);
go
insertinto
ReaderType
values('教师',10,2,2);
go
;往Reader表中添加记录
useLibarySystem;
go
insertinto
Reader(ReaderAccount,ReaderName,ReaderPwd,ReaderSdept,ReaderType)
values('19120213','扬','888888','计算机科学与技术','学生');
go
insertinto
Reader
values('20210211','一','888888','计算机科学与技术','教师');
go
insertinto
Reader
values('20210212','二','888888','生物科学技术','教师');
go
insertinto
Reader
values('20210213','三','888888','教育科学学院','教师');
go
update
;将XX为20210211的读者系别更新为数学系
useLibarySystem;
go
updateReader
setReaderSdept='数学'
whereReaderAccount='20210211';
go
delete
;删除XX为’20120102’的读者
useLibarySystem;
go
deletefrom
Reader
whereReaderAccount='20210212';
go
select
〔单表查询〕
;查找XX为‘20210213‘的读者信息
useLibarySystem;
go
select*
fromReader
whereReaderAccount='20210213';
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='19120213');
〔集合查询〕
;查询计算机专业的教师信息
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;
. .word.zl.
展开阅读全文