OA办公自动化管理系统 数据库设计说明书
编写: 日期:2013-08-01 审核: 日期: 批准: 日期: 受控状态: 是 否
发布版次:2.0 日期:2013-08-05 编号:
OA办公自动化管理系统数据库设计说明书 内部文档
变更记录
日期 2013/08/02 2013/08/03 2013/08/05 2013/08/08
1.0 2.0 2.1 2.5 版本 变更说明 数据字典设计 数据库设计 审核 升级及审核 作者 签字确认
职务 姓名 签字 日期 第 2 页 共 20 页
OA办公自动化管理系统数据库设计说明书 内部文档
目 录
1
引言 .......................................................................................................................................... 4 1.1 1.2 1.3 2 3
预期的读者 ....................................................................................................................... 4 数据库 ............................................................................................................................... 4 目的和作用 ....................................................................................................................... 4
数据字典设计........................................................................................................................... 4 数据库设计............................................................................................................................. 13 3.1 系统物理结构设计 ......................................................................................................... 13 3.2 表设计 ............................................................................................................................. 15 3.2.1 TableName(表名的解释) ........................................................................................ 15 3.3 表之间的关联设计 ......................................................................................................... 18 3.4 存储过程设计 ................................................................................................................. 18 3.5 触发器设计 ..................................................................................................................... 18 3.6 JOB设计 ............................................................................................ 错误!未定义书签。
第 3 页 共 20 页
OA办公自动化管理系统数据库设计说明书 内部文档
1 引言
1.1 预期的读者
本文预期读者:
OA办公自动化管理系统的设计、开发人员; OA办公自动化管理系统的验收、评审人员; OA办公自动化管理系统的测试人员; 客户方的市场部人员、开发人员。
1.2 数据库
数据库采用 MSSQL SERVER 2008 R2 数据库名称:OASYSDB/OA系统数据库
1.3 目的和作用
将数据分析的结果进一步整理,形成最终的计算机模型,以便开发人员建立物理数据库。
2 数据字典设计
数据字典的主要目的是提供查阅对不了解的条目的解释。在数据字典中记录数据元素的下列信息:一般信息(名字,别名,描述等),定义(数据类型,长度,结构等),使用特点(值的范围,使用频率,使用方式—输入/输出/本地,条件值等),控制信息(来源,用户,使用它的程序,改变权等),分组信息(父结构,从属结构,物理位置—记录、文件和数据库等)。
下面的例子是通过卡片来描述数据字典:
名字:定货报表 名字:零件编号 名字:定货数量 别名:定货信息 别名: 别名: 描述:每天一次送给采购员的需描述:唯一地标识库存清单中一描述:某个零件一次定货的 要定货的零件表 个特定零件的关键域 数量 定义:定货报表=零件编号+零件定义:零件编号=8(字符)8 定义:定货数量=1(数字)5 名称+定货数量+目前价格+主位置:定货报表 位置:定货报表 要供应商+次要供应商 定货信息 定货信息 位置:输出到打印机 库存清单
第 4 页 共 20 页
OA办公自动化管理系统数据库设计说明书
2.1个人信息数据项与数据流
2.1.1名字:人员编号
描述:每个人员的唯一标识,用来区分人员 定义:字符串类型nvarchar(20) 位置:个人信息 2.1.2名字:姓名
描述:人员姓名,对人员的称呼 定义:字符串类型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.1.8名字: 联系电话
描述:人员的联系电话,可以是固定电话或移动电话定义:字符串类型nvarchar(50) 位置:个人信息 2.1.9名字: 入职日期
描述:人员的入职日期,精确到日 定义:datetime 位置:个人信息 2.1.10名字: 电子邮箱
描述:人员常用的电子邮箱 定义:字符串类型nvarchar(50) 位置:个人信息
内部文档
第 5 页 共 20 页
OA办公自动化管理系统数据库设计说明书 内部文档
2.1.11名字: 家庭地址 描述:人员的居住地址
定义:字符串类型nvarchar(MAX)
位置:个人信息 2.1.12名字: 照片
描述:人员的正式头像,存储方式为照片的本地地址 定义:字符串类型nvarchar(50) 位置:个人信息 2.1.13名字: 密码
描述:人员登录系统的密码,可修改 定义:字符串类型nvarchar(50) 位置:个人信息 2.1.14名字: 旧密码
描述:人员正在使用的密码 定义:字符串类型nvarchar(50) 位置:个人信息 2.1.15名字: 新密码
描述:人员新设置的密码
定义:字符串类型nvarchar(50) 位置:个人信息 2.1.16名字: 工资
描述:人员的月度工资,单位为元 定义:货币类型money 位置:个人信息 2.1.17名字: 个人信息
描述:个人的一切信息,部分为用户不可见或不可改
定义:个人信息=人员编号+人员姓名+密码+性别+出生年月+部门+岗位+工资+电子邮箱+联系电话+婚姻状况+入职日期+家庭地址+照片
位置:个人信息
2.1.18名字: 个人可修改信息
描述:可由个人修改的部分个人信息 定义:个人可修改信息=性别+出生年月+电子邮箱+联系电话+婚姻状况+家庭地址+照片 位置:个人信息
2.1.19名字: 密码修改信息 描述:个人的密码修改
定义:密码修改信息=人员编号+姓名+新密码+旧密码 位置:个人信息
2.2报销信息数据项与数据流
2.2.1名字:申请人
描述:申请人的姓名 定义:nvarchar(20) 位置:个人信息
第 6 页 共 20 页
OA办公自动化管理系统数据库设计说明书 内部文档
2.2.2名字:报销类型
描述:报销的类型,分为差旅报销跟其他报销两种 定义:字符串类型nvarchar(50) 位置:基本信息 2.2.3名字:申请金额
描述:报销的金额,单位为元 定义:货币类型money 位置:报销信息 2.2.4名字:申请理由
描述:申请报销的理由,一般为报销来源内容 定义:字符串类型nvarchar(MAX) 位置:申请报销信息 2.2.5名字:申请日期
描述:申请报销或请假的日期,默认为申请报销或请假的当天 定义:日期类型date 位置:报销信息 2.2.6名字:报销序号
描述:每条报销信息的唯一标识,用来区分不同的报销信息 定义:整形int 位置:报销信息 2.2.7名字:报销状态
描述:报销的审批状态,分为批准、不批准、等待审核 定义:字符串类型nvarchar(50) 位置:基本信息 2.2.8名字:经理意见
描述:经理的审批意见,如果不批准则为报销意见返回给报销人员,如果批准则提交给财务部,如果经理未审批则为空
定义:字符串类型nvarchar(MAX) 位置:报销信息 2.2.9名字:财务部意见
描述:财务部的审批意见,如果不批准则为报销意见返回给报销人员,如果批准则提交给总经理,如果经理未审批则为空
定义:字符串类型nvarchar(MAX) 位置:报销信息
2.2.10名字:总经理意见
描述:总经理的审批意见,如果总经理已审核则为报销意见返回给报销人员,如果经理未审批则为空
定义:字符串类型nvarchar(MAX) 位置:报销信息 2.2.11名字:报销意见
描述:报销审核后的报销意见,可能是经理意见、财务部意见或总经理意见 定义:字符串类型nvarchar(MAX) 位置:报销信息 2.2.12名字:申请报销
第 7 页 共 20 页
OA办公自动化管理系统数据库设计说明书 内部文档
描述:申请报销需要提交的信息
定义:申请报销=申请人+报销类型+报销金额+申请理由+申请日期 位置:报销信息
2.2.13名字:查看个人报销
描述:查看人员的报销情况,当使用者为经理时,查看经理所管理的部门的报销情况; 当使用者为总经理时,可查看整个公司的报销情况 定义:报销序号+部门+报销状态+报销意见+申请报销 位置:报销信息
2.2.14名字:审核报销信息
描述:全部申请报销的审核信息,包括批准、不批准和等待审核的
定义:报销序号+部门+报销状态+经理意见+财务部意见+总经理意见+申请报销 位置:报销信息 2.2.15名字:报销信息
描述:包含申请报销的审核报销的信息
定义:报销信息=查看个人报销+审核报销信息 位置:报销信息
2.3请假信息数据项与数据流
2.3.1名字:申请部门
描述:请假人员所在部门
定义:字符串类型nvarchar(50) 位置:部门信息 2.3.2名字:起始时间
描述:所请假期的开始时间 定义:datetime 位置:请假信息 2.3.3名字:终止时间
描述:所请假期的终止时间 定义:datetime 位置:请假信息 2.3.4名字:请假天数
描述:请假的时间,以天为单位,值为终止时间减去起始时间 定义:datetime 位置:请假信息 2.3.5名字:请假类别
描述:请假的类型,分为外出、身体不适、其他 定义:字符串类型nvarchar(50) 位置:基本信息 2.3.6名字:请假事由
描述:请假的理由,很大程度上决定了请假的成功与否 定义:字符串类型nvarchar(MAX) 位置:请假信息 2.3.7名字:审批人
第 8 页 共 20 页
OA办公自动化管理系统数据库设计说明书 内部文档
描述:审批申请人的请假信息,一般为该部门的经理 定义:字符串类型nvarchar(20) 位置:请假信息 2.3.8名字:请假序号
描述:请假信息的唯一标识,用来区分每条请假信息 定义:整形int 位置:请假信息 2.3.9名字:申请状态
描述:请假的申请状态,分为批准、不批准和等待审核 定义:字符串类型nvarchar(50) 位置:请假信息 2.3.10名字:回执
描述:审批人审批请假信息后给申请人的回复 定义:字符串类型nvarchar(50) 位置:请假信息 2.3.11名字:请假申请 另别:请假条
描述:请假人提交的申请信息 定义:请假申请=申请人+申请部门+申请日期+起始时间+终止时间+请假类型+请假事由+审批人
位置:请假信息 2.3.12名字:请假审批
描述:审批人对请假申请的查看与审批信息 定义:请假审批=申请人+申请部门+申请日期+起始时间+终止时间+请假类型+请假事由+回执+申请状态+请假序号
位置:请假信息 2.3.13名字:请假信息
描述:请假模块所包含的信息 定义:请假审批+审批人 位置:请假信息
2.4公告信息数据项与数据流
2.4.1名字: 公告范围
描述:公告所通知的范围,以部门为单位 定义:字符串类型nvarchar(50) 位置:部门信息 2.4.2名字: 发布日期
描述:公告的发布日期,默认为添加公告的日期 定义:datetime 位置:公告信息 2.4.3名字: 公告编号
描述:公告的唯一标识,用于标记每条公告 定义:整形int 位置:公告信息
第 9 页 共 20 页
OA办公自动化管理系统数据库设计说明书 内部文档
2.4.4名字: 公告标题
描述:公告的主题,应言简意赅,让人对公告的意向的所了解 定义:字符串类型nvarchar(50) 位置:公告信息 2.4.5名字: 公告内容
描述:公告的内容,为公告的主要部门,讲解此公告的具体事项 定义:字符串类型nvarchar(MAX)
位置:公告信息 2.4.6名字: 公告信息
描述:每条公告所应该包含的信息
定义:公告信息=公告范围+发布日期+公告编号+公告标题+公告内容 位置:公告信息
2.5人员结构数据项与数据流
2.5.1名字: 岗位编号
描述:每个岗位的唯一标识,用来区分不同的岗位 定义:整形int 位置:岗位信息 2.5.2名字: 岗位名称
描述:岗位的名称,一般用来大概描述岗位的职责 定义:字符串类型nvarchar(50) 位置:岗位信息 2.5.3名字: 所属部门
描述:岗位所属的部门,与部门名称对应。一般岗位都有其所属部门,当然较高级别的岗位可能没有
定义:字符串类型nvarchar(50) 位置:岗位信息 2.5.4名字: 岗位人数
描述:岗位所在职人数,能较清晰地了解到此岗位目前有多少在职人员 定义:整形int 位置:岗位信息
2.5.5名字: 岗位修改信息
描述:岗位可进行修改的信息,需要拥有一定的权限才可进行操作 定义:岗位信息=岗位编号+岗位名称+所属部门 位置:岗位信息 2.5.6名字: 岗位信息
描述:岗位所拥有的信息
定义:岗位信息=岗位编号+岗位名称+所属部门+岗位人数 位置:岗位信息 2.5.7名字: 部门编号
描述:每个部门的唯一标识,用来区分不同的部门 定义:整形int 位置:部门信息
第 10 页 共 20 页
OA办公自动化管理系统数据库设计说明书 内部文档
2.5.8名字: 部门名称
描述:部门的名称,一般用来大概描述部门的功能 定义:字符串类型nvarchar(50) 位置:部门信息 2.5.9名字: 部门经理
描述:部门的经理,负责管理一个部门的人员。存储该人员的人员编号 定义:整形int 位置:个人信息 2.5.10名字: 部门人数
描述:部门拥有的人数,衡量一个部门重要性的指标 定义:整形int 位置:部门信息
2.5.11名字: 部门修改信息
描述:部门可进行修改的信息,需要拥有一定的权限才可以操作 定义:部门修改信息=部门编号+部门名称+部门经理 位置:部门信息 2.5.12名字: 部门信息
描述:一个部门所拥有的信息
定义:部门信息=部门编号+部门名称+部门经理+部门人数 位置:部门信息 2.5.13名字: 权限编号
描述:权限的唯一标识,用来区分每个权限 定义:整形int 位置:权限信息 2.5.14名字: 权限名称
描述:权限的名称,说明人员可以进行的操作 定义:字符串类型nvarchar(50) 位置:权限信息
2.5.15名字: 所属父级权限
描述:将权限分级,所以二级权限拥有父级权限,用权限编号来标识 定义:整形int 位置:权限信息 2.5.16名字: URL
描述:权限以访问地址为单位,一个URL存储一个权限可以访问的地址 定义:字符串类型nvarchar(MAX) 位置:权限信息
2.5.17名字: 未分配权限
描述:人员没有拥有的权限,用权限编号来标识 定义:整型int
位置:人员权限信息 2.5.18名字: 已分配权限
描述:人员已经拥有的权限,用权限编号来标识 定义:整型int
位置:人员权限信息
第 11 页 共 20 页
OA办公自动化管理系统数据库设计说明书 内部文档
2.5.19名字: 人员权限编号
描述:人员拥有的每条权限的唯一标识 定义:整型int
位置:人员权限信息 2.5.20名字:权限信息
描述:每个权限所拥有的信息
定义:权限信息=权限编号+权限名称+所属父级权限+URL 位置:权限信息
2.5.21名字: 人员权限信息
描述:表示每个人员已经拥有的权限
定义:人员权限信息=人员权限编号+人员编号+已分配权限 位置:人员权限信息 2.5.22名字:分配权限 描述:为人员分配权限
定义:分配权限=人员权限信息+姓名+部门+未分配权限 位置:人员权限信息
2.6 基本信息的数据项与数据流
2.6.1名字: 基本信息编号
描述:每条基本信息的唯一标识,用来区分基本信息 定义:整形int 位置:基本信息
2.6.2名字: 基本信息类型
描述:基本可选信息如:性别、婚姻状况、请假事由、报销理由、申请状态等的类型 定义:字符串类型nvarchar(50) 位置:基本信息
2.6.3名字: 基本信息值
描述:基本可选信息如:性别、婚姻状况、请假事由、报销理由、申请状态等的值 定义:字符串类型nvarchar(50) 位置:基本信息 2.6.4名字:扩展内容
描述:每一条基本信息的扩展内容,用来对基本信息进行说明 定义:字符串类型nvarchar(50) 位置:基本信息 2.6.5名字: 基本信息
描述:每一条基本信息包含的内容
定义:基本信息=基本信息编号+基本信息类型+基本信息值+扩展内容 位置:基本信息
第 12 页 共 20 页
OA办公自动化管理系统数据库设计说明书 内部文档
3 数据库设计
3.1 E-R图
3.2 系统物理结构设计
根据硬件设备和数据库平台系统,对数据库系统的物理存储结构进行规划,估计数据库的大小,增长速度,各主要部分的访问频度。确定数据文件的命名,日志文件的命名。数据文件和日志文件的物理存放位置,如果有多个存储设备,需要规划数据文件的组织方式。
系统内存使用配置,一般来说,数据库系统会自动维护系统内存,但有时为了某些性能问题,可以根据需要对数据库的内存管理进行另行配置。
/****** Object: Database [OASYSDB] Script Date: 08/06/2013 13:11:36 ******/ CREATE DATABASE [OASYSDB] ON PRIMARY
( NAME = N'OASYSDB', FILENAME = N'D:\\Program Files\\Microsoft SQL
Server\\MSSQL10_50.MSSQL2008\\MSSQL\\DATA\\OASYSDB.mdf' , SIZE = 5120KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) LOG ON
( NAME = N'OASYSDB_log', FILENAME = N'D:\\Program Files\\Microsoft SQL
Server\\MSSQL10_50.MSSQL2008\\MSSQL\\DATA\\OASYSDB_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%) GO
第 13 页 共 20 页
OA办公自动化管理系统数据库设计说明书 内部文档
ALTER DATABASE [OASYSDB] SET COMPATIBILITY_LEVEL = 100 GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled')) begin
EXEC [OASYSDB].[dbo].[sp_fulltext_database] @action = 'enable' end GO
ALTER DATABASE [OASYSDB] SET ANSI_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 DATABASE [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 DATABASE [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
ALTER DATABASE [OASYSDB] SET ALLOW_SNAPSHOT_ISOLATION OFF ALTER DATABASE [OASYSDB] SET PARAMETERIZATION SIMPLE ALTER DATABASE [OASYSDB] SET READ_COMMITTED_SNAPSHOT OFF ALTER DATABASE [OASYSDB] SET HONOR_BROKER_PRIORITY OFF ALTER DATABASE [OASYSDB] SET READ_WRITE ALTER DATABASE [OASYSDB] SET RECOVERY FULL ALTER DATABASE [OASYSDB] SET MULTI_USER
ALTER DATABASE [OASYSDB] SET PAGE_VERIFY CHECKSUM ALTER DATABASE [OASYSDB] SET DB_CHAINING OFF
第 14 页 共 20 页
OA办公自动化管理系统数据库设计说明书 内部文档
3.3 表设计
根据数据字典的设计,进一步细化为数据库表的设计。表的设计包括以下内容: 表名(中英文) 字段名
字段数据类型 字段是否为空 字段的默认值
备注,对字段的解释性说明:主键、外键、是否自动增一、是否为索引、是否唯一、是否进行数据检查等。
3.3.1 OA_AllEmployees (所有员工表)
字段名 AE_ID AE_Number AE_Name AE_Password AE_Sex AE_Brithday AE_PositionID AE_DepartmentID AE_Salary AE_Telephone AE_Address AE_Email AE_EntryDate AE_PhotoUrl
Int Nvarchar(5) Nvarchar(30) Nvarchar(6) Nchar(1) Datetime Int Int Money Nvarchar(20) Nvarchar(50) Nvarchar(50) Datetime Nvarchar(MAX) 数据类型 是否为空 否 否 否 否 否 否 否 否 否 是 是 是 否 否 否 123456 ‘男’或‘女’ NOW() 默认值 备注 唯一 检查 外键 外键 外键 含义 员工工号 员工姓名 登陆密码 性别 出生年月 职位ID 部门ID 工资 电话 地址 邮箱 入职时间 婚姻状况ID 照片地址 主键,自增 主键,无意义 AE_MaritalStatusID Int 3.3.2 OA_Department(部门表)
字段名 DEP_ID DEP_Number DEP_Name DEP_ManagerID
Int Nvarchar(3) Nvarchar(30) Int 数据类型 是否为空 否 否 否 否 默认值 外键 备注 含义 部门编号 部门名称 部门经理ID 主键,自增 主键,无意义 第 15 页 共 20 页
OA办公自动化管理系统数据库设计说明书 内部文档
3.3.3 OA_Position(职位表)
字段名 POS_ID POS_Nmae
Int Nvarchar(30) 数据类型 是否为空 否 否 否 默认值 外键 备注 主键, 自增 含义 主键,无意义 职位名称 所属部门 POS_DepartmentID Int 3.3.4 OA_Power(权限表)
字段名 POW_ID POW_Name POW_Url POW_ParentID Int Nvarchar(50) Nvarchar(MAX) Int 数据类型 是否为空 否 否 否 否 默认值 外键 备注 主键, 自增 含义 主键,无意义 权限名称 权限URL 上级权限模块 3.3.5 OA_EmployeePower(员工—权限表)[中间表]
字段名 EP_EmployeeID EP_PowerID
Int Int 数据类型 是否为空 否 否 默认值 备注 外键 外键 含义 员工ID 权限ID 3.3.6 OA_Announcement(公告表)
字段名 AM_ID AM_Number AM_Theme AM_Content AM_Datetime
Int Nvarchar(50) Nvarchar(100) Nvarchar(500) Datetime 数据类型 是否为空 否 否 否 否 否 NOW() 默认值 备注 主键, 自增 含义 主键,无意义 公告编号 公告主题 公告内容 公告时间 3.3.7 OA_AnnouncementRange(公告范围表)[中间表]
字段名 AR_AnnocementID Int AR_DepartmentID Int 数据类型 是否为空 否 否 默认值 备注 外键 外键 含义 公告ID 部门ID 第 16 页 共 20 页
OA办公自动化管理系统数据库设计说明书 内部文档
3.3.8 OA_AskForLeave(请假表)
字段名 AFL_ID AFL _EmployeeID AFL _ApplicationDate AFL _StartDate AFL _EndDate AFL _Content AFL _TypeID AFL _ApproveStatus 数据类型 Int Int Datetime Datetime Datetime Int Nvarchar(50) 是否为空 否 否 否 否 否 否 否 NOW() 默认值 自增 备注 主键 外键 外键 含义 主键,无意义 员工ID 申请日期 开始日期 结束日期 请假事由 请假类型 审核状态 Nvarchar(Max) 否 “批准”或 “等待审核” 或“不批准” AFL _ ApproveContent Nvarchar(Max) 否 AFL _ ApproveDate
Datetime 否 审核回复 审核时间 3.3.9 OA_Reimburse(报销表)
字段名 RE_ID RE_EmployeeID RE_ApplicationDate RE_Content RE_Money RE_TypeID RE_ApproveStatus Int Int Datetime Nvarchar(MAX) money Int Nvarchar(50) 数据类型 是否为空 否 否 否 否 否 否 否 NOW() 默认值 备注 外键 外键 含义 员工ID 申请日期 申请内容 金额 报销类型ID 报销状态 主键,自增 主键,无意义 3.3.10 BaseInfo(基本信息表) [数据字典表][表级多语言扩展]
字段名 BI_ID BI_Type BI_Value BI_ExtnsionValue
Int Nvarchar(50) Nvarchar(50) Nvarchar(50) 数据类型 是否为空 否 否 否 是 默认值 备注 主键 含义 主键,不自增 数据类型 数据的值 扩展值 第 17 页 共 20 页
OA办公自动化管理系统数据库设计说明书 内部文档
表设计中应注意的问题:
1.对于字符类型的字段,要仔细确认字段的可能长度。在SQL Server数据库设计中,一般来说,对于定长的字符数据字段,去字符类型(char),对于不定长的,取变长字符类型(varchar)。 2.对于以分类形式出现的字段,建议不使用字符类型,而使用数字类型。如:人员分类为高职、中职、低职;如果用字符类型,则将这些字符串需要入库;如果使用数字类型分别用1、2、3代表高职、中职、低职,则入库的是数字信息,从程序编写的角度考虑,后者更好维护一些,主要体现在如果是多语言版本时,我们不需要在程序中将这些字符串信息进行判断处理。
3.4 表之间的关联设计
为了保证数据的完整性,需要对表之间相互的数据进行约束,主要是通过外键来实现数据增删时的数据完备。
3.5 存储过程设计
存储过程是一组预先定义并编译好的SQL语句,可以接受参数、返回状态值和参数值,并可以嵌套调用。使用存储过程可以改变SQL语句的运行性能,提高其执行效率。存储过程还可用做一种安全机制,使用户通过它访问未授权的表或视图。
无。
3.6 触发器设计
触发器是一种特殊的存储过程,当表中的数据被修改时,由系统自动执行。使用触发器可以实施更为复杂的的数据完整性约束。
第 18 页 共 20 页
OA办公自动化管理系统数据库设计说明书 内部文档
触发器:报销状态的改变 状态值:
最终状态:批准,不批准
中间状态:等待经理审核、等待财务审核、等待总经理审核。
代码:
CREATE TRIGGER [dbo].[RA_InsertAndUpdate]
IF (@RA_IsApprove=1) BEGIN
IF (@RA_Who='经理') BEGIN
DECLARE @RA_Who VARCHAR(MAX), @RA_IsApprove BIT, @insertID INT SELECT @RA_Who= RA_Who, @RA_IsApprove=RA_IsApprove, @insertID= ReID FROM INSERTED
ON [dbo].[ReimburseApprove] FOR INSERT,UPDATE AS
UPDATE Reimburse SET ReApproveState='等待财务部审核' WHERE Reimburse.ID=@insertID
IF (@RA_IsApprove=1) BEGIN
IF (@RA_Who='财务') BEGIN
END
ELSE BEGIN
UPDATE Reimburse SET ReApproveState='等待经理审核' WHERE Reimburse.ID=@insertID END
ELSE IF (@RA_IsApprove=0) BEGIN
UPDATE Reimburse SET ReApproveState='不批准' WHERE Reimburse.ID=@insertID END
END
第 19 页 共 20 页
OA办公自动化管理系统数据库设计说明书 内部文档
UPDATE Reimburse SET ReApproveState='等待总经理审核' WHERE Reimburse.ID=@insertID
IF (@RA_Who='总经理') BEGIN
IF (@RA_IsApprove=1) BEGIN
WHERE Reimburse.ID=@insertID END
ELSE IF (@RA_IsApprove=0) BEGIN
UPDATE Reimburse SET ReApproveState='不批准' WHERE Reimburse.ID=@insertID END ELSE BEGIN
UPDATE Reimburse SET ReApproveState='等待总经理审核' WHERE Reimburse.ID=@insertID END
END
ELSE BEGIN
UPDATE Reimburse SET ReApproveState='等待财务审核' WHERE Reimburse.ID=@insertID END
ELSE IF (@RA_IsApprove=0) BEGIN
UPDATE Reimburse SET ReApproveState='不批准' WHERE Reimburse.ID=@insertID END
END
UPDATE Reimburse SET ReApproveState='批准'
END
第 20 页 共 20 页
因篇幅问题不能全部显示,请点此查看更多更全内容