数据库详细设计说明书.docx
《数据库详细设计说明书.docx》由会员分享,可在线阅读,更多相关《数据库详细设计说明书.docx(24页珍藏版)》请在冰豆网上搜索。
数据库详细设计说明书
1.1目的
本文为图书馆管理课程设计SQLServer功能规范说明书。
本说明书将:
描述数据库设计的目的
说明数据库设计中的主要组成部分
说明数据库设计中各功能的实现
1.2内容
本文档主要内容包括对数据库设计结构的总体描述,对数据库中各种对象的描述(包括对象的名称、对象的属性、对象和其他对象直接的关系)。
本文档中包含对以下数据库内容的描述:
数据表
视图
存储过程
触发器
约束
在数据库主要对象之外,本文还将描述数据库安全性设置、数据库属性设置和数据库备份策略,为数据库管理员维护数据库安全稳定地运行提供参考。
1.3与其他项目的关联
本项目的数据库设计与本项目(Web部分和Windows部分)功能密切相关。
本案例项目的数据库将按照项目程序部分的功能需求而设计,数据库设计将配合设计案例的程序部分,以实现一个功能完备的真实环境内的应用。
表
1.4表设计概述
根据设计的系统功能,数据库将以图书信息为中心存储相关数据,配合SQLServer数据库系统中提供的数据管理,实现图书的借阅、归还、续借及系统设置等业务功能。
数据库设计将以存储读者信息的读者表为基础,连接多张相关表以实现对以下关系的支持:
顾客浏览记录
顾客订购记录
顾客退订记录
顾客付款记录
顾客对花卉的评价
顾客对花卉的建议及留言
。
图01
1.5顾客用户信息表(ReaderInfo)
概述
顾客用户信息表用于记录顾客基本信息,并作为基础表与其他表连接。
表定义
读者用户信息表定义如表01所示。
表01
字段
类型
可否为空
备注
Username
nvarchar(10)
否
ID
int
否
Passwd
char(8)
否
Name
nvarchar(10)
可
Sex
char
(2)
否
Age
int
可
StuNum
Numeric
可
PlaceStrand
nvarchar(50)
可
PlaceClass
nvarchar
可
ValidCard
nvarchar(50)
否
BookCard
nvarchar(10)
可
CreateTime
datetime
可
ExpiredTime
datetime
可
主键
用户信息表的主键是用户信息表编号字段,类型为整型,设置自动增量。
。
约束
无
索引
主键用户信息ID具有自动创建的聚集索引。
1.6管理员用户信息表(UserInfo)
概述
管理员用户信息表用于记录系统管理员的各项资料。
表中都记录了管理员的账号和密码,是各用户的详细记录。
。
表定义
管理员用户信息表定义如表02所示。
表02
字段
类型
可否为空
备注
ID
Numeric
不否
Username
nvarchar(10)
不否
Passwd
char(8)
不否
Type
nvarchar(14)
不否
主键
管理员用户信息表的主键是管理员用户ID号,类型为整型,设置自动增量。
约束
无其他约束。
索引
主键字段管理员编号具有自动创建的聚集索引。
用户类别表(ReaderType)
读者类别表用于记录顾客信息,包括名字、地址等。
表定义
读者类别表定义如表03所示。
表03
字段
类型
可否为空
备注
ID
int
否
Name
nvarchar(10)
否
ReaderID
int
否
Canborrow
int
可
主键
读者类别表的主键是读者表ID字段,类型为整型,设置自动增量。
约束
无其他约束。
索引
主键字段薪资编号具有自动创建的聚集索引。
花束信息表(BookInfo)
图书信息表用于记录花束信息(花束名称、花束等),通过字段花束类别号与花束类别表关联。
表定义
图书信息表定义如表04所示。
表04
名称
类型
可否为空
备注
ID
nvarchar(20)
否
Name
nvarchar(50)
否
Typeid
int
可
State
binary
可
Creattime
datetime
否
Price
money
可
Press
nvarchar(50)
否
IsCancellation
binary
可
IDCancellation
int
可
Note
nvarchar(50)
可
Author
nvarchar(10)
可
Page
int
可
主键
花束信息表的主键是花束编号字段,类型为整型。
约束
花束信息表中的图书编号不可相同;花束信息表中的状态类型字段只能取“被借”、“续借”、“以还”。
索引
主键字段考勤编号具有自动创建的聚集索引。
花束类别表(BookType)
花束类别表用于记录图书的类别。
图书类别表中的基本信息包括:
花束的类别、花束的花语,花束的价格。
表定义
图书类别表定义如表05所示。
表05
字段
类型
可否为空
备注
Typeid
int
否
Typename
nvarchar(50)
否
主键
花束类别表的主键是Typeid字段,类型为整型,设置自动增量。
约束
订购开始时间应小于付款结束时间;
索引
主键字段请假申请编号具有自动创建的聚集索引。
1.7花卉库存表(BookStock)
概述
花卉库存表用于花卉总库存的记录。
库存表中的基本信息包括:
花卉ID。
通过字段,图书ID与花卉信息表关联。
表定义
图书库存表定义如表06所示。
表06
字段
类型
可否为空
备注
ID
int
否
BookID
nvarchar(20)
否
索引
主键字段加班申请编号具有自动创建的聚集索引。
表定义
借书表定义如
表07所示。
表07
字段
类型
可否为空
备注
ID
Numeric
否
BookID
nvarchar(20)
否
CardID
Numeric
可
BorrowTime
datetime
否
ReturnTime
datetime
否
IsReturn
nvarchar(10)
否
索引
主键字段业绩评定编号具有自动创建的聚集索引。
1.8评价表(Evaluate)
概述
评价表用于保存顾客对花卉看法的记录。
评价表中的基本信息包括:
评价ID、花卉ID、评价等。
表定义
评价表定义如表09所示。
表09
字段
类型
可否为空
备注
ID
int
否
BookID
int
否
ReaderID
nvarchar(20)
否
Evaluate
nvarchar(50)
主键
评价表的主键是评价编号字段,类型为整型,设置自动增量。
约束
无其他约束。
索引
主键字段评价编号具有自动创建的聚集索引。
1.9花卉证表(BookCard)
概述
花卉证表用于记录图书证ID信息。
花卉证表的基本信息包括:
花卉证表编号、顾客编号等。
表定义
图书证表定义如表012所示。
表012
字段
类型
可否为空
备注
ID
Numeric
否
ReaderID
int
否
Borrowed
int
否
主键
图书证表的主键是图书证ID编号字段,类型是整型,设置自动增量。
约束
无。
索引
主键字段图书证表编号具有自动创建的聚集索引。
1.10留言表(Message)
概述
留言表用于记录顾客对花卉相关的留言。
留言表包含的主要内容有:
留言表编号、顾客编号。
表定义
留言表定义如表013所示。
表013
名称
类型
可否为空
说明
备注
ID
int
否
业绩评定子项目编号
ReaderID
nvarchar(20)
否
业绩评定编号
details
nvarchar
否
项目内容
主键
留言表编号。
约束
无其他约束。
索引
主键字段留言表编号具有自动创建的聚集索引。
1.11系统设置表(SystemSet)
概述
系统设置表用于系统各详细设置信息。
系统设置表包含的主要内容有:
用户权限设置、赔偿价格参照、公告、证件相关各信息和备份恢复等。
表定义
系统设置表定义如表013所示。
表013
名称
类型
可否为空
说明
备注
ID
int
否
UserPermissionSet
nvarchar(10)
否
Overdatepoint
money
否
lostPrice
money
可
RenewTime
datetime
可
BackupSet
datetime
Announce
nvarchar(50)
CardReCost
money
Cardfillprice
money
CardReTime
datetime
ModifyPerson
nvarchar(10)
Modifytime
datetime
主键
系统设置表编号。
约束
无其他约束。
索引
主键字段系统设置表编号具有自动创建的聚集索引。
1.12各表SQL代码示例
管理员用户信息表(UserInfo)
createtableUserInfo
(
IDNumericidentity(1001,1)notnull,
Usernamenvarchar(10)notnull,
Passwdchar(8)notnull,
Typenvarchar(14)check(Type='花卉管理员'orType='系统管理员')notnull,
constraintpk_UserInfo_idprimarykey(ID)
)
用户用户信息表(ReaderInfo)(普通用户)
createtableReaderInfo
(
Usernamenvarchar(10)notnull,
IDintnotnull,
Passwdchar(8)notnull,
Namenvarchar(10)notnull,
Sexchar
(2)check(Sex='男'orSex='女')notnull,
Ageint,
StuNumNumeric,
PlaceStrandnvarchar(50),
PlaceClassnvarchar(50),
ValidCardnvarchar(50),
BookCardnvarchar(10),
CreateTimedatetimenotnull,
ExpiredTimedatetimenotnull,
constraintpk_ReaderInfo_idprimarykey(ID)
)
顾客类别表(ReaderType)
CreatetableReaderType
(
IDint,
Namenvarchar(10),
ReaderIDintnotnull,
Canborrowint,
constraintpk_ReaderType_idprimarykey(ID)
)
altertableReaderType
addconstraintfk_ReaderType_ReaderInfoforeignkey(ReaderID)
referencesReaderInfo(ID);
*花卉信息表(BookInfo)
createtableBookInfo
(
IDnvarchar(20)notnull,
Namenvarchar(50),
Typeidint,
Statebinary,
Creattimedatetime,
Pricemoney,
Pressnvarchar(50),
IsCancellationbinary,
IDCancellationint,
Notenvarchar(50),
Authornvarchar(10),
Pageint,
constraintpk_BookInfo_idprimarykey(ID)
)
altertableBookInfo
addconstraintfk_BookInfo_BookTypeforeignkey(Typeid)
referencesBookType(Typeid);
花卉类别表(BookType)
createtableBookType
(
Typeidint,
Typenamenvarchar(50),
constraintpk_BookType_idprimarykey(Typeid)
)
花卉库存表(BookStock)
CreatetableBookStock
(
IDint,
BookIDnvarchar(20)notnull,
constraintpk_BookStock_idprimarykey(ID)
)
altertableBookStock
addconstraintfk_BookStock_BookInfoforeignkey(BookID)
referencesBookInfo(ID);
花卉订购表(BookBorrow)
createtableBookBorrow
(
IDNumeric,
BookIDnvarchar(20),
CardIDNumeric,
BorrowTimedatetime,
ReturnTimedatetime,
IsReturnnvarchar(10),
constraintpk_BookBorrow_idprimarykey(ID)
)
altertableBookBorrow
addconstraintfk_BookBorrow_BookInfoforeignkey(BookID)
referencesBookInfo(ID);
花卉订购表LendRoom
(
IDint,
Namenvarchar(10),
LendRoomBookIDnvarchar(20),
constraintpk_LendRoom_idprimarykey(ID)
)
altertableLendRoom
addconstraintfk_LendRoom_LendRoomBookforeignkey(BookID)
referencesBookInfo(BookID);
花卉支付籍表LendRoomBook
CreatetableLendRoomBook
(
IDnvarchar(20)notnull,
BookIDintnotnull,
BookCountint,
BookStatebinary,
constraintpk_LendRoomBook_idprimarykey(ID)
)
altertableLendRoomBook
addconstraintfk_LendRoomBook_BookInfoforeignkey(BookID)
referencesBookInfo(ID);
用户验证表BookCard
CreatetableBookCard
(
IDNumeric,
ReaderIDintnotnull,
Borrowedint,
constraintpk_BookCard_idprimarykey(ID)
)
altertableBookCard
addconstraintfk_BookCard_ReaderInfoforeignkey(ReaderID)
referencesReaderInfo(ID);
留言表Message
createtableMsssage
(
IDint,
ReaderIDnvarchar(20)notnull,
detailsnvarchar(50)notnull,
constraintpk_Msssage_idprimarykey(ID)
)
altertableMsssage
addconstraintfk_Msssage_ReaderInfoforeignkey(ReaderID)
referencesReaderInfo(ID);
系统设置表SystemSet
CreatetableSystemSet
(
IDint
UserPermissionSetnvarchar(10)
Overdatepointmoney
lostPricemoney
RenewTimedatetime
BackupSetdatetime
Announcenvarchar(50)
CardReCostmoney
Cardfillpricemoney
CardReTimedatetime
ModifyPersonnvarchar(10)
Modifytimedatetime
constraintpk_SystemSet_idprimarykey(ID)
)
视图
1.13系统设置表(SystemSet)
概述
此视图通过左外连接员工和部门表得到了员工的详细信息,其中包括员工的基本信息、员工的部门信息和员工经理信息。
Web用户具有查看的权限。
基表
BookInfo
LendRoomBook
视图包含字段
dbo.BookInfo.ID
dbo.BookInfo.Name
dbo.LendRoomBook.Times
dbo.BookInfo.Typeid
dbo.BookInfo.Price
dbo.BookInfo.Press
dbo.BookInfo.Note
dbo.BookInfo.Author
dbo.BookInfo.State
dbo.BookInfo.Page
dbo.BookInfo.Creattime
代码示例:
SELECTdbo.BookInfo.ID,dbo.BookInfo.Name,dbo.LendRoomBook.Times,dbo.BookInfo.Typeid,dbo.BookInfo.Price,dbo.BookInfo.Press,dbo.BookInfo.Note,
dbo.BookInfo.Author,dbo.BookInfo.State,dbo.BookInfo.Page,dbo.BookInfo.Creattime
FROMdbo.BookInfoINNERJOIN
dbo.LendRoomBookONdbo.BookInfo.ID=dbo.LendRoomBook.BookID
存储过程
1.14数据库备份
概述
系统备份到D盘
USE[LMS_xili]
GO
/******Object:
StoredProcedure[dbo].[backup00]ScriptDate:
06/17/201108:
53:
13******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
ALTERproc[dbo].[backup00]
as
BACKUPDATABASELMS_xili
TODISK='d:
\dbBackTest.bak'
1.15数据库还原
系统从D盘备份中还原数据库
USE[LMS_xili]
GO
/******Object:
StoredProcedure[dbo].[restore00]ScriptDate:
06/17/201108:
53:
22******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
ALTERproc[dbo].[restore00]
as
restoreDATABASELMS_xili
fromDISK='d:
\dbBackTest.bak'
1.16清空表
清空bookborrowreturn这张表
USE[LMS_xili]
GO
/******Object:
StoredProcedure[dbo].[sp_clearBookBorrowReturn]ScriptDate:
06/17/201108:
53:
29******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
ALTERproc[dbo].[sp_clearBookBorrowReturn]
as
truncatetableBookBorrowReturn
1.17清空表
清空BookInfo这张表
USE[LMS_xili]
GO
/******Object:
StoredProcedure[dbo].[sp_clearBookInfo]ScriptDate:
06/17/201108:
53:
35******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
ALTERproc[dbo].[sp_clearBookInfo]
as
truncatetableBookInfo
1.18清空表
清空LendRoomBook这张表
USE[LMS_xili]
GO
/******Object:
StoredProcedure[dbo].[sp_clearLend]ScriptDate:
06/17/201108:
53:
44******/
SETANSI_N