1、系统平台的安全性体现在操作系统的安全性、 计算机系统的安全性和网络体系的安全性等方面。6.完整性要求系统完整性要求系统中数据的正确性以及相容性。可通过建立主、外键,使用 约束,或者通过使用触发器和级联更新。check四.概念结构设计缩短借阅者的等待时间,减做到高效、智能系统开发的总体目标是实现图书馆管理的系统化和自动化,轻工作人员的工作量,方便工作人员对它的操作, 提高管理的质量和水平,化管理,从而达到提高图书管理效率的目的。(概念模型)的过概念设计阶段主要是将需求分析阶段得到的用户需求抽象为信息结构 程,它是整个数据库设计的关键。图书借阅系统的E-R图E R图各实体的属性如下所示:Book
2、Publish”图书:Book(BooklD, BookNo, BookName, BookWriter,BookDate,BookClass,BookState,BookRNo)读者:Reader(ReaID,ReaName,ReaSex,ReaNo,ReaLBID, ReaDe p, ReaGrade, Rea Pref,ReaDate, Reasx)管理员:Man eger (MID,MName,MSex)馆室: Room(RoomNo,RoomMID,RoomNum,RoomAddre)借阅信息:Borrow(BooklD,ReaderlD,BookName,BookWriter, O
3、utdate,YHdate)借阅历史:History(BooklD,ReaderlD,BookName,BookWriter, Outdate,In date,YHdate)罚款信息:Fi ne (BooklD,ReaderlD,BookName,Outdate,l ndate,Fi ne, CLState,MID)五.逻辑结构设计E-R图转换E-R图以上的概念设计阶段是独立于任何一种数据模型的,但是逻辑设计阶段就与选用的 DBMS品发生关系了,系统逻辑设计的任务就是将概念设计阶段设计好的基本 为选用DBM萨品所支持的数据模型相符合的逻辑结构。具体内容包括数据组织(将 转换成关系模型、模型优化
4、、数据库模式定义、用户子模式设计) 、数据处理(画出系统功能模块图)两大任务。将图书借阅E-R图转换为关系模型图书列名数据类型可否为空说明BooklDCharnot null图书编号BookNo图书的索书号BookName图书的书名BookWriter图书作者Book Pulish图书出版社BooknumSmallintNot null图书数量BookDateDate出版日期BookClass图书的分类Booknumssmallint图书可借数量BookState图书是否可借BookRNo图书所在馆室号、+ -bz 读者RealD读者编号ReaName读者姓名ReaSex读者性别ReaNo读者
5、学号ReaDep读者所在学院Rea Pref读者所属专业ReaGrade读者的年级ReaDate办证日期ReaBs已借本数ReastateNot nnll借书状态Reasx借书上限管理员MID主键管理员编号MName管理员姓名MSex管理员性别馆室RoomNo馆室号RoomMID馆室管理员编号Roomnum馆室拥有图书数目RoomAddre馆室地址RoomT ype.馆室类型借阅信息ReaIDBookID图书名作者Outdate借阅时间Indate归还时间YHdate应还时间Fine罚款金额CLState处理状态MID六数据库的实施创建数据库及表格管理员基本信息表的建立: create tab
6、le Maneger(MID char(10) primary key, MName char(10) not null, MSex char(2), check(MSex = 男 or MSex = 女) ) 图书馆室基本信息表的建立: check (BooknumBooknums ), foreign key(BookRNo) references Room(RoomNo)on delete cascade on update cascade ,)读者基本信息表的建立:create table Reader( ReaID ReaName ReaSexReasx smallint not n
7、ull, ReaBs smallint not null, ReaDep ReaGradeReaPrefReastate char (5) not null default 可借 ,foreign key(ReaLBID) references ReaderType(LBID)on delete cascade on update cascade , check(ReaSex =男 or ReaSex =女) (6)借阅基本信息表的建立: create table Borrow(CLState primary key(BookID,ReaID), foreign key(MID) refere
8、nces Maneger(MID)on delete cascade on update cascade )建立视图1)用于查询图书基本信息的视图定义如下:create view Bookview ( 索书号 , 书名 , 作者 , 出版社 , 图书状态 ) asselect BookNo,BookName,BookWriter,BookPublish,BookState from Book2)用于读者基本信息查询的视图定义如下:create view Readerview ( 读者姓名 ,类型 ,学院 , 专业 ,办证日期 ) as select ReaName,ReaType,ReaDep
9、,ReaPref,ReaDatefrom Reader3)用于显示当前借阅基本信息的视图定义如下:create view Borrowview ( 读者编号 , 书名 ,作者 , 借阅日期 , 到期日期 ) asselect ReaID,BookName,BookWriter,Outdate,YHdatefrom Borrow,Bookwhere Borrow.BookID=Book.BookID and Borrow.Indate is null4)用于借阅历史信息查询的视图定义如下:create view Historyview ( 读者编号 ,书名 ,借阅日期 ,归还日期 )assele
10、ct ReaID,BookName,Outdate,Indatewhere Borrow.BookID=Book.BookID and Borrow.Indate is not null5)用于查询罚款信息的视图定义如下:create view Fineview ( 读者编号 ,书名,借阅日期 ,归还日期 ,罚款 ,处理状态 ) as select ReaID,BookName,Outdate,Indate,Fine,CLStatewhere Borrow.BookID=Book.BookID and Fine is not null建立索引create clustered index Boo
11、kPublish on Book(BookPublish); create clustered index ReaDep on Reader(ReaDep);建立触发器当在中增加一条借阅记录时 ,书的可借数量减少一本,修改读者 ,并检查读者状态 create trigger Borrow_insert1on Borrowfor insertdeclare BookID char(9) declare ReaID char(9) select ReaID=ReaID from insertedselect BookID=BookID from insertedSelect Reastate =R
12、eastateFrom ReaderWhere ReaID =ReaIdIf(Reastate = 不可借 BeginRaiserror ( 该学生状态不可借书 ,16,1)Rollback transactionEnd update Bookset Booknums=Booknums-1 where BookID=BookID update Reader set ReaBs=ReaBs+1where ReaID =ReaID 当读者达到借书上限,设置借书状态为不可借create trigger Reader _updateon Readerfor updatedeclare ReaBs sm
13、allint select ReaBs =ReaBs from inserteddeclare ReaID char(9)select ReaID=ReaIDfrom insertedSelect Reasx =Reasxwhere BookID=BookIDIf(Reasx =ReaBs )update Readerset Reastate = where ReaID =ReaID End 还书的时候,书的可借数量增加一本,修改读者状态create trigger Borrow_insertWhere ReaID =ReaId If(Reastate = 超期 Raiserror ( 该学生
14、状态借书超期 ,16,1) Rollback transactionset Booknums=Booknums+1where BookID=BookID update Reader set ReaBs=ReaBs-1where ReaID =ReaID存储过程1.Book_l nsert 的定义:CREATE PROCEDURE Book_lnsertBookPublish char(20),BookClass char(20),Booknums smallint, Booknum smallint,BookState char(10),BookRNo char(5) as insert in
15、to Book values(BookID ,BookNo,BookName,BookWriter ,BookPublish ,BookDate,BookClass ,BookState ,BookRNo, Booknums,Booknum );2.Reader_lnsert的定义:CREATE PROCEDURE Reader_lnsertReaBs smallint, Reastate char(5),Reasx smallint, as insert into Reader values( ReaID , ReaName, ReaSex,ReaNo ,ReaDep , ReaGrade
16、,ReaPref ,ReaDate, ReaBs,Reastate,Reasx ;3.Maneger_lnsert的定义:CREATE PROCEDURE Maneger_InsertMID char(10) ,MSex char(2), as insert into Maneger alues(MID , MName ,MSex );4.Borrow_lnsert 的定义:CREATE PROCEDURE Borrow_InsertYHdate Datetime , lndate Datetime, Fine char(5), CLState char(8), MID char(10) as
17、 insert into Borrow,Indate ,Fine ,CLState ,MID );values(BookID ,ReaID ,Outdate ,YHdate5.Query_Reader_R 的定义:create procedure Query_Reader_RReaID char(9) as select * from Readerview where 编号 = ltrim(ReaID);6. Query_Reader_ M 的定义:create procedure Query_Reader_Mselect * from Readerview7. Query_Book_Writ
18、er 的定义:create procedure Query_Book_WriterBookWriter char(50)as select * from Bookviewwhere 作者 like %+ltrim(BookWriter)+;8. Query_Book_Name_Publish 的定义: create procedureQuery_Book_Name_PublishBookName char(50), BookPublish char(20) asselect *from Bookviewwhere 书名 =ltrim(BookName) and 出版社 =ltrim(BookPublish);9. Delete_Reade 的定义:create procedure Delete_ReaderReaNo char(9) as delete from Reader where ReaNo = ltrim(ReaNo);10. Delete_Book 的定义:create procedure Delete_BookBookID char(9) as delete from Book where BookID= ltrim(BookID);七实验小结这次实验使我熟悉了如何独立的建立一个系统,通过自己所学的知识,综合运用,并了解 自己的不足之处。