1、OA 办公自动化管理系统数据库设计说明书编写: 日期:2013-08-01审核: 日期:批准: 日期:受控状态: 是 否发布版次:2.0 日期:2013-08-05编号:OA 办公自动化管理系统数据库设计说明书OA 办公自动化管理系统数据库设计说明书 内部文档第 2 页 共 21 页变更记录日期 版本 变更说明 作者2013/08/02 1.0 数据字典设计2013/08/03 2.0 数据库设计2013/08/05 2.1 审核2013/08/08 2.5 升级及审核签字确认职务 姓名 签字 日期OA 办公自动化管理系统数据库设计说明书 内部文档第 3 页 共 21 页目 录1 引言 41.
2、1 预期的读者 41.2 数据库 41.3 目的和作用 42 数据字典设计 43 数据库设计 53.1 系统物理结构设计 53.2 表设计 53.2.1 TableName(表名的解释 ) 53.3 表之间的关联设计 53.4 存储过程设计 63.5 触发器设计 63.6 JOB 设计 .6OA 办公自动化管理系统数据库设计说明书 内部文档第 4 页 共 21 页1 引言1.1 预期的读者本文预期读者:OA 办公自动化管理系统的设计、开发人员;OA 办公自动化管理系统的验收、评审人员;OA 办公自动化管理系统的测试人员;客户方的市场部人员、开发人员。1.2 数据库 数据库采用 MSSQL SE
3、RVER 2008 R2 数据库名称:OASYSDB/OA 系统数据库1.3 目的和作用将数据分析的结果进一步整理,形成最终的计算机模型,以便开发人员建立物理数据库。2 数据字典设计数据字典的主要目的是提供查阅对不了解的条目的解释。在数据字典中记录数据元素的下列信息:一般信息(名字,别名,描述等) ,定义(数据类型,长度,结构等),使用特点(值的范围,使用频率,使用方式输入/输出/本地,条件值等) ,控制信息(来源,用户,使用它的程序,改变权等) ,分组信息(父结构,从属结构,物理位置记录、文件和数据库等) 。下面的例子是通过卡片来描述数据字典:名字:定货报表别名:定货信息描述:每天一次送给采
4、购员的需要定货的零件表定义:定货报表=零件编号+ 零件名称+定货数量+ 目前价格+主要供应商+次要供应商位置:输出到打印机名字:零件编号别名:描述:唯一地标识库存清单中一个特定零件的关键域定义:零件编号=8(字符)8位置:定货报表定货信息库存清单名字:定货数量别名:描述:某个零件一次定货的数量定义:定货数量=1(数字)5位置:定货报表定货信息OA 办公自动化管理系统数据库设计说明书 内部文档第 5 页 共 21 页2.1 个人信息数据项与数据流2.1.1 名字:人员编号描述:每个人员的唯一标识,用来区分人员定义:字符串类型 nvarchar(20)位置:个人信息2.1.2 名字:姓名描述:人员
5、姓名,对人员的称呼定义:字符串类型 nvarchar(20)位置:个人信息2.1.3 名字:性别描述:每个人员的性别,男或女定义:字符串类型 nvarchar(50)位置:基本信息2.1.4 名字:出生年月描述:人员的出生日期,精确到月份定义:日期类型 datetime位置:个人信息2.1.5 名字: 部门描述:人员所在部门名称,用部门编号标识定义:整型 int位置:部门信息2.1.6 名字:岗位描述:人员所处岗位名称,用岗位编号标识定义:整形 int位置:岗位信息2.1.7 名字:婚姻状况描述:人员的婚姻状况,分为“未婚”、“已婚”定义:字符串类型 nvarchar(20)位置:基本信息2.
6、1.8 名字: 联系电话描述:人员的联系电话,可以是固定电话或移动电话定义:字符串类型 nvarchar(50)位置:个人信息2.1.9 名字: 入职日期描述:人员的入职日期,精确到日定义:datetime位置:个人信息2.1.10 名字: 电子邮箱描述:人员常用的电子邮箱定义:字符串类型 nvarchar(50)位置:个人信息OA 办公自动化管理系统数据库设计说明书 内部文档第 6 页 共 21 页2.1.11 名字: 家庭地址描述:人员的居住地址定义:字符串类型 nvarchar(MAX)位置:个人信息2.1.12 名字: 照片描述:人员的正式头像,存储方式为照片的本地地址定义:字符串类型
7、 nvarchar(50)位置:个人信息2.1.13 名字: 密码描述:人员登录系统的密码,可修改定义:字符串类型 nvarchar(50)位置:个人信息2.1.14 名字: 旧密码描述:人员正在使用的密码定义:字符串类型 nvarchar(50)位置:个人信息2.1.15 名字: 新密码描述:人员新设置的密码定义:字符串类型 nvarchar(50)位置:个人信息2.1.16 名字: 工资描述:人员的月度工资,单位为元定义:货币类型 money位置:个人信息2.1.17 名字: 个人信息描述:个人的一切信息,部分为用户不可见或不可改定义:个人信息=人员编号+ 人员姓名+ 密码+性别+出生年月
8、+ 部门+岗位+工资+电子邮箱+ 联系电话+婚姻状况+入职日期 +家庭地址+照片位置:个人信息2.1.18 名字: 个人可修改信息描述:可由个人修改的部分个人信息定义:个人可修改信息=性别+出生年月+ 电子邮箱+联系电话+婚姻状况+ 家庭地址+照片位置:个人信息2.1.19 名字: 密码修改信息描述:个人的密码修改定义:密码修改信息=人员编号+姓名+ 新密码+旧密码位置:个人信息2.2 报销信息数据项与数据流2.2.1 名字:申请人描述:申请人的姓名定义:nvarchar(20)OA 办公自动化管理系统数据库设计说明书 内部文档第 7 页 共 21 页位置:个人信息2.2.2 名字:报销类型描
9、述:报销的类型,分为差旅报销跟其他报销两种定义:字符串类型 nvarchar(50)位置:基本信息2.2.3 名字:申请金额描述:报销的金额,单位为元定义:货币类型 money位置:报销信息2.2.4 名字:申请理由描述:申请报销的理由,一般为报销来源内容定义:字符串类型 nvarchar(MAX)位置:申请报销信息2.2.5 名字:申请日期描述:申请报销或请假的日期,默认为申请报销或请假的当天定义:日期类型 date位置:报销信息2.2.6 名字:报销序号描述:每条报销信息的唯一标识,用来区分不同的报销信息定义:整形 int位置:报销信息2.2.7 名字:报销状态描述:报销的审批状态,分为批
10、准、不批准、等待审核定义:字符串类型 nvarchar(50)位置:基本信息2.2.8 名字:经理意见描述:经理的审批意见,如果不批准则为报销意见返回给报销人员,如果批准则提交给财务部,如果经理未审批则为空定义:字符串类型 nvarchar(MAX)位置:报销信息2.2.9 名字:财务部意见描述:财务部的审批意见,如果不批准则为报销意见返回给报销人员,如果批准则提交给总经理,如果经理未审批则为空定义:字符串类型 nvarchar(MAX)位置:报销信息2.2.10 名字:总经理意见描述:总经理的审批意见,如果总经理已审核则为报销意见返回给报销人员,如果经理未审批则为空定义:字符串类型 nvar
11、char(MAX)位置:报销信息2.2.11 名字:报销意见描述:报销审核后的报销意见,可能是经理意见、财务部意见或总经理意见定义:字符串类型 nvarchar(MAX)位置:报销信息OA 办公自动化管理系统数据库设计说明书 内部文档第 8 页 共 21 页2.2.12 名字:申请报销描述:申请报销需要提交的信息定义:申请报销=申请人+ 报销类型+ 报销金额+申请理由+ 申请日期位置:报销信息2.2.13 名字:查看个人报销描述:查看人员的报销情况,当使用者为经理时,查看经理所管理的部门的报销情况;当使用者为总经理时,可查看整个公司的报销情况定义:报销序号+部门+ 报销状态+ 报销意见+申请报
12、销位置:报销信息2.2.14 名字:审核报销信息描述:全部申请报销的审核信息,包括批准、不批准和等待审核的定义:报销序号+部门+ 报销状态+ 经理意见+财务部意见+ 总经理意见+ 申请报销位置:报销信息2.2.15 名字:报销信息描述:包含申请报销的审核报销的信息定义:报销信息=查看个人报销+审核报销信息位置:报销信息2.3 请假信息数据项与数据流2.3.1 名字:申请部门描述:请假人员所在部门定义:字符串类型 nvarchar(50)位置:部门信息2.3.2 名字:起始时间描述:所请假期的开始时间定义:datetime位置:请假信息2.3.3 名字:终止时间描述:所请假期的终止时间定义:da
13、tetime位置:请假信息2.3.4 名字:请假天数描述:请假的时间,以天为单位,值为终止时间减去起始时间定义:datetime位置:请假信息2.3.5 名字:请假类别描述:请假的类型,分为外出、身体不适、其他定义:字符串类型 nvarchar(50)位置:基本信息2.3.6 名字:请假事由描述:请假的理由,很大程度上决定了请假的成功与否定义:字符串类型 nvarchar(MAX)OA 办公自动化管理系统数据库设计说明书 内部文档第 9 页 共 21 页位置:请假信息2.3.7 名字:审批人描述:审批申请人的请假信息,一般为该部门的经理定义:字符串类型 nvarchar(20)位置:请假信息2
14、.3.8 名字:请假序号描述:请假信息的唯一标识,用来区分每条请假信息定义:整形 int位置:请假信息2.3.9 名字:申请状态描述:请假的申请状态,分为批准、不批准和等待审核定义:字符串类型 nvarchar(50)位置:请假信息2.3.10 名字:回执描述:审批人审批请假信息后给申请人的回复定义:字符串类型 nvarchar(50)位置:请假信息2.3.11 名字:请假申请另别:请假条描述:请假人提交的申请信息定义:请假申请=申请人+ 申请部门+ 申请日期+起始时间+ 终止时间+ 请假类型+请假事由+ 审批人位置:请假信息2.3.12 名字:请假审批描述:审批人对请假申请的查看与审批信息定
15、义:请假审批=申请人+ 申请部门+ 申请日期+起始时间+ 终止时间+ 请假类型+请假事由+ 回执+申请状态+请假序号位置:请假信息2.3.13 名字:请假信息描述:请假模块所包含的信息定义:请假审批+审批人位置:请假信息2.4 公告信息数据项与数据流2.4.1 名字: 公告范围描述:公告所通知的范围,以部门为单位定义:字符串类型 nvarchar(50)位置:部门信息2.4.2 名字: 发布日期描述:公告的发布日期,默认为添加公告的日期定义:datetime位置:公告信息2.4.3 名字: 公告编号描述:公告的唯一标识,用于标记每条公告OA 办公自动化管理系统数据库设计说明书 内部文档第 10
16、 页 共 21 页定义:整形 int位置:公告信息2.4.4 名字: 公告标题描述:公告的主题,应言简意赅,让人对公告的意向的所了解定义:字符串类型 nvarchar(50)位置:公告信息2.4.5 名字: 公告内容描述:公告的内容,为公告的主要部门,讲解此公告的具体事项定义:字符串类型 nvarchar(MAX)位置:公告信息2.4.6 名字: 公告信息描述:每条公告所应该包含的信息定义:公告信息=公告范围+ 发布日期+ 公告编号+公告标题+公告内容位置:公告信息2.5 人员结构数据项与数据流2.5.1 名字: 岗位编号描述:每个岗位的唯一标识,用来区分不同的岗位定义:整形 int位置:岗位
17、信息2.5.2 名字: 岗位名称描述:岗位的名称,一般用来大概描述岗位的职责定义:字符串类型 nvarchar(50)位置:岗位信息2.5.3 名字: 所属部门描述:岗位所属的部门,与部门名称对应。一般岗位都有其所属部门,当然较高级别的岗位可能没有定义:字符串类型 nvarchar(50)位置:岗位信息2.5.4 名字: 岗位人数描述:岗位所在职人数,能较清晰地了解到此岗位目前有多少在职人员定义:整形 int位置:岗位信息2.5.5 名字: 岗位修改信息描述:岗位可进行修改的信息,需要拥有一定的权限才可进行操作定义:岗位信息=岗位编号+ 岗位名称+ 所属部门位置:岗位信息2.5.6 名字: 岗
18、位信息描述:岗位所拥有的信息定义:岗位信息=岗位编号+ 岗位名称+ 所属部门+岗位人数位置:岗位信息2.5.7 名字: 部门编号描述:每个部门的唯一标识,用来区分不同的部门OA 办公自动化管理系统数据库设计说明书 内部文档第 11 页 共 21 页定义:整形 int位置:部门信息2.5.8 名字: 部门名称描述:部门的名称,一般用来大概描述部门的功能定义:字符串类型 nvarchar(50)位置:部门信息2.5.9 名字: 部门经理描述:部门的经理,负责管理一个部门的人员。存储该人员的人员编号定义:整形 int位置:个人信息2.5.10 名字: 部门人数描述:部门拥有的人数,衡量一个部门重要性
19、的指标定义:整形 int位置:部门信息2.5.11 名字: 部门修改信息描述:部门可进行修改的信息,需要拥有一定的权限才可以操作定义:部门修改信息=部门编号+部门名称+ 部门经理位置:部门信息2.5.12 名字: 部门信息描述:一个部门所拥有的信息定义:部门信息=部门编号+ 部门名称+ 部门经理+部门人数位置:部门信息2.5.13 名字: 权限编号描述:权限的唯一标识,用来区分每个权限定义:整形 int位置:权限信息2.5.14 名字: 权限名称描述:权限的名称,说明人员可以进行的操作定义:字符串类型 nvarchar(50)位置:权限信息2.5.15 名字: 所属父级权限描述:将权限分级,所
20、以二级权限拥有父级权限,用权限编号来标识定义:整形 int位置:权限信息2.5.16 名字: URL描述:权限以访问地址为单位,一个 URL 存储一个权限可以访问的地址定义:字符串类型 nvarchar(MAX)位置:权限信息2.5.17 名字: 未分配权限描述:人员没有拥有的权限,用权限编号来标识定义:整型 int位置:人员权限信息2.5.18 名字: 已分配权限描述:人员已经拥有的权限,用权限编号来标识OA 办公自动化管理系统数据库设计说明书 内部文档第 12 页 共 21 页定义:整型 int位置:人员权限信息2.5.19 名字: 人员权限编号描述:人员拥有的每条权限的唯一标识定义:整型
21、 int位置:人员权限信息2.5.20 名字:权限信息描述:每个权限所拥有的信息定义:权限信息=权限编号+ 权限名称+ 所属父级权限+URL位置:权限信息2.5.21 名字: 人员权限信息描述:表示每个人员已经拥有的权限定义:人员权限信息=人员权限编号+人员编号+ 已分配权限位置:人员权限信息2.5.22 名字:分配权限描述:为人员分配权限定义:分配权限=人员权限信息+姓名+ 部门+未分配权限位置:人员权限信息2.6 基本信息的数据项与数据流2.6.1 名字: 基本信息编号描述:每条基本信息的唯一标识,用来区分基本信息定义:整形 int位置:基本信息2.6.2 名字: 基本信息类型描述:基本可
22、选信息如:性别、婚姻状况、请假事由、报销理由、申请状态等的类型定义:字符串类型 nvarchar(50)位置:基本信息2.6.3 名字: 基本信息值描述:基本可选信息如:性别、婚姻状况、请假事由、报销理由、申请状态等的值定义:字符串类型 nvarchar(50)位置:基本信息2.6.4 名字:扩展内容描述:每一条基本信息的扩展内容,用来对基本信息进行说明定义:字符串类型 nvarchar(50)位置:基本信息2.6.5 名字: 基本信息描述:每一条基本信息包含的内容定义:基本信息=基本信息编号+基本信息类型+ 基本信息值+扩展内容位置:基本信息OA 办公自动化管理系统数据库设计说明书 内部文档
23、第 13 页 共 21 页3 数据库设计3.1 E-R 图3.2 系统物理结构设计根据硬件设备和数据库平台系统,对数据库系统的物理存储结构进行规划,估计数据库的大小,增长速度,各主要部分的访问频度。确定数据文件的命名,日志文件的命名。数据文件和日志文件的物理存放位置,如果有多个存储设备,需要规划数据文件的组织方式。系统内存使用配置,一般来说,数据库系统会自动维护系统内存,但有时为了某些性能问题,可以根据需要对数据库的内存管理进行另行配置。/* Object: Database OASYSDB Script Date: 08/06/2013 13:11:36 */CREATE DATABASE
24、OASYSDB ON PRIMARY ( NAME = NOASYSDB, FILENAME = ND:Program FilesMicrosoft SQL ServerMSSQL10_50.MSSQL2008MSSQLDATAOASYSDB.mdf , SIZE = 5120KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )OA 办公自动化管理系统数据库设计说明书 内部文档第 14 页 共 21 页LOG ON ( NAME = NOASYSDB_log, FILENAME = ND:Program FilesMicrosoft SQL Serve
25、rMSSQL10_50.MSSQL2008MSSQLDATAOASYSDB_log.ldf , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)GOALTER DATABASE OASYSDB SET COMPATIBILITY_LEVEL = 100GOIF (1 = FULLTEXTSERVICEPROPERTY(IsFullTextInstalled)beginEXEC OASYSDB.dbo.sp_fulltext_database action = enableendGOALTER DATABASE OASYSDB SET AN
26、SI_NULL_DEFAULT OFF ALTER DATABASE OASYSDB SET ANSI_NULLS OFF ALTER DATABASE OASYSDB SET ANSI_PADDING OFF ALTER DATABASE OASYSDB SET ANSI_WARNINGS OFF ALTER DATABASE OASYSDB SET ARITHABORT OFF ALTER DATABASE OASYSDB SET AUTO_CLOSE OFF ALTER DATABASE OASYSDB SET AUTO_CREATE_STATISTICS ON ALTER DATABA
27、SE OASYSDB SET AUTO_SHRINK OFF ALTER DATABASE OASYSDB SET AUTO_UPDATE_STATISTICS ON ALTER DATABASE OASYSDB SET CURSOR_CLOSE_ON_COMMIT OFF ALTER DATABASE OASYSDB SET CURSOR_DEFAULT GLOBAL ALTER DATABASE OASYSDB SET CONCAT_NULL_YIELDS_NULL OFF ALTER DATABASE OASYSDB SET NUMERIC_ROUNDABORT OFF ALTER DA
28、TABASE OASYSDB SET QUOTED_IDENTIFIER OFF ALTER DATABASE OASYSDB SET RECURSIVE_TRIGGERS OFF ALTER DATABASE OASYSDB SET DISABLE_BROKER ALTER DATABASE OASYSDB SET AUTO_UPDATE_STATISTICS_ASYNC OFF ALTER DATABASE OASYSDB SET DATE_CORRELATION_OPTIMIZATION OFF ALTER DATABASE OASYSDB SET TRUSTWORTHY OFF ALT
29、ER DATABASE OASYSDB SET ALLOW_SNAPSHOT_ISOLATION OFF ALTER DATABASE OASYSDB SET PARAMETERIZATION SIMPLE ALTER DATABASE OASYSDB SET READ_COMMITTED_SNAPSHOT OFFALTER DATABASE OASYSDB SET HONOR_BROKER_PRIORITY OFF ALTER DATABASE OASYSDB SET READ_WRITE ALTER DATABASE OASYSDB SET RECOVERY FULL ALTER DATA
30、BASE OASYSDB SET MULTI_USER ALTER DATABASE OASYSDB SET PAGE_VERIFY CHECKSUM ALTER DATABASE OASYSDB SET DB_CHAINING OFF OA 办公自动化管理系统数据库设计说明书 内部文档第 15 页 共 21 页3.3 表设计根据数据字典的设计,进一步细化为数据库表的设计。表的设计包括以下内容: 表名(中英文) 字段名 字段数据类型 字段是否为空 字段的默认值 备注,对字段的解释性说明:主键、外键、是否自动增一、是否为索引、是否唯一、是否进行数据检查等。3.3.1 OA_AllEmployee
31、s (所有员工表)字段名 数据类型 是否为空 默认值 备注 含义AE_ID Int 否 主键,自增 主键,无意义AE_Number Nvarchar(5) 否 唯一 员工工号AE_Name Nvarchar(30) 否 员工姓名AE_Password Nvarchar(6) 否 123456 登陆密码AE_Sex Nchar(1) 否 男或女 检查 性别AE_Brithday Datetime 否 出生年月AE_PositionID Int 否 外键 职位 IDAE_DepartmentID Int 否 外键 部门 IDAE_Salary Money 否 工资AE_Telephone Nvar
32、char(20) 是 电话AE_Address Nvarchar(50) 是 地址AE_Email Nvarchar(50) 是 邮箱AE_EntryDate Datetime 否 NOW() 入职时间AE_MaritalStatusIDInt 否 外键 婚姻状况 IDAE_PhotoUrl Nvarchar(MAX) 否 照片地址3.3.2 OA_Department(部门表)字段名 数据类型 是否为空 默认值 备注 含义DEP_ID Int 否 主键,自增 主键,无意OA 办公自动化管理系统数据库设计说明书 内部文档第 16 页 共 21 页义DEP_Number Nvarchar(3)
33、否 部门编号DEP_Name Nvarchar(30) 否 部门名称DEP_ManagerID Int 否 外键 部门经理 ID3.3.3 OA_Position(职位表)字段名 数据类型 是否为空 默认值 备注 含义POS_ID Int 否 主键, 自增 主键,无意义POS_Nmae Nvarchar(30) 否 职位名称POS_DepartmentID Int 否 外键 所属部门3.3.4 OA_Power(权限表 )字段名 数据类型 是否为空 默认值 备注 含义POW_ID Int 否 主键, 自增 主键,无意义POW_Name Nvarchar(50) 否 权限名称POW_Url Nv
34、archar(MAX) 否 权限 URLPOW_ParentID Int 否 外键 上级权限模块3.3.5 OA_EmployeePower(员工权限表)中间表字段名 数据类型 是否为空 默认值 备注 含义EP_EmployeeID Int 否 外键 员工 IDEP_PowerID Int 否 外键 权限 ID3.3.6 OA_Announcement(公告表)字段名 数据类型 是否为空 默认值 备注 含义AM_ID Int 否 主键, 自增 主键,无意义AM_Number Nvarchar(50) 否 公告编号AM_Theme Nvarchar(100) 否 公告主题AM_Content N
35、varchar(500) 否 公告内容AM_Datetime Datetime 否 NOW() 公告时间OA 办公自动化管理系统数据库设计说明书 内部文档第 17 页 共 21 页3.3.7 OA_AnnouncementRange(公告范围表)中间表字段名 数据类型 是否为空 默认值 备注 含义AR_AnnocementID Int 否 外键 公告 IDAR_DepartmentID Int 否 外键 部门 ID3.3.8 OA_AskForLeave(请假表)字段名 数据类型 是否为空 默认值 备注 含义AFL_ID Int 否 自增 主键 主键,无意义AFL _EmployeeID In
36、t 否 外键 员工 IDAFL _ApplicationDate Datetime 否 NOW() 申请日期AFL _StartDate Datetime 否 开始日期AFL _EndDate Datetime 否 结束日期AFL _Content Nvarchar(Max) 否 请假事由AFL _TypeID Int 否 外键 请假类型AFL _ApproveStatus Nvarchar(50) 否 “批准”或“等待审核”或“不批准”审核状态AFL _ ApproveContent Nvarchar(Max) 否 审核回复AFL _ ApproveDate Datetime 否 审核时间3
37、.3.9 OA_Reimburse(报销表)字段名 数据类型 是否为空 默认值 备注 含义RE_ID Int 否 主键,自增 主键,无意义RE_EmployeeID Int 否 外键 员工 IDRE_ApplicationDate Datetime 否 NOW() 申请日期RE_Content Nvarchar(MAX) 否 申请内容RE_Money money 否 金额RE_TypeID Int 否 外键 报销类型 IDRE_ApproveStatus Nvarchar(50) 否 报销状态OA 办公自动化管理系统数据库设计说明书 内部文档第 18 页 共 21 页3.3.10BaseInf
38、o(基本信息表) 数据字典表 表级多语言扩展字段名 数据类型 是否为空 默认值 备注 含义BI_ID Int 否 主键 主键,不自增BI_Type Nvarchar(50) 否 数据类型BI_Value Nvarchar(50) 否 数据的值BI_ExtnsionValue Nvarchar(50) 是 扩展值表设计中应注意的问题:1对于字符类型的字段,要仔细确认字段的可能长度。在 SQL Server 数据库设计中,一般来说,对于定长的字符数据字段,去字符类型(char),对于不定长的,取变长字符类型(varchar)。2对于以分类形式出现的字段,建议不使用字符类型,而使用数字类型。如:人员
39、分类为高职、中职、低职;如果用字符类型,则将这些字符串需要入库;如果使用数字类型分别用 1、2、3 代表高职、中职、低职,则入库的是数字信息,从程序编写的角度考虑,后者更好维护一些,主要体现在如果是多语言版本时,我们不需要在程序中将这些字符串信息进行判断处理。3.4 表之间的关联设计为了保证数据的完整性,需要对表之间相互的数据进行约束,主要是通过外键来实现数据增删时的数据完备。OA 办公自动化管理系统数据库设计说明书 内部文档第 19 页 共 21 页3.5 存储过程设计存储过程是一组预先定义并编译好的 SQL 语句,可以接受参数、返回状态值和参数值,并可以嵌套调用。使用存储过程可以改变 SQ
40、L 语句的运行性能,提高其执行效率。存储过程还可用做一种安全机制,使用户通过它访问未授权的表或视图。无。3.6 触发器设计触发器是一种特殊的存储过程,当表中的数据被修改时,由系统自动执行。使用触发器可以实施更为复杂的的数据完整性约束。触发器:报销状态的改变状态值:最终状态:批准,不批准中间状态:等待经理审核、等待财务审核、等待总经理审核。代码:CREATE TRIGGER dbo.RA_InsertAndUpdateON dbo.ReimburseApproveFOR INSERT,UPDATE ASDECLARE RA_Who VARCHAR(MAX), RA_IsApprove BIT,
41、insertID INTSELECT RA_Who= RA_Who, RA_IsApprove=RA_IsApprove, insertID= ReIDFROM INSERTEDIF (RA_Who=经理)BEGINIF (RA_IsApprove=1)BEGINUPDATE Reimburse SET ReApproveState=等待财务部审核WHERE Reimburse.ID=insertID ENDELSE IF (RA_IsApprove=0)BEGINUPDATE Reimburse SET ReApproveState=不批准WHERE Reimburse.ID=insertI
42、DENDELSEOA 办公自动化管理系统数据库设计说明书 内部文档第 20 页 共 21 页BEGINUPDATE Reimburse SET ReApproveState=等待经理审核WHERE Reimburse.ID=insertIDENDENDIF (RA_Who=财务)BEGINIF (RA_IsApprove=1)BEGINUPDATE Reimburse SET ReApproveState=等待总经理审核WHERE Reimburse.ID=insertID ENDELSE IF (RA_IsApprove=0)BEGINUPDATE Reimburse SET ReAppro
43、veState=不批准WHERE Reimburse.ID=insertIDENDELSEBEGINUPDATE Reimburse SET ReApproveState=等待财务审核WHERE Reimburse.ID=insertIDENDENDIF (RA_Who=总经理)BEGINIF (RA_IsApprove=1)BEGINUPDATE Reimburse SET ReApproveState=批准WHERE Reimburse.ID=insertID ENDELSE IF (RA_IsApprove=0)BEGINUPDATE Reimburse SET ReApproveState=不批准WHERE Reimburse.ID=insertIDENDOA 办公自动化管理系统数据库设计说明书 内部文档第 21 页 共 21 页ELSEBEGINUPDATE Reimburse SET ReApproveState=等待总经理审核WHERE Reimburse.ID=insertIDENDEND