1、图书管理系统数据库设计报告实例 作者: 日期:2 个人收集整理 勿做商业用途图书管理系统 数据库设计报告文件状态: 草稿 正式发布 正在修改文件标识:LMS-DATABASE当前版本:1。0作 者:XXX完成日期:2011-12-24版 本 历 史版本/状态作者参与者起止日期备注 目 录 0。 文档介绍40.1 文档目的40.2 文档范围40.3 读者对象40。4 参考文献40。5 术语与缩写解释41. 数据库环境说明42。 数据库的命名规则53.概念设计64。 逻辑设计65.物理模型85。0 表汇总85。1 表Users95.2 表UserRole95。3 表UserRights105。4
2、表OverLimitRecord105。5 表LostRecord105.6 表OrderRecord115。7 表BorrowRecord115.8 表Book115.9 表Liabrary125.10 表BookCategory125。11 表BookKind135。12表SystemLog136。 安全性设计136.1 防止用户直接操作数据库的方法136.2 用户帐号密码的加密方法146。3 角色与权限147。 优化148。 数据库管理与维护说明158.1数据库日常检查158。2 数据库备份方案159。 数据库对象160。 文档介绍0。1 文档目的 本文档为图书管理系统的数据库设计文档,
3、主要介绍系统的数据库设计,给出了系统的逻辑设计和物理设计,同时给出了数据库环境的说明,确定了数据库命名规则,给出了数据库的优化方案、安全性设计方案和数据库维护、管理等内容,本文档可作为项目开发人员在数据库实现时的参考和规范.0.2 文档范围本文档适用于项目开发的设计阶段,在项目开发阶段可按照本文档检验数据库的实施情况。0。3 读者对象1.图书管理系统的开发人员 2.指导老师3.图书管理系统的测试人员4.图书管理系统的客户0.4 参考文献【01】王珊 萨师煊,数据库系统概论,高等教育出版社,200605040。5 术语与缩写解释缩写、术语解 释SPP精简并行过程,Simplified Paral
4、lel ProcessSD系统设计,System Design逻辑设计 把一种计划、规划、设想通过视觉的形式通过概念、判断、推理、论证来理解和区分客观世界的思维传达出来的活动过程 物理设计设计数据库的物理结构,根据数据库的逻辑结构来选定RDBMS,并设计和实施数据库的存储结构、存取方式等. 1。 数据库环境说明 数据库系统:MySQL 数据库设计工具:Power Designer编程工具:Power Designer详细配置:2。 数据库的命名规则 2.1数据库涉及字符规则采用26个英文字母(区分大小写)和0 9这十个自然数,加上下划线_组成,共63个字符。不能出现其他字符(注释除外)。 2.
5、2数据库对象命名规则数据库对象包括表、视图(查询)、存储过程(参数查询)、函数、约束。对象名字由前缀和实际名字组成,长度不超过30。前缀:使用小写字母。如:表tb视图vi存储过程sp函数fn实际名字实际名字尽量描述实体的内容,由单词或单词组合,每个单词的首字母大写,其他字母小写,不以数字和_开头.因此,合法的对象名字类似如下.表tbUser_Info、tbMessage_Detail视图vi_MessageList存储过程sp_MessageAdd 2.3数据库表命名规则字段由前缀和实际名字组成。实际名字中首单词一个系统尽量采取同一单词。前缀:使用小写字母tb,表示表。例如:tbMember
6、tbMember_Info t bForum_Board tbForum_Thread1 2。4字段命名规则数字、字符、日期/时间、lob(大对象)、杂项,字段由表的简称、下划线,实际名字加后缀组成。后缀:使用小写字母,代表该字段的属性。 例如: User_Idint User_Namestr User_RegDatedtm 2。5视图命名规则字段由前缀和实际名字组成,中间用下划线连接。前缀:使用小写字母vi,表示视图。例如:vi_User vi_UserInfo2。6存储过程命名规则字段由前缀和实际名字组成,中间用下划线连接。前缀:使用小写字母sp,表示存储过程.例如:sp_User2.7
7、SQL语句规则所有SQL语句的关键词全部大写或首字母大写,比如SELECT,UPDATE,FROM,ORDER,BY等。3.概念设计4. 逻辑设计5.物理模型5。0 表汇总表名功能说明Users记录用户的基本信息,包括姓名、性别、单位、联系方式等UserRole记录用户的角色,不同的角色拥有不同的权限UserRights记录图书管理系统中用户可拥有的所有权限OverLimitRecord记录超期的图书借阅记录LostRecord记录图书遗失的记录OrderRecord记录读者预约图书的情况BorrowRecord记录读者借阅图书的情况Book记录图书的基本信息,包括书名、出版社、页数、是否可借
8、阅等Library记录图书馆分馆的基本情况,包括分馆地址、电话等信息BookCategory记录图书的类别及相关属性,划分不同类别可方便用户借阅查找BookKinds记录图书的种类及相关属性,不同种类的书籍有不同的赔付价格SystemLog记录系统的运行情况5。1 表Users表名Users列名数据类型空/非空约束条件表示含义UserIDInt 非空主键用户编号UserNamenvchar非空无用户姓名UserNumint非空无用户学号UserSexnvchar(2)可以为空只能是男”或是女用户性别UserRoleint非空只能为“用户角色表中已有项的角色编号用户所属角色UserUnitnvc
9、har可以为空无用户所在单位UserEmailnvchar可以为空格式为“XXXX。XX”用户邮箱UserPhonenvchar(11)可以为空位数为11位,全部字符为数字用户联系电话UserPswnvchar(12)非空长度至少为6,最多为12位的数字、字母的组合用户登录密码UserIsBorrowint非空无用户是否可借阅书籍UserBorroeCntint非空无用户当前可借阅的书籍数量补充说明1.UserRole为外键,关联着用户角色表中的角色编号2.UserIsBorrow的初始值为1,当UserBorrowCnt的值为0时其值为0,当用户出现超期事务未处理时,UserIsBorrow
10、的值为-1,出现遗失事务未处理时其值-2,当同时有UserBorrowCnt为0和超期事务未处理时其值为3,当同时有UserBorrowCnt为0和遗失事务未处理时其值为4,当同时有遗失和超期事务未处理时其值为5,只有当其值为1时表示当前可借,否则当前不可借阅。5。2 表UserRole表名UserRole列名数据类型空/非空约束条件表示含义RoleIDint非空主键角色编号RoleNamenvchar非空最大为256个字符角色名称RoleDescribenvchar可以为空无角色描述RoleBorrowCntint非空无可借阅书籍的最大数量RoleBorrowDaysint非空无可借阅书籍的
11、最大天数RoleBorrowTimesint非空无可续借的次数RoleContinueDaysint 非空无续借一次可多借阅书籍的天数RoleRightsint非空只能为权限表中已有项的编号角色所拥有的权限补充说明RoleRights为外键,关联着权限表中的权限编号5.3 表UserRights表名UserRights列名数据类型空/非空约束条件表示含义RightsIdint非空主键权限编号RightsNamenvchar非空最大为256个字符权限名称RightsDescribenvchar可以为空无权限描述补充说明无5。4 表OverLimitRecord表名OverLimitRecord列
12、名数据类型空/非空约束条件表示含义OLRIDint非空主键超期记录编号OLRUserIDint非空无超期借阅书籍的读者编号OLRBookIDint非空无超期被借阅的书籍编号OverDaysint非空无超期天数IsFineboolean非空无是否已经缴纳超期罚款的标识OverCostint非空无超期应缴纳的罚款金额补充说明OLRUserID和OLRBookID为外键,分别关联用户表中的用户编号和图书表中的图书编号5。5 表LostRecord表名LostRecord列名数据类型空/非空约束条件表示含义LostRecIDint非空主键书籍遗失记录编号LostRecBookIDint非空无遗失的书籍
13、编号LostRecUserIDint非空无遗失书籍的用户编号LostRecDatedate非空无书籍遗失事务等级日期LostIsFineboolean非空无是否已经缴纳遗失书籍赔付款LostReBuyboolean非空无是否已经重新购入该书籍补充说明LostRecUserID和LostRecBookID为外键,分别关联用户表中的用户编号和图书表中的图书编号5。6 表OrderRecord表名OrderRecord列名数据类型空/非空约束条件表示含义OrderRecIDint非空主键预约图书记录的编号OrderRecBookIDint非空无被预约图书的编号OrderRecUserIDint非空无
14、预约图书的用户编号OrderRecDatedate非空无预约图书的日期OrderIsFinishboolean非空无预约活动是否完成补充说明OrderRecUserID和OrderRecBookID为外键,分别关联用户表中的用户编号和图书表中的图书编号5.7 表BorrowRecord表名OrderRecord列名数据类型空/非空约束条件表示含义BRDint非空主键借阅书籍记录的编号BRUserIDint非空无借阅书籍的用户的编号BRBookIDint非空无被借阅的书籍的编号BRDatedate非空无借阅书籍的时间BRIsBackboolean非空无是否已经归还书籍的标识位BRBackDate
15、date非空无用户应该归还书籍的最大日期BRIsContinueboolean非空无用户是否可以续借书籍BRContinueTimesint非空无用户还可以续借该书籍的次数BRIsOVerLimitboolean非空无借阅的书籍是否已经超期BROverLimitFinevnchar可以为空无若书籍超期所应缴纳的超期款补充说明OrderRecUserID和OrderRecBookID为外键,分别关联用户表中的用户编号和图书表中的图书编号5.8 表Book表名Book列名数据类型空/非空约束条件表示含义BookIDint非空主键书籍编号BookNamenvchar非空最大长度为256个字符书籍名称
16、BookAuthornvchar非空最大长度为256个字符书籍的作者名ISBNIDnvchar非空最大长度为256个字符书籍的ISBN码Publishnvchar非空最大长度为256个字符书籍的出版社名PublishPlacenvchar非空最大长度为256个字符书籍的出版地PublishDatedate非空无书籍的出版时间TotalWordsint非空无书籍的总字数TotalPageint非空无书籍的总页数BookPricenvchar非空无书籍的定价BookAbstructnvchar非空无书籍的内容简介BookCategoryint非空无书籍的类别BookInDatedate非空无书籍的
17、入库时间BookLibraryint非空无书籍所在的图书分馆IsBorrowboolean非空无标识书籍当前是否可借BookKindint非空无书籍的种类补充说明1。BookCategory为外键,关联着图书类别表中的类别编号2。BookKind为外键,关联着图书种类表中的种类编号3。图书类别表示图书的内容的类别,如哲学类,文学类,设置图书类别图书可以方便用户进行查找和定位,图书的种类表示书籍的种类,如新书、珍藏版书籍、外文书、中文书,设置图书种类是可能不同种类的书籍在超期、遗失时的赔付额度不一样,如1980年前的书属于珍藏版的书,遗失后应该按定价的5倍赔付等4。当书籍当前已经被借出或者已经遗
18、失了,则该书籍当前不可借阅5。书籍作者的最大长度设为256是因为可能一本书的作者为多个,名字的总长度较大6。ISBN码为图书的分类编码,同样的书籍的ISBN码应该一样5.9 表Liabrary表名Liabrary列名数据类型空/非空约束条件表示含义LiabraryIDint非空主键图书分馆编号LibNamnvchar非空最大长度为256个字符图书分馆名称LibPhonenvchar非空最大长度为11图书分馆的联系电话LibAddressnvchar非空最大长度为256个字符图书分馆的地址LibAbstructnvchar非空无图书分馆的简介补充说明一个图书管理系统可能同时管理位于不同位置的几个
19、图书分馆,所以需要设置图书分馆表,一本图书也应该属于某一个图书分馆5。10 表BookCategory表名BookCategory列名数据类型空/非空约束条件表示含义CategoryIDint非空主键图书类别编号CategoryNamenvchar非空最大长度为256个字符图书类别名称CategoryDescribenvchar非空无类别的简介补充说明图书的类别是指图书内容的分类,如哲学类、历史类、计算机类等,将图书按类别归类可方便用户的查找和借阅5。11 表BookKind表名BookKind列名数据类型空/非空约束条件表示含义KindIDint非空主键图书种类编号KindNamenvcha
20、r非空最大长度为256个字符图书种类名称KindDescribenvchar可以为空无图书种类的简介OverLimitCostnvchar非空无图书超期的罚金额度LostCostnvchar非空无图书遗失的罚金额度补充说明图书可能会被划分为新书、珍藏版书籍、外文书、中文书等种类,根据种类的不同书籍的超期、遗失的赔付金额也不同,如外文书遗失需要赔付两倍定价的金额,而一般的中文书只需按定价赔付等,所以需要划分不同的书籍种类5.12表SystemLog表名SystemLog列名数据类型空/非空约束条件表示含义LogIDint非空主键系统日志编号LogContentnvchar非空无系统日志内容Log
21、Timedatetime非空无系统日志产生的时间IsSysRightboolean非空无系统是否正常补充说明系统日志记录可监测系统是运行是否正确,这对于维护和恢复数据库是很重要的6. 安全性设计6。1 防止用户直接操作数据库的方法1。用户权限控制给每个用户角色限制权限,不同的角色拥有不同的权限,用户只能行使自己权限范围内的权限,如普通用户只能查看自己的借阅记录不能任意修改,而管理员和超级管理员则可以修改用户的借阅记录,通过角色,权限等的一系列授予和回收操作可以有效的进行用户的权限控制,从而防止用户恶意操作、篡改数据库信息。2.数据库登录设密给数据库设置登录账号和密码,只有拥有直接访问数据库权限
22、的用户在键入正确的账号和密码后才能通过软件登录到数据库进行操作,可防止用户恶意操作数据库。3。限制操作系统存取权限 使用Oracle数据库系统是依存在操作系统之上的,如果操作系统被人侵入,那么通过修改配置文件等一系列方法,Oracle数据库的安全性也将荡然无存,所以对于安全性高的数据库,可以通过限制操作系统的存取权限来提高数据库的安全性. 6.2 用户帐号密码的加密方法使用MD5加密方法对用户账号密码进行加密。MD5方法采用单项加密的加密方法,即只能对数据进行加密,而不能对加密后的数据进行解密,这样经过MD5算法处理的账号和秘密存储在数据库中即使被人恶意获取到,也不可能知道密码的具体数据,即做
23、到了对账号密码的更强的保护。6。3 角色与权限角色可以访问的表与列操作权限超级管理员所有表及列增删改查管理员Users、UserRole、OverLimitRecord、LostRecord、BorrowRecord、Book、Library、BookCategory、BookKinds增删改查UserRights、SystemLog查看普通用户Users查看、修改、删除、增加信息OverLimitRecord、LostRecord、BorrowRecord、Book、Library查看7。 优化优先级优化对象(目标)措施高数据库索引根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的
24、数据量高数据库碎片定期整理数据库产生的碎片,提高数据库的性能高数据库缓存优化数据库缓存方案高数据库对象优化数据库对象的放置策略,尽量让数据库对象均匀地把数据分布在系统的磁盘中,平衡I/O访问,避免I/O瓶颈。 8。 数据库管理与维护说明8。1数据库日常检查1。检查数据库状态:确认数据库是否在open状态,正常提供服务。 SQL select status, instance_role from vinstance;2。数据库版本检查:数据库应该打了最新的patchset。 SQLselect from v$version;3。查看SGA区域:SGA区各项buffer之和应该小于系统物理内存的一
25、半. SQLshow sga;4。回滚段竞争检查:如果是oracle8i版本返回值应该低于2。如果该值过高,8i需要手工建立更多的回滚段,如果是9i,返回值应该为0,如果持续存在非零值,应该增加回滚表空间的大小。 8i: SQL select The average of waits/gets is round(sum(waits) / sum(gets) * 100,2)From v$rollstat; 9i: SQLselect distinct nospaceerrcnt as nospace From vundostat Where begin_timesysdate(1/12);5。
26、查看日志文件:数据库运行时,可以通过查询v$log_history来观察log switch的切换时间。联机日志最好是业务非高峰期每小时切换一次,业务高峰期20分钟左右切换一次。SQLselect to_char(first_time,yyyymm-dd hh24:mi:ss) change_time from vlog_history;6.查看表空间:查看各个表空间所占的大小,剩余空间,使用空间百分比等信息,特别是当业务表空间的剩余空间低于50M或者使用空间百分比大于90%时,需要考虑增加表空间的大小. SQL select a。tablespace_name,a。bytes totalby
27、tes,sum(b。bytes) freebytes from dba_data_files a,dba_free_space b where a.file_id = b。file_id group by a。tablespace_name, a.bytes ; 7.检查job状态:Broken列应该为N;如果Broken列为Y,检查oracle告警日志,分析job失败的原因。解决后运行:exec dbms_job。run(:job); SQLselectjob,what,to_char(next_date,yyyy/mm/ddhh24:mi:ss),broken,failures from
28、dba_jobs; 8.查看数据库连接用户:查看当前数据库连接的用户进程的具体信息,包括连接的数据库用户名,机器名,运行的程序名,进程状态。 select username,machine,program,status from vsession where osuser 1 THEN IF tmpCondition IS NOT NULL THEN tmpCondition := tmpCondition | UserNum = |ItemNum; ELSE tmpCondition := tmpCondition ADD UserNum = |ItemNum; END IF;END IF;
29、IF ItemSex IS NOT NULL THEN IF tmpCondition IS NOT NULL THEN tmpCondition := tmpCondition UserSex = |ItemSex; ELSE tmpCondition := tmpCondition | ADD UserSex = ItemSex; END IF;END IF;IF ItemRole 1 THEN IF tmpCondition IS NOT NULL THEN tmpCondition := tmpCondition UserRole = |ItemRole; ELSE tmpCondit
30、ion := tmpCondition | ADD UserRole = ItemRole; END IF;END IF;IF ItemUnit IS NOT NULL THEN IF tmpCondition IS NOT NULL THEN tmpCondition := tmpCondition | UserUnit = |ItemUnit; ELSE tmpCondition := tmpCondition | ADD UserUnit = |ItemUnit; END IF;END IF;IF ItemEmail IS NOT NULL THEN IF tmpCondition IS
31、 NOT NULL THEN tmpCondition := tmpCondition | UserEmail = |ItemEmail; ELSE tmpCondition := tmpCondition ADD UserEmail = |ItemEmail; END IF;END IF;IF ItemTel IS NOT NULL THEN IF tmpCondition IS NOT NULL THEN tmpCondition := tmpCondition | UserTel = ItemTel; ELSE tmpCondition := tmpCondition ADD UserT
32、el = |ItemTel; END IF;END IF;IF ItemPsw IS NOT NULL THEN IF tmpCondition IS NOT NULL THEN tmpCondition := tmpCondition | UserPsw = |ItemPsw; ELSE tmpCondition := tmpCondition | ADD UserPsw = |ItemPsw; END IF;END IF;IF ItemPsw -1 THEN IF tmpCondition IS NOT NULL THEN tmpCondition := tmpCondition UserIsBorrow = ItemIsBorrow; ELSE tmpCondition := tmpCondition | ADD UserIsBorrow = |I
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100