图书管理系统数据库设计报告实例.doc_第1页
图书管理系统数据库设计报告实例.doc_第2页
图书管理系统数据库设计报告实例.doc_第3页
图书管理系统数据库设计报告实例.doc_第4页
图书管理系统数据库设计报告实例.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

图书管理系统 数据库设计报告 文件标识:LMS-DATABASE 当前版本:1.0 作 者:XXX 文件状态: 草稿 正式发布 正在修改 完成日期:2011-12-24 项目名称, 数据库设计报告 k7yeqs 2011Page 2 of 32 版 本 历 史 版本/状态作者参与者起止日期备注 项目名称, 数据库设计报告 k7yeqs 2011Page 3 of 32 目目目 录录录 0. 文档介绍文档介绍 4 0.1 文档目的.4 0.2 文档范围.4 0.3 读者对象.4 0.4 参考文献.4 0.5 术语与缩写解释.4 1. 数据库环境说明数据库环境说明 4 2. 数据库的命名规则数据库的命名规则 5 3.概念设计概念设计 6 4. 逻辑设计逻辑设计 6 5.物理模型物理模型 8 5.0 表汇总.8 5.1 表 USERS.9 5.2 表 USERROLE9 5.3 表 USERRIGHTS.10 5.4 表 OVERLIMITRECORD.10 5.5 表 LOSTRECORD10 5.6 表 ORDERRECORD.11 5.7 表 BORROWRECORD.11 5.8 表 BOOK11 5.9 表 LIABRARY.12 5.10 表 BOOKCATEGORY12 5.11 表 BOOKKIND13 5.12 表 SYSTEMLOG13 6. 安全性设计安全性设计 13 6.1 防止用户直接操作数据库的方法.13 6.2 用户帐号密码的加密方法.14 6.3 角色与权限.14 7. 优化优化 14 8. 数据库管理与维护说明数据库管理与维护说明 15 8.1 数据库日常检查 .15 8.2 数据库备份方案.15 9. 数据库对象.16 项目名称, 数据库设计报告 k7yeqs 2011Page 4 of 32 0. 文档介绍文档介绍 0.1 文档目的文档目的 本文档为图书管理系统的数据库设计文档,主要介绍系统的数据库设计,给出了系统的 逻辑设计和物理设计,同时给出了数据库环境的说明,确定了数据库命名规则,给出了数据 库的优化方案、安全性设计方案和数据库维护、管理等内容,本文档可作为项目开发人员在 数据库实现时的参考和规范。 0.2 文档范围文档范围 本文档适用于项目开发的设计阶段,在项目开发阶段可按照本文档检验数据库的实施情 况。 0.3 读者对象读者对象 1.图书管理系统的开发人员 2.指导老师 3.图书管理系统的测试人员 4.图书管理系统的客户 0.4 参考文献参考文献 【01】王珊 萨师煊, 数据库系统概论 ,高等教育出版社,2006-05-04 0.5 术语与缩写解释术语与缩写解释 缩写、术语缩写、术语解解 释释 SPP精简并行过程,Simplified Parallel Process SD系统设计,System Design 逻辑设计 把一种计划、规划、设想通过视觉的形式通过概念、判断、推理、论证来理解 和区分客观世界的思维传达出来的活动过程 物理设计设计数据库的物理结构,根据数据库的逻辑结构来选定 RDBMS,并设计和实 施数据库的存储结构、存取方式等。 1. 数据库环境说明数据库环境说明 数据库系统:MySQL 数据库设计工具:Power Designer 项目名称, 数据库设计报告 k7yeqs 2011Page 5 of 32 编程工具:Power Designer 详细配置: 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,表示表。 例如:tbMember tbMember_Info t bForum_Board tbForum_Thread1 2.4 字段命名规则字段命名规则 数字、字符、日期/时间、lob(大对象)、杂项,字段由表的简称、下划线,实际名字加后 缀组成。 后缀:使用小写字母,代表该字段的属性。 例如: User_Idint User_Namestr User_RegDatedtm 2.5 视图命名规则视图命名规则 字段由前缀和实际名字组成,中间用下划线连接。 前缀:使用小写字母 vi,表示视图。 例如:vi_User vi_UserInfo 2.6 存储过程命名规则存储过程命名规则 字段由前缀和实际名字组成,中间用下划线连接。 前缀:使用小写字母 sp,表示存储过程。 例如:sp_User 2.7 SQL 语句规则语句规则 项目名称, 数据库设计报告 k7yeqs 2011Page 6 of 32 所有 SQL 语句的关键词全部大写或首字母大写,比如 SELECT,UPDATE,FROM, ORDER,BY 等。 3.概念设计概念设计 4. 逻辑设计逻辑设计 项目名称, 数据库设计报告 k7yeqs 2011Page 7 of 32 项目名称, 数据库设计报告 k7yeqs 2011Page 8 of 32 5.物理模型物理模型 5.0 表汇总表汇总 表名功能说明 Users记录用户的基本信息,包括姓名、性别、单位、联系方式等 UserRole记录用户的角色,不同的角色拥有不同的权限 UserRights记录图书管理系统中用户可拥有的所有权限 OverLimitRecord记录超期的图书借阅记录 LostRecord记录图书遗失的记录 OrderRecord记录读者预约图书的情况 BorrowRecord记录读者借阅图书的情况 Book记录图书的基本信息,包括书名、出版社、页数、是否可借阅等 Library记录图书馆分馆的基本情况,包括分馆地址、电话等信息 项目名称, 数据库设计报告 k7yeqs 2011Page 9 of 32 BookCategory记录图书的类别及相关属性,划分不同类别可方便用户借阅查找 BookKinds记录图书的种类及相关属性,不同种类的书籍有不同的赔付价格 SystemLog记录系统的运行情况 5.1 表表 Users 表名Users 列名数据类型空/非空约束条件表示含义 UserIDInt 非空主键用户编号 UserNamenvchar非空无用户姓名 UserNumint非空无用户学号 UserSexnvchar(2)可以为空只能是“男“或是“女“用户性别 UserRoleint非空只能为“用户角色”表中已有项的角色 编号 用户所属角色 UserUnitnvchar可以为空无用户所在单位 UserEmailnvchar可以为空格式为“XXXX.XX”用户邮箱 UserPhonenvchar(11 ) 可以为空位数为 11 位,全部字符为数字用户联系电话 UserPswnvchar(12 ) 非空长度至少为 6,最多为 12 位的数字、字 母的组合 用户登录密码 UserIsBorrowint非空无用户是否可借阅 书籍 UserBorroeCntint非空无用户当前可借阅 的书籍数量 补充说明1.UserRole 为外键,关联着用户角色表中的角色编号 2.UserIsBorrow 的初始值为 1,当 UserBorrowCnt 的值为 0 时其值为 0,当用户出现超期 事务未处理时,UserIsBorrow 的值为-1,出现遗失事务未处理时其值-2,当同时有 UserBorrowCnt 为 0 和超期事务未处理时其值为-3,当同时有 UserBorrowCnt 为 0 和遗失 事务未处理时其值为-4,当同时有遗失和超期事务未处理时其值为-5,只有当其值为 1 时表示当前可借,否则当前不可借阅。 5.2 表表 UserRole 表名UserRole 列名数据类型空/非空约束条件表示含义 RoleIDint非空主键角色编号 RoleNamenvchar非空最大为 256 个字符角色名称 RoleDescribenvchar可以为空无角色描述 RoleBorrowCntint非空无可借阅书籍的最大数量 项目名称, 数据库设计报告 k7yeqs 2011Page 10 of 32 RoleBorrowDaysint非空无可借阅书籍的最大天数 RoleBorrowTimesint非空无可续借的次数 RoleContinueDaysint 非空无续借一次可多借阅书籍的天 数 RoleRightsint非空只能为权限表中已有 项的编号 角色所拥有的权限 补充说明RoleRights 为外键,关联着权限表中的权限编号 5.3 表表 UserRights 表名UserRights 列名数据类型空/非空约束条件表示含义 RightsIdint非空主键权限编号 RightsNamenvchar非空最大为 256 个字符权限名称 RightsDescribenvchar可以为空无权限描述 补充说明无 5.4 表表 OverLimitRecord 表名OverLimitRecord 列名数据类型空/非空约束条件表示含义 OLRIDint非空主键超期记录编号 OLRUserIDint非空无超期借阅书籍的读者编号 OLRBookIDint非空无超期被借阅的书籍编号 OverDaysint非空无超期天数 IsFineboolean非空无是否已经缴纳超期罚款的标识 OverCostint非空无超期应缴纳的罚款金额 补充说明OLRUserID 和 OLRBookID 为外键,分别关联用户表中的用户编号和图 书表中的图书编号 5.5 表表 LostRecord 表名LostRecord 列名数据类型空/非空约束条件表示含义 LostRecIDint非空主键书籍遗失记录编号 LostRecBookIDint非空无遗失的书籍编号 LostRecUserIDint非空无遗失书籍的用户编号 LostRecDatedate非空无书籍遗失事务等级日期 LostIsFineboolean非空无是否已经缴纳遗失书籍赔付款 LostReBuyboolean非空无是否已经重新购入该书籍 项目名称, 数据库设计报告 k7yeqs 2011Page 11 of 32 补充说明LostRecUserID 和 LostRecBookID 为外键,分别关联用户表中的用户编号 和图书表中的图书编号 5.6 表表 OrderRecord 表名OrderRecord 列名数据类型空/非空约束条件表示含义 OrderRecIDint非空主键预约图书记录的编号 OrderRecBookIDint非空无被预约图书的编号 OrderRecUserIDint非空无预约图书的用户编号 OrderRecDatedate非空无预约图书的日期 OrderIsFinishboolean非空无预约活动是否完成 补充说明OrderRecUserID 和 OrderRecBookID 为外键,分别关联用户表中的用户 编号和图书表中的图书编号 5.7 表表 BorrowRecord 表名OrderRecord 列名数据类型空/非空约束条件表示含义 BRDint非空主键借阅书籍记录的编号 BRUserIDint非空无借阅书籍的用户的编号 BRBookIDint非空无被借阅的书籍的编号 BRDatedate非空无借阅书籍的时间 BRIsBackboolean非空无是否已经归还书籍的标识位 BRBackDatedate非空无用户应该归还书籍的最大日期 BRIsContinueboolean非空无用户是否可以续借书籍 BRContinueTimesint非空无用户还可以续借该书籍的次数 BRIsOVerLimitboolean非空无借阅的书籍是否已经超期 BROverLimitFinevnchar可以为空无若书籍超期所应缴纳的超期款 补充说明OrderRecUserID 和 OrderRecBookID 为外键,分别关联用户表中的用户 编号和图书表中的图书编号 5.8 表表 Book 表名Book 列名数据类 型 空/非空约束条件表示含义 BookIDint非空主键书籍编号 BookNamenvchar非空最大长度为 256 个字符书籍名称 BookAuthornvchar非空最大长度为 256 个字符书籍的作者名 项目名称, 数据库设计报告 k7yeqs 2011Page 12 of 32 ISBNIDnvchar非空最大长度为 256 个字符书籍的 ISBN 码 Publishnvchar非空最大长度为 256 个字符书籍的出版社名 PublishPlacenvchar非空最大长度为 256 个字符书籍的出版地 PublishDatedate非空无书籍的出版时间 TotalWordsint非空无书籍的总字数 TotalPageint非空无书籍的总页数 BookPricenvchar非空无书籍的定价 BookAbstructnvchar非空无书籍的内容简介 BookCategoryint非空无书籍的类别 BookInDatedate非空无书籍的入库时间 BookLibraryint非空无书籍所在的图书分馆 IsBorrowboolean非空无标识书籍当前是否可借 BookKindint非空无书籍的种类 补充说明1.BookCategory 为外键,关联着图书类别表中的类别编号 2.BookKind 为外键,关联着图书种类表中的种类编号 3.图书类别表示图书的内容的类别,如哲学类,文学类,设置图书类别图 书可以方便用户进行查找和定位,图书的种类表示书籍的种类,如新书、 珍藏版书籍、外文书、中文书,设置图书种类是可能不同种类的书籍在超 期、遗失时的赔付额度不一样,如 1980 年前的书属于珍藏版的书,遗失后 应该按定价的 5 倍赔付等 4.当书籍当前已经被借出或者已经遗失了,则该书籍当前不可借阅 5.书籍作者的最大长度设为 256 是因为可能一本书的作者为多个,名字的 总长度较大 6.ISBN 码为图书的分类编码,同样的书籍的 ISBN 码应该一样 5.9 表表 Liabrary 表名Liabrary 列名数据类 型 空/非空约束条件表示含义 LiabraryIDint非空主键图书分馆编号 LibNamnvchar非空最大长度为 256 个字符图书分馆名称 LibPhonenvchar非空最大长度为 11图书分馆的联系电话 LibAddressnvchar非空最大长度为 256 个字符图书分馆的地址 LibAbstructnvchar非空无图书分馆的简介 补充说明一个图书管理系统可能同时管理位于不同位置的几个图书分馆,所以需要 设置图书分馆表,一本图书也应该属于某一个图书分馆 项目名称, 数据库设计报告 k7yeqs 2011Page 13 of 32 5.10 表表 BookCategory 表名BookCategory 列名数据类 型 空/非空约束条件表示含义 CategoryIDint非空主键图书类别编号 CategoryNamenvchar非空最大长度为 256 个字 符 图书类别名称 CategoryDescribenvchar非空无类别的简介 补充说明图书的类别是指图书内容的分类,如哲学类、历史类、计算机类等,将 图书按类别归类可方便用户的查找和借阅 5.11 表表 BookKind 表名BookKind 列名数据类型空/非空约束条件表示含义 KindIDint非空主键图书种类编号 KindNamenvchar非空最大长度为 256 个字符图书种类名称 KindDescribenvchar可以为空无图书种类的简介 OverLimitCostnvchar非空无图书超期的罚金额度 LostCostnvchar非空无图书遗失的罚金额度 补充说明图书可能会被划分为新书、珍藏版书籍、外文书、中文书等种类,根据种 类的不同书籍的超期、遗失的赔付金额也不同,如外文书遗失需要赔付两 倍定价的金额,而一般的中文书只需按定价赔付等,所以需要划分不同的 书籍种类 5.12 表表 SystemLog 表名SystemLog 列名数据类型空/非空约束条件表示含义 LogIDint非空主键系统日志编号 LogContentnvchar非空无系统日志内容 LogTimedate 2.数据库版本检查:数据库应该打了最新的 patchset。 SQLselect * from v$version; 3.查看 SGA 区域:SGA 区各项 buffer 之和应该小于系统物理内存的一半。 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 v$undostat Where begin_timesysdate-(1/12); 5.查看日志文件:数据库运行时,可以通过查询 v$log_history 来观察 log switch 的切换 时间。联机日志最好是业务非高峰期每小时切换一次,业务高峰期 20 分钟左右切换一次。 SQLselect to_char(first_time,yyyy-mm-dd hh24:mi:ss) change_time from v$log_history; 6.查看表空间:查看各个表空间所占的大小,剩余空间,使用空间百分比等信息,特别是当 业务表空间的剩余空间低于 50M 或者使用空间百分比大于 90%时,需要考虑增加表空间的大 小。 SQL select a.tablespace_name,a.bytes totalbytes,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 dba_jobs; 8.查看数据库连接用户:查看当前数据库连接的用户进程的具体信息,包括连接的数据库用 户名,机器名,运行的程序名,进程状态。 项目名称, 数据库设计报告 k7yeqs 2011Page 16 of 32 select username,machine,program,status from v$session where osuser -1 THEN tmpCondition := tmpCondition | ItemID; 项目名称, 数据库设计报告 k7yeqs 2011Page 19 of 32 -如果是根据用户的其他属性删除时 ELSE IF ItemName IS NOT NULL THEN tmpCondition := tmpCondition |UserName = |ItemName; END IF; IF ItemNum -1 THEN IF tmpCondition IS NOT NULL THEN tmpCondition := tmpCondition | UserRole = |ItemRole; ELSE tmpCondition := 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 NOT NULL THEN tmpCondition := tmpCondition | UserEmail = |ItemEmail; ELSE tmpCondition := tmpCondition | ADD UserEmail = |ItemEmail; END IF; 项目名称, 数据库设计报告 k7yeqs 2011Page 20 of 32 END IF; IF ItemTel IS NOT NULL THEN IF tmpCondition IS NOT NULL THEN tmpCondition := tmpCondition | UserTel = |ItemTel; ELSE tmpCondition := tmpCondition | ADD UserTel = |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 | UserBorrowCnt = |ItemBorrowCnt; ELSE tmpCondition := tmpCondition | ADD UserBorrowCnt = |ItemBorrowCnt; END IF; END IF; END IF; -执行删除语句 tmpCondition := DELETE FROM Users WHERE |tmpCondition; execute immediate tmpCondition; DelRes := 1; commit; EXCEPTION When NO_DATA_FOUND then DelRes := SQLERRM; When OTHERS then 项目名称, 数据库设计报告 k7yeqs 2011Page 21 of 32 DelRes := SQLERRM; ROLLBACK TO SAVEPOINT SP1; END; 存储过程名称存储过程名称UpdateOnUsers 存储过程描述存储过程描述更新记录项的存储过程 参数说明 参数一:需要更新的记录的查找条件,数组记录一次对应用户姓名、学号、 性别、所属角色编号、单位、邮箱和电话、密码 如果不需要某一项作为查找条件时,该项对应位置传入 NULL 参数二:记录需要更新的数据项,数组记录依次对应用户姓名、学号、性 别、所属角色编号、单位、邮箱和电话、密码 如果不需要更新某一项的值时,该项对应位置传入 NULL 最后一个参数为更新结果的返回值,成功时返回 1,否则返回出错代码 存储过程实现存储过程实现-创建一个数组类型,用以存储需要修改的记录的值 CREATE or replace TYPE Users_Arr AS varray(11) of varchar2(500); CREATE or REPLACE PROCEDURE UpdateOnUsers( ConditionArr in Users_Arr, ValueArr in Users_Arr, UpdateRes out integer)IS tmpCondition varchar(500); tmpValue varchar(500); BEGIN SAVEPOINT SP1; tmpCondition := NULL; tmpValue := NULL; IF ConditionArr(0) IS NOT NULL THEN tmpCondition := tmpCondition| UserID = |ConditionArr(0); END IF; IF ValueArr(0) IS NOT NULL THEN tmpValue := tmpValue| UserID = |ValueArr(0); END IF; IF ConditionArr(1) IS NOT NULL THEN IF tmpCondition IS NOT NULL THEN tmpCondition := tmpCondition| UserName = |ConditionArr(1); ELSE tmpCondition := tmpCondition| AND UserName = |ConditionArr(1); END IF; END IF; IF ValueArr(1) IS NOT NULL THEN 项目名称, 数据库设计报告 k7yeqs 2011Page 22 of 32 IF tmpValue IS NOT NULL THEN tmpValue := tmpValue| UserName = |ValueArr(1); ELSE tmpValue := tmpValue|, UserName = |ValueArr(1); END IF; END IF; IF ConditionArr(2) IS NOT NULL THEN IF tmpCondition IS NOT NULL THEN tmpCondition := tmpCondition| UserNum = |ConditionArr(2); ELSE tmpCondition := tmpCondition| AND UserNum = |ConditionArr(2); END IF; END IF; IF ValueArr(2) IS NOT NULL THEN IF tmpValue IS NOT NULL THEN tmpValue := tmpValue| UserNum = |ValueArr(2); ELSE tmpValue := tmpValue|, UserNum = |ValueArr(2); END IF; END IF; IF ConditionArr(3) IS NOT NULL THEN IF tmpCondition IS NOT NULL THEN tmpCondition := tmpCondition| UserSex = |ConditionArr(3); ELSE tmpCondition := tmpCondition| AND UserSex = |ConditionArr(3); END IF; END IF; IF ValueArr(3) IS NOT NULL THEN IF tmpValue IS NOT NULL THEN tmpValue := tmpValue| UserRole = |ValueArr(3); ELSE tmpValue := tmpValue|, UserRole = |ValueArr(3); END IF; END IF; IF ConditionArr(4) IS NOT NULL THEN IF tmpCondition IS NOT NULL THEN tmpCondition := tmpCondition| UserRole = |ConditionArr(4); ELSE tmpCondition := tmpCondition| AND UserRole = |ConditionArr(4); 项目名称, 数据库设计报告 k7yeqs 2011Page 23 of 32 END IF; END IF; IF ValueArr(4) IS NOT NULL THEN IF tmpValue IS NOT NULL THEN tmpValue := tmpValue| UserRole = |ValueArr(4); ELSE tmpValue := tmpValue|, UserRole = |ValueArr(4); END IF; END IF; IF ConditionArr(5) IS NOT NULL THEN IF tmpCondition IS NOT NULL THEN tmpCondition := tmpCondition| UserUnit = |ConditionArr(5); ELSE tmpCondition := tmpCondition| AND UserUnit = |ConditionArr(5); END IF; END IF; IF ValueArr(5) IS NOT NULL THEN IF tmpValue IS NOT NULL THEN tmpValue := tmpValue| UserUnit = |ValueArr(5); ELSE tmpValue := tmpValue|, UserUnit = |ValueArr(5); END IF; END IF; IF ConditionArr(6) IS NOT NULL THEN IF tmpCondition IS NOT NULL THEN tmpCondition := tmpCondition| UserEmail = |ConditionArr(6); ELSE tmpCondition := tmpCondition| AND UserEmail = |ConditionArr(6); END IF; END IF; IF ValueArr(6) IS NOT NULL THEN IF tmpValue IS NOT NULL THEN tmpValue := tmpValue| UserEmail = |ValueArr(6); ELSE tmpValue := tmpValue|, UserEmail = |ValueArr(6); END IF; END IF; IF ConditionArr(7) IS NOT NULL THEN IF tmpCondition IS NOT NULL THEN 项目名称, 数据库设计报告 k7yeqs 2011Page 24 of 32 tmpCondition := tmpCondition| UserTel = |ConditionArr(7); ELSE tmpCondition := tmpCondition| AND UserTel = |ConditionArr(7); END IF; END IF; IF ValueArr(7) IS NOT NULL THEN IF tmpValue IS NOT NULL THEN tmpValue := tmpValue| UserTel = |ValueArr(7); ELSE tmpValue := tmpValue|, UserTel = |ValueArr(7); END IF; END IF; IF ConditionArr(8) IS NOT NULL THEN IF tmpCondition IS NOT NULL THEN tmpCondition := tmpCondition| UserPsw = |ConditionArr(8); ELSE tmpCondition := tmpCondition| AND UserPsw = |ConditionArr(8); END IF; END IF; IF ValueArr(8) IS NOT NULL THEN IF tmpValue IS NOT NULL THEN tmpValue := tmpValue| UserPsw = |ValueArr(8); ELSE tmpValue := tmpValue|, UserPsw = |ValueArr(8); END IF; END IF; IF ConditionArr(9) IS NOT NULL THEN IF tmpCondition IS NOT NULL THEN tmpCondition := tmpCondition| UserIsBorrow = |ConditionArr(9); ELSE tmpCondition := tmpCondition| AND UserIsBorrow = |ConditionArr(9); END IF; END IF; IF ValueArr(9) IS NOT NULL THEN IF tmpValue IS NOT NULL THEN tmpValue := tmpValue| UserIsBorrow = |ValueArr(9); ELSE tmpValue := tmpValue|, UserIsBorrow = |ValueArr(9); END IF; 项目名称, 数据库设计报告 k7yeqs 2011Page 25 of 32 END IF; IF ConditionArr(10) IS NOT NULL THEN IF tmpCondition IS NOT NULL THEN tmpCondition := tmpCondition| UserBorrowCnt = |ConditionArr(10); ELSE tmpCondition := tmpCondition| AND UserBorrowCnt = |ConditionArr(10); END IF; END IF; IF ValueArr(10) IS NOT NULL THEN IF tmpValue IS NOT NULL THEN tmpValue := tmpValue| UserBorrowCnt = |ValueArr(10); ELSE tmpValue := tmpValue|, UserBorrowCnt = |ValueArr(10); END IF; END IF; strValues := UPDATE Users SET |strValues|WHERE |strCondition; execute immediate strValues; UpdateRes := 1; commit; EXCEPTION WHEN NO_DATA_FOUND THEN UpdateRes := SQLCODE; WHEN OTHERS THEN UpdateRes := SQLCODE; ROLLBACK TO SAVEPOINT SP1; END; 存储过程名称存储过程名称SearchOnUsers 存储过程描述存储过程描述查找记录项的存储过程 参数说明 参数一:需要更新的记录的查找条件,数组记录一次对应用户姓名、学号、 性别、所属角色编号、单位、邮箱和电话、密码 如果不需要某一项作为查找条件时,该项对应位置传入 NULL 参数二:查找返回的结果数组,数组记录依次对应用户姓名、学号、性别、 所属角色编号、单位、邮箱和电话、密码 最后一个参数为查找结果的返回值,成功时返回 1,否则返回出错代码 项目名称, 数据库设计报告 k7yeqs 2011Page 26 of 32 存储过程实现存储过程实现CREATE or REPLACE PROCEDURE SearchOnUsers( ConditionArr in Users_Arr, ValueArr out Users_Arr, SearchRes out integer)IS tmpCondition varchar(500); BEGIN SAVEPOINT SP1; tmpCondition := NULL; IF ConditionArr(0) IS NOT NULL THEN tmpCondition := tmpCondition | UserID = |ConditionArr(0); END IF; IF ConditionArr(1) IS NOT NULL THEN IF tmpCondition IS NOT NULL THEN tmpCondition := tmpCondition | UserName = |ConditionArr(1); ELSE tmpCondition := tmpCondition | ADD UserName = |ConditionArr(1); END IF; END IF; IF ConditionArr(2) IS NOT NULL THEN IF tmpCondition IS NOT NULL THEN tmpCondition := tmpCondition | UserNum = |ConditionArr(2); ELSE tmpCondition := tmpCondition | ADD UserNum = |ConditionArr(2); END IF; END IF; IF ConditionArr(3) IS NOT NULL THEN IF tmpCondition IS NOT NULL THEN tmpCondition := tmpCondition | UserSex = |ConditionArr(3); ELSE tmpCondition := tmpCondition | ADD UserSex = |ConditionArr(3); END IF; END IF; IF ConditionArr(4) IS NOT NULL THEN IF tmpCondition IS NOT NULL THEN tmpCondition := tmpCondition | UserRole = |ConditionArr(4); ELSE tmpCondition := tmpCondition | ADD UserRole = |ConditionArr(4); END IF; END IF; 项目名称, 数据库设计报告 k7yeqs 2011Page 27 of 32 IF ConditionArr(5) IS NOT NULL THEN IF tmpCondition IS NOT NULL THEN tmpCondition := tmpCondition | UserUnit = |ConditionArr(5); ELSE tmpCondition := tmpCondition | ADD UserUnit = |ConditionArr(5); END IF; END IF; IF ConditionArr(6) IS NOT NULL THEN IF tmpCondition IS NOT NULL THEN tmpCondition := tmpCondition | UserEmail = |ConditionArr(6); ELSE tmpCondition := tmpCondition | ADD UserEmail = |ConditionArr(6); END IF; END IF; IF ConditionArr(7) IS NOT NULL THEN IF tmpCondition IS NOT NULL THEN tmpCondition := tmpCondition | UserTel = |ConditionArr(7); ELSE tmpCondition := tmpCondition | ADD UserTel = |ConditionArr(7); END IF; END IF; IF ConditionArr(8) IS NOT NULL THEN IF tmpCondition IS NOT NULL THEN tmpCondition := tmpCondition | UserPsw = |ConditionArr(8); ELSE tmpCondition := tmpCondition | ADD UserPsw = |ConditionArr(8); END IF; END IF; IF ConditionArr(9) IS NOT NULL THEN IF tmpCondition IS NOT NULL THEN tmpCondition := tmpCondition | UserIsBorrow = |ConditionArr(9); ELSE tmpCondition := tmpCondition | ADD UserIsBorrow = |ConditionArr(9); END IF;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论