SQL图书管理系统.docx
- 文档编号:4541725
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:20
- 大小:125.90KB
SQL图书管理系统.docx
《SQL图书管理系统.docx》由会员分享,可在线阅读,更多相关《SQL图书管理系统.docx(20页珍藏版)》请在冰豆网上搜索。
SQL图书管理系统
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语句建库与建表
创建图书管理系统数据库
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('19120123','杨扬','888888','计算机科学与技术','学生');
go
insertinto
Reader
values('20120101','刘一','888888','计算机科学与技术','教师');
go
insertinto
Reader
values('20120102','刘二','888888','生物科学技术','教师');
go
insertinto
Reader
values('20120103','刘三','888888','教育科学学院','教师');
go
update
;将帐号为20120101的读者系别更新为数学系
useLibarySystem;
go
updateReader
setReaderSdept='数学'
whereReaderAccount='20120101';
go
delete
;删除帐号为’20120102’的读者
useLibarySystem;
go
deletefrom
Reader
whereReaderAccount='20120102';
go
select
(单表查询)
;查找帐号为‘20120103‘的读者信息
useLibarySystem;
go
select*
fromReader
whereReaderAccount='20120103';
go
;查询所有学生的信息
useLibarySystem;
go
select*
fromReader
whereReaderType='学生';
go
;查询书架1上的所有图书
useLibarySystem;
go
select*
fromBook
whereShelfNum='1';
go
(连接查询)
;查找读者预约信息
selectReader.ReaderAccount,ReaderName,ReaderSdept,ReaderType,ISBN,AppTime,ExpirationTime
fromReader,Appointment
whereReader.ReaderAccount=Appointment.ReaderAccount;
;查询读者的借阅信息
selectReader.ReaderAccount,ReaderName,ReaderSdept,ReaderType,ISBN,BorrowTime,Deadline
fromReader,BorrowReturn
whereReader.ReaderAccount=BorrowReturn.ReaderAccount;
(嵌套查询)
;查找1号阅览室的所有书架上的书籍
selectBookId,ISBN,BookName
fromBook
whereShelfNumIN
(selectShelfNum
fromShelf
whereRoomNum='1');
;查询书名为数据库的书籍详细信息
select*
fromBookSeries
whereISBNIN
(selectISBN
FROMBook
whereBookNamelike'%数据库%');
;根据输入的学号,列出该同学当前所借图书的详细信息
select*
fromBookSeries
whereISBNin
(selectISBN
fromBorrowReturn
whereReaderAccount='19120123');
(集合查询)
;查询计算机专业的教师信息
select*
fromReader
whereReaderType='教师'
intersect
select*
fromReader
whereReaderSdept='计算机科学与技术';
;查阅读者身份为教师或系别为计算机系的读者
select*
fromReader
whereReaderType='教师'
union
select*
fromReader
whereReaderSdept='计算机科学与技术';
;查询在馆数量大于2或价格低于30的书籍信息
select*
fromBookSeries
whereBookIn>=2
union
select*
fromBookSeries
whereprice<=30;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 图书 管理 系统