图书管理系统数据库设计报告实例.docx

上传人:b****7 文档编号:9264056 上传时间:2023-02-03 格式:DOCX 页数:51 大小:505.15KB
下载 相关 举报
图书管理系统数据库设计报告实例.docx_第1页
第1页 / 共51页
图书管理系统数据库设计报告实例.docx_第2页
第2页 / 共51页
图书管理系统数据库设计报告实例.docx_第3页
第3页 / 共51页
图书管理系统数据库设计报告实例.docx_第4页
第4页 / 共51页
图书管理系统数据库设计报告实例.docx_第5页
第5页 / 共51页
点击查看更多>>
下载资源
资源描述

图书管理系统数据库设计报告实例.docx

《图书管理系统数据库设计报告实例.docx》由会员分享,可在线阅读,更多相关《图书管理系统数据库设计报告实例.docx(51页珍藏版)》请在冰豆网上搜索。

图书管理系统数据库设计报告实例.docx

图书管理系统数据库设计报告实例

图书管理系统

数据库设计报告

文件状态:

[√]草稿

[]正式发布

[]正在修改

文件标识:

LMS-DATABASE

当前版本:

1.0

作者:

XXX

完成日期:

2011-12-24

版本历史

版本/状态

作者

参与者

起止日期

备注

0.文档介绍

0.1文档目的

本文档为图书管理系统的数据库设计文档,主要介绍系统的数据库设计,给出了系统的逻辑设计和物理设计,同时给出了数据库环境的说明,确定了数据库命名规则,给出了数据库的优化方案、安全性设计方案和数据库维护、管理等内容,本文档可作为项目开发人员在数据库实现时的参考和规范。

0.2文档范围

本文档适用于项目开发的设计阶段,在项目开发阶段可按照本文档检验数据库的实施情况。

0.3读者对象

1.图书管理系统的开发人员

2.指导老师

3.图书管理系统的测试人员

4.图书管理系统的客户

0.4参考文献

【01】王珊萨师煊,《数据库系统概论》,高等教育出版社,2006-05-04

0.5术语与缩写解释

缩写、术语

解释

SPP

精简并行过程,SimplifiedParallelProcess

SD

系统设计,SystemDesign

逻辑设计

把一种计划、规划、设想通过视觉的形式通过概念、判断、推理、论证来理解和区分客观世界的思维传达出来的活动过程

物理设计

设计数据库的物理结构,根据数据库的逻辑结构来选定RDBMS,并设计和实施数据库的存储结构、存取方式等。

1.数据库环境说明

数据库系统:

MySQL

数据库设计工具:

PowerDesigner

编程工具:

PowerDesigner

详细配置:

2.数据库的命名规则

2.1数据库涉及字符规则

  采用26个英文字母(区分大小写)和0-9这十个自然数,加上下划线_组成,共63个字符。

不能出现其他字符(注释除外)。

2.2数据库对象命名规则

数据库对象包括表、视图(查询)、存储过程(参数查询)、函数、约束。

对象名字由前缀和实际名字组成,长度不超过30。

前缀:

使用小写字母。

如:

tb

视图

vi

存储过程

sp

函数

fn

实际名字

实际名字尽量描述实体的内容,由单词或单词组合,每个单词的首字母大写,其他字母小写,不以数字和_开头。

因此,合法的对象名字类似如下。

tbUser_Info、tbMessage_Detail

视图

vi_MessageList

存储过程

sp_MessageAdd

2.3数据库表命名规则

  字段由前缀和实际名字组成。

实际名字中首单词一个系统尽量采取同一单词。

  前缀:

使用小写字母tb,表示表。

  例如:

tbMembertbMember_InfotbForum_BoardtbForum_Thread1

2.4字段命名规则

  数字、字符、日期/时间、lob(大对象)、杂项,字段由表的简称、下划线,实际名字加后缀组成。

  后缀:

使用小写字母,代表该字段的属性。

  例如:

 User_IdintUser_NamestrUser_RegDatedtm

2.5视图命名规则

  字段由前缀和实际名字组成,中间用下划线连接。

  前缀:

使用小写字母vi,表示视图。

  例如:

vi_Uservi_UserInfo

2.6存储过程命名规则

  字段由前缀和实际名字组成,中间用下划线连接。

  前缀:

使用小写字母sp,表示存储过程。

  例如:

sp_User

2.7SQL语句规则

所有SQL语句的关键词全部大写或首字母大写,比如SELECT,UPDATE,FROM,

ORDER,BY等。

3.概念设计

 

4.逻辑设计

5.物理模型

5.0表汇总

表名

功能说明

Users

记录用户的基本信息,包括姓名、性别、单位、联系方式等

UserRole

记录用户的角色,不同的角色拥有不同的权限

UserRights

记录图书管理系统中用户可拥有的所有权限

OverLimitRecord

记录超期的图书借阅记录

LostRecord

记录图书遗失的记录

OrderRecord

记录读者预约图书的情况

BorrowRecord

记录读者借阅图书的情况

Book

记录图书的基本信息,包括书名、出版社、页数、是否可借阅等

Library

记录图书馆分馆的基本情况,包括分馆地址、电话等信息

BookCategory

记录图书的类别及相关属性,划分不同类别可方便用户借阅查找

BookKinds

记录图书的种类及相关属性,不同种类的书籍有不同的赔付价格

SystemLog

记录系统的运行情况

5.1表Users

表名

Users

列名

数据类型

空/非空

约束条件

表示含义

UserID

Int

非空

主键

用户编号

UserName

nvchar

非空

用户姓名

UserNum

int

非空

用户学号

UserSex

nvchar

(2)

可以为空

只能是"男"或是"女"

用户性别

UserRole

int

非空

只能为“用户角色”表中已有项的角色编号

用户所属角色

UserUnit

nvchar

可以为空

用户所在单位

UserEmail

nvchar

可以为空

格式为“XX@XX.XX”

用户邮箱

UserPhone

nvchar(11)

可以为空

位数为11位,全部字符为数字

用户联系电话

UserPsw

nvchar(12)

非空

长度至少为6,最多为12位的数字、字母的组合

用户登录密码

UserIsBorrow

int

非空

用户是否可借阅书籍

UserBorroeCnt

int

非空

用户当前可借阅的书籍数量

补充说明

1.UserRole为外键,关联着用户角色表中的角色编号

2.UserIsBorrow的初始值为1,当UserBorrowCnt的值为0时其值为0,当用户出现超期事务未处理时,UserIsBorrow的值为-1,出现遗失事务未处理时其值-2,当同时有UserBorrowCnt为0和超期事务未处理时其值为-3,当同时有UserBorrowCnt为0和遗失事务未处理时其值为-4,当同时有遗失和超期事务未处理时其值为-5,只有当其值为1时表示当前可借,否则当前不可借阅。

5.2表UserRole

表名

UserRole

列名

数据类型

空/非空

约束条件

表示含义

RoleID

int

非空

主键

角色编号

RoleName

nvchar

非空

最大为256个字符

角色名称

RoleDescribe

nvchar

可以为空

角色描述

RoleBorrowCnt

int

非空

可借阅书籍的最大数量

RoleBorrowDays

int

非空

可借阅书籍的最大天数

RoleBorrowTimes

int

非空

可续借的次数

RoleContinueDays

int

非空

续借一次可多借阅书籍的天数

RoleRights

int

非空

只能为权限表中已有项的编号

角色所拥有的权限

补充说明

RoleRights为外键,关联着权限表中的权限编号

5.3表UserRights

表名

UserRights

列名

数据类型

空/非空

约束条件

表示含义

RightsId

int

非空

主键

权限编号

RightsName

nvchar

非空

最大为256个字符

权限名称

RightsDescribe

nvchar

可以为空

权限描述

补充说明

5.4表OverLimitRecord

表名

OverLimitRecord

列名

数据类型

空/非空

约束条件

表示含义

OLRID

int

非空

主键

超期记录编号

OLRUserID

int

非空

超期借阅书籍的读者编号

OLRBookID

int

非空

超期被借阅的书籍编号

OverDays

int

非空

超期天数

IsFine

boolean

非空

是否已经缴纳超期罚款的标识

OverCost

int

非空

超期应缴纳的罚款金额

补充说明

OLRUserID和OLRBookID为外键,分别关联用户表中的用户编号和图书表中的图书编号

5.5表LostRecord

表名

LostRecord

列名

数据类型

空/非空

约束条件

表示含义

LostRecID

int

非空

主键

书籍遗失记录编号

LostRecBookID

int

非空

遗失的书籍编号

LostRecUserID

int

非空

遗失书籍的用户编号

LostRecDate

date

非空

书籍遗失事务等级日期

LostIsFine

boolean

非空

是否已经缴纳遗失书籍赔付款

LostReBuy

boolean

非空

是否已经重新购入该书籍

补充说明

LostRecUserID和LostRecBookID为外键,分别关联用户表中的用户编号和图书表中的图书编号

5.6表OrderRecord

表名

OrderRecord

列名

数据类型

空/非空

约束条件

表示含义

OrderRecID

int

非空

主键

预约图书记录的编号

OrderRecBookID

int

非空

被预约图书的编号

OrderRecUserID

int

非空

预约图书的用户编号

OrderRecDate

date

非空

预约图书的日期

OrderIsFinish

boolean

非空

预约活动是否完成

补充说明

OrderRecUserID和OrderRecBookID为外键,分别关联用户表中的用户编号和图书表中的图书编号

5.7表BorrowRecord

表名

OrderRecord

列名

数据类型

空/非空

约束条件

表示含义

BRD

int

非空

主键

借阅书籍记录的编号

BRUserID

int

非空

借阅书籍的用户的编号

BRBookID

int

非空

被借阅的书籍的编号

BRDate

date

非空

借阅书籍的时间

BRIsBack

boolean

非空

是否已经归还书籍的标识位

BRBackDate

date

非空

用户应该归还书籍的最大日期

BRIsContinue

boolean

非空

用户是否可以续借书籍

BRContinueTimes

int

非空

用户还可以续借该书籍的次数

BRIsOVerLimit

boolean

非空

借阅的书籍是否已经超期

BROverLimitFine

vnchar

可以为空

若书籍超期所应缴纳的超期款

补充说明

OrderRecUserID和OrderRecBookID为外键,分别关联用户表中的用户编号和图书表中的图书编号

5.8表Book

表名

Book

列名

数据类型

空/非空

约束条件

表示含义

BookID

int

非空

主键

书籍编号

BookName

nvchar

非空

最大长度为256个字符

书籍名称

BookAuthor

nvchar

非空

最大长度为256个字符

书籍的作者名

ISBNID

nvchar

非空

最大长度为256个字符

书籍的ISBN码

Publish

nvchar

非空

最大长度为256个字符

书籍的出版社名

PublishPlace

nvchar

非空

最大长度为256个字符

书籍的出版地

PublishDate

date

非空

书籍的出版时间

TotalWords

int

非空

书籍的总字数

TotalPage

int

非空

书籍的总页数

BookPrice

nvchar

非空

书籍的定价

BookAbstruct

nvchar

非空

书籍的内容简介

BookCategory

int

非空

书籍的类别

BookInDate

date

非空

书籍的入库时间

BookLibrary

int

非空

书籍所在的图书分馆

IsBorrow

boolean

非空

标识书籍当前是否可借

BookKind

int

非空

书籍的种类

补充说明

1.BookCategory为外键,关联着图书类别表中的类别编号

2.BookKind为外键,关联这图书种类表中的种类编号

3.图书类别表示图书的内容的类别,如哲学类,文学类,设置图书类别图书可以方便用户进行查找和定位,图书的种类表示书籍的种类,如新书、珍藏版书籍、外文书、中文书,设置图书种类是可能不同种类的书籍在超期、遗失时的赔付额度不一样,如1980年前的书属于珍藏版的书,遗失后应该按定价的5倍赔付等

4.当书籍当前已经被借出或者已经遗失了,则该书籍当前不可借阅

5.书籍作者的最大长度设为256是因为可能一本书的作者为多个,名字的总长度较大

6.ISBN码为图书的分类编码,同样的书籍的ISBN码应该一样

5.9表Liabrary

表名

Liabrary

列名

数据类型

空/非空

约束条件

表示含义

LiabraryID

int

非空

主键

图书分馆编号

LibNam

nvchar

非空

最大长度为256个字符

图书分馆名称

LibPhone

nvchar

非空

最大长度为11

图书分馆的联系电话

LibAddress

nvchar

非空

最大长度为256个字符

图书分馆的地址

LibAbstruct

nvchar

非空

图书分馆的简介

补充说明

一个图书管理系统可能同时管理位于不同位置的几个图书分馆,所以需要设置图书分馆表,一本图书也应该属于某一个图书分馆

5.10表BookCategory

表名

BookCategory

列名

数据类型

空/非空

约束条件

表示含义

CategoryID

int

非空

主键

图书类别编号

CategoryName

nvchar

非空

最大长度为256个字符

图书类别名称

CategoryDescribe

nvchar

非空

类别的简介

补充说明

图书的类别是指图书内容的分类,如哲学类、历史类、计算机类等,将图书按类别归类可方便用户的查找和借阅

5.11表BookKind

表名

BookKind

列名

数据类型

空/非空

约束条件

表示含义

KindID

int

非空

主键

图书种类编号

KindName

nvchar

非空

最大长度为256个字符

图书种类名称

KindDescribe

nvchar

可以为空

图书种类的简介

OverLimitCost

nvchar

非空

图书超期的罚金额度

LostCost

nvchar

非空

图书遗失的罚金额度

补充说明

图书可能会被划分为新书、珍藏版书籍、外文书、中文书等种类,根据种类的不同书籍的超期、遗失的赔付金额也不同,如外文书遗失需要赔付两倍定价的金额,而一般的中文书只需按定价赔付等,所以需要划分不同的书籍种类

5.12表SystemLog

表名

SystemLog

列名

数据类型

空/非空

约束条件

表示含义

LogID

int

非空

主键

系统日志编号

LogContent

nvchar

非空

系统日志内容

LogTime

date&time

非空

系统日志产生的时间

IsSysRight

boolean

非空

系统是否正常

补充说明

系统日志记录可监测系统是运行是否正确,这对于维护和恢复数据库是很重要的

6.安全性设计

6.1防止用户直接操作数据库的方法

1.用户权限控制

给每个用户角色限制权限,不同的角色拥有不同的权限,用户只能行使自己权限范围内的权限,如普通用户只能查看自己的借阅记录不能任意修改,而管理员和超级管理员则可以修改用户的借阅记录,通过角色,权限等的一系列授予和回收操作可以有效的进行用户的权限控制,从而防止用户恶意操作、篡改数据库信息。

2.数据库登录设密

给数据库设置登录账号和密码,只有拥有直接访问数据库权限的用户在键入正确的账号和密码后才能通过软件登录到数据库进行操作,可防止用户恶意操作数据库。

3.限制操作系统存取权限

使用Oracle数据库系统是依存在操作系统之上的,如果操作系统被人侵入,那么通过修改配置文件等一系列方法,Oracle数据库的安全性也将荡然无存,所以对于安全性高的数据库,可以通过限制操作系统的存取权限来提高数据库的安全性。

6.2用户帐号密码的加密方法

使用MD5加密方法对用户账号密码进行加密。

MD5方法采用单项加密的加密方法,即只能对数据进行加密,而不能对加密后的数据进行解密,这样经过MD5算法处理的账号和秘密存储在数据库中即使被人恶意获取到,也不可能知道密码的具体数据,即做到了对账号密码的更强的保护。

6.3角色与权限

角色

可以访问的表与列

操作权限

超级管理员

所有表及列

增删改查

管理员

Users、UserRole、OverLimitRecord、LostRecord、BorrowRecord、Book、Library、BookCategory、BookKinds

增删改查

UserRights、SystemLog

查看

普通用户

Users

查看、修改、删除、增加信息

OverLimitRecord、LostRecord、BorrowRecord、Book、Library

查看

7.优化

优先级

优化对象(目标)

措施

数据库索引

根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量

数据库碎片

定期整理数据库产生的碎片,提高数据库的性能

数据库缓存

优化数据库缓存方案

数据库对象

优化数据库对象的放置策略,尽量让数据库对象均匀地把数据分布在系统的磁盘中,平衡I/O访问,避免I/O瓶颈。

8.数据库管理与维护说明

8.1数据库日常检查

1.检查数据库状态:

确认数据库是否在open状态,正常提供服务。

SQL>selectstatus,instance_rolefromv$instance;

2.数据库版本检查:

数据库应该打了最新的patchset。

SQL>select*fromv$version;

3.查看SGA区域:

SGA区各项buffer之和应该小于系统物理内存的一半。

SQL>showsga;

4.回滚段竞争检查:

如果是oracle8i版本返回值应该低于2%。

如果该值过高,8i需要手工建立更多的回滚段,如果是9i,返回值应该为0,如果持续存在非零值,应该增加回滚表空间的大小。

8i:

SQL>select'Theaverageofwaits/getsis'||round((sum(waits)/sum(gets))*100,2)||'%'Fromv$rollstat;

9i:

SQL>selectdistinctnospaceerrcntasnospaceFromv$undostatWherebegin_time>sysdate-(1/12);

5.查看日志文件:

数据库运行时,可以通过查询v$log_history来观察logswitch的切换时间。

联机日志最好是业务非高峰期每小时切换一次,业务高峰期20分钟左右切换一次。

SQL>selectto_char(first_time,'yyyy-mm-ddhh24:

mi:

ss')change_timefromv$log_history;

6.查看表空间:

查看各个表空间所占的大小,剩余空间,使用空间百分比等信息,特别是当业务表空间的剩余空间低于50M或者使用空间百分比大于90%时,需要考虑增加表空间的大小。

SQL>selecta.tablespace_name,a.bytestotalbytes,sum(b.bytes)freebytesfromdba_data_filesa,dba_free_spacebwherea.file_id=b.file_idgroupbya.tablespace_name,a.bytes;

7.检查job状态:

Broken列应该为N;如果Broken列为Y,检查oracle告警日志,分析job失败的原因。

解决后运行:

execdbms_job.run(:

job);

SQL>selectjob,what,to_char(next_date,yyyy/mm/ddhh24:

mi:

ss’),broken,failuresfromdba_jobs;

8.查看数据库连接用户:

查看当前数据库连接的用户进程的具体信息,包括连接的数据库用户名,机器名,运行的程序名,进程状态。

selectusername,machine,program,statusfromv$sessionwhereosuser<>'oracle';

8.2数据库备份方案

添加任务计划,定期定时运行备份批处理命令,实现自动备份。

设计一个物理备份和逻辑备份相结合的数据库备份方案,以保证数据的完整性和0损失恢复。

逻辑备份:

星期一完全备份在00:

00时备份

星期二增量备份在00:

00时备份

星期三增量备份在00:

00时备份

星期四增量备份在00:

00时备份

星期五累积备份在00:

00时备份

星期六增量备份在00:

00时备份

星期日增量备份在00:

00时备份

分析:

每天在00:

00时备份是因为在这个时段的访问量相对很少,星期一完全备份可以将数据库中的信息全部备份,而之后的几天采用增量备份可以减少备份量,加快备份速度。

在在星期五选择累计备份,是考虑到数据库出错时恢复的考虑,当数据库在某一周有错误时,可以直接恢复到星期五的数据,而不用一天一天的按增量备份的数据恢复。

物理备份:

备份方法

备份频率

备份时间

备份目的

备注

本地热备

1次/天

00:

00

保留最近一周

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1