2.客户项目经理
3.系统开发人员
4.系统测试人员
将数据分析的结果进一步整理,形成最终的计算机模型,以便开发人员建立物理数据库。
数据字典的主要目的是提供查阅对不了解的条目的解释。在数据字典中记录数据元素的下列信息:一般信息(名字,别名,描述等),定义(数据类型,长度,结构等),使用特点(值的范围,使用频率,使用方式—输入/输出/本地,条件值等),控制信息(来源,用户,使用它的程序,改变权等),分组信息(父结构,从属结构,物理位置—记录、文件和数据库等)。
下面的例子是通过卡片来描述数据字典:
数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求。本节主要将前一阶段设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构,完成逻辑结构设计。[14-19]
(1)部门实体拥有部门编号、名称、电话、地址、职能和负责人等属性。部门实体图如图3.1所示。
图3.1 部门实体图
(2)操作员实体包括人员姓名、性别、电话身份证、手机号、家庭地址和所属部门等属性。操作员实体图如图3.2所示。
图3.2 操作员实体图
(3)客户实体包括账户、姓名、客户类型、证件号码、联系地址和信用评级等属性。客户实体图如图3.3所示。
图3.3 客户实体图
(4)资产实体包括资产编号、评估公司、评估价格、存放单位、相应贷款金额评估日期等属性。资产实体图如图3.4所示。
图3.4 资产实体图
(5)贷款实体包括贷款编号、客户号、贷款分类、金额、抵押物和贷款期限等属性。贷款实体图如图3.5所示。
图3.5贷款实体图
(6)利息实体包括贷款编号、客户号、贷款金额、贷款利率、利息额和处理标志等属性。利息实体图如图3.6所示。
图3.6 利息实体图
(7)客户信息维护(管理)操作包括客户和管理员两个实体。一个管理员可以对多个客户进行信息维护,二者关系为1:N。客户信息维护的E-R图如图3.7所示。
图3.7 客户信息维护实体图
(8)贷款发放操作包括放贷人员、贷款和客户三个实体。一个放贷人员可以对多个客户进行贷款,二者关系为1:N;而一个客户可以获得多笔贷款,二者关系为1:M。贷款发放的E-R图如图3.8所示。
图3.8 贷款发放实体图
(9)利息计算操作包括会计人员、贷款和利息三个实体。一个会计人员可以对进行多次利息,二者关系为1:N;一项贷款可以拥有多笔利息,二者关系为1:M。利息计算的E-R图如图3.9所示。
图3.9贷款发放实体图
(10)角色分配操作包括操作员,人员和角色三个实体。一个操作员可以添加多个角色,二者关系为1:N;一个角色拥有多个用户,而一个用户只有一个角色,二者关系为1:M。角色分配的E-R图如图3.10所示。
图3.10 角色分配实体图
信贷管理系统主要包括以下实体:客户管理员、客户、贷款、信贷员、贷款、利息、会计、角色和系统管理员等九个角色。经过以上的分析可知,客户和客户管理员的关系为N:1;客户与贷款的关系为1:N,信贷员与贷款的关系为1:M;贷款与利息的关系为1:N,会计与利息的关系为1:M。系统管理员可以设置多个角色,二者关系为1:N。每一个系统角色(用户组)可以包含多个用户,角色与信贷员的关系、角色与会计的关系以及角色与客户管理员的关系都为一对多。信贷系统整体E-R图如图3.11所示。
图3.11 信贷管理系统整体E-R图
表3.1 客户信息表
类型 | 长度与格式 | 备注 | 说明 | |
kdid | Int | 4 | Primary key | 客户号 |
Name | char | 20 | Not null | 客户名称 |
Khzl | char | 1 | Not null | 客户种类:1 单位,2个人 |
Khdz | char | 60 | Not null | 客户地址 |
Khdh | Char | 20 | Not null | 客户电话 |
Zjhm | char | 18 | Not null | 证件号码 |
Post | Char | 6 | Not null | 邮编 |
| Char | 30 | 电邮地址 | |
account | Char | 20 | 首笔贷款账号 | |
Dkje | money | 18 | 贷款金额 | |
Khhmc | Char | 20 | 开户行名称 | |
Jbhzh | Char | 20 | 基本户账户 | |
jszh | Char | 12 | 结算账号 | |
xypj | int | 4 | 信用评级 | |
Sjdw | Char | 60 | 上级单位 | |
Xdyh | Int | 4 | 归属信贷员号 |
表3.2 贷款申请表
字段名 | 类型 | 长度与格式 | 备注 | 说明 |
Dk_sqh | Dec(10) | 10:yyyymmdd00 | Primary key | 贷款申请号:自动生成 |
Dkkhid | int | 4 | Not null | 客户号:外键 |
Dkzl | char | 10 | Not null | 贷款种类 |
Dkxz | Char | 10 | 贷款性质 | |
Dkyt | Char | 20 | 贷款用途 | |
Dkfw | Char | 10 | 贷款范围 | |
Dkdyp | char | 16 | 贷款抵押品 | |
dypje | money | 18 | 抵押品金额 | |
Dbrid | Int | 4 | 担保人客户号 | |
Dkje | Money | 18 | 贷款金额 | |
Zcglid | Int | 4 | 资产管理号 | |
Sqrq | Date | 8:yyyy-mm-dd | 申请日期 | |
Sprq | Date | 8:yyyy-mm-dd | 审批日期 | |
Fdbz | Int | 4 | 放贷标志 | |
Sprid | Int | 4 | 审批人标号 | |
Dkzh | Dkzh | 12 | 贷款账户 | |
Dkhth | Char | 6 | 贷款合同号 | |
Dkhtje | Money | 18 | 贷款合同金额 | |
Dkhtll | Money | 18 | 合同贷款利率 | |
Hkfs | Char | 3 | 还款方式 | |
Mqhkje | Money | 18 | 每期还款金额 | |
dcxdyid | int | 4 | 调查信贷员 |
表3.3 用户信息表
字段名 | 类型 | 长度与格式 | 备注 | 说明 |
Per_id | integer | 4 | Primary key | 用户编号 |
Per_cod | char | 6 | Not null | 人员代号 |
per_name | char | 16 | Not null | 姓名 |
Per_sex | Bit | 2 | 性别:1男,0 女 | |
Per_addr | varchar | 50 | 家庭地址 | |
Per_tele | Varchar | 12 | 电话 | |
idcrd | varchar | 18 | Not null | 身份证号 |
Per_mobi | varchar | 12 | 手机号 | |
Pre_role | Int | R | 系统角色 | |
Per_memo | varchar | 100 | 备注 |
表3.4 单位信息表
字段名 | 类型 | 长度与格式 | 可否为空 | 说明 |
dw_id | integer | 4 | Primary key | 单位编号,主键 |
Dw_nam | char | 18 | Not null | 单位名称 |
Dw_zzh | char | 18 | Not null | 营业执照号 |
Dw_frdb | char | 16 | Not null | 法人代表 |
Dw_frzjh | Bit | 2 | Not null | 法人证件号 |
Dw_ywfw | varchar | 30 | Not null | 业务范围 |
Dw_zczj | Varchar | 12 | Not null | 注册资金 |
Dw_xzid | char | 12 | 单位性质 | |
Dw_hyid | char | 16 | 所属行业性质 |
表3.5 资产管理表
字段名 | 类型 | 长度与格式 | 可否为空 | 说明 |
Zcgl_id | Integer | 4 | Primary key | 资产编号,主键 |
zcgl_pgrq | Date | 8:yyyy-mm-dd | 评估日期 | |
Dksqid | Int | 4 | Not null | 贷款申请号,外键 |
Zcgl_Pgje | Money | 18 | Not null | 评估金额 |
Zcgl_Pggs | Char | 50 | 评估公司 | |
Zcgl_cfdd | Char | 60 | 存放单位 |
表3.6 贷款分户表
字段名 | 类型 | 长度与格式 | 可否为空 | 说明 |
Dkzh | char | 12 | Primary key | 贷款编号,主键 |
Khid | int | 4 | Not null | 客户号 |
Dksqid | Int | 4 | Not null | 贷款申请号,外键 |
Kmh | char | 5 | Not null | 科目号,外键 |
Sybz | Char | 1 | Not null | 贷款使用标志 |
Dkbz | char | 1 | Not null | 贷款标志 |
dklx | Char | 1 | Not null | 贷款五级分类 |
Dkgsbm | int | 4 | Not null | 贷款归属部门,外键 |
dkksrq | Date | 8:yyyy-mm-dd | 贷款开始日期 | |
Kddqrq | Date | 8:yyyy-mm-dd | 贷款到期日期 | |
Dkzqrq | Date | 8:yyyy-mm-dd | 贷款展期日期 | |
Zhhkrq | Date | 8:yyyy-mm-dd | 最后还款日期 | |
Zhjxrq | Date | 8:yyyy-mm-dd | 最后计息日期 | |
Ye | Money | 贷款余额 | ||
sjLl | Float | 6 | 实际利率 | |
Zqll | Float | 6 | 展期利率 | |
Yqll | Float | 6 | 预期利率 | |
Fxll | Float | 6 | 罚期利率 |
表3.7 部门信息表
字段名 | 类型 | 长度与格式 | 可否为空 | 说明 |
Dpt_id | integer | 6 | Primary key | 部门编号 |
Dpt_cod | char | 10 | Not null | 部门代码 |
Dpt_name | char | 16 | Not null | 部门名称 |
Dpt_addr | varchar | 50 | 部门位置 | |
Dpt_tele | varchar | 18 | Not null | 部门电话 |
Dpt_man | integer | 6 | Not null | 负责人编号:外键 |
Dpt_memo | varchar | 100 | 备注 |
表3.8 系统角色表
字段名 | 类型 | 长度与格式 | 可否为空 | 说明 |
Rol_id | integer | 6 | Primary key | 角色编号 |
Rol_type | char | 10 | Not null | 角色类别 |
Rol_qx | char | 10 | Not null | 操作权限 |
Rol_name | char | 10 | Not null | 角色名称 |
Rol_memo | char | 100 | 角色描述 |
表3.9 贷款还款表
字段名 | 类型 | 长度与格式 | 可否为空 | 说明 |
hk_id | Integer | 4 | Primary key | 还款编号,自动生成 |
dk_zh | char | 12 | Not null | 贷款账户 |
Dk_hm | char | 50 | Not null | 贷款户名 |
Hk_rq | date | 8:yyyy-mm-dd | 还款日期 | |
Hk_je | Money | 18 | 还款金额 | |
Hk_syje | Money | 18 | 贷款剩余金额 | |
Hk_czyid | char | 3 | 还款操作员 |
表3.10 贷款利息表
字段名 | 类型 | 长度与格式 | 可否为空 | 说明 |
lx_id | Integer | 4 | Primary key | 利息编号,自动生成 |
flx_id | integer | 4 | 父利息编号 | |
Lxbz | char | 1 | 利息标志:‘1’ 正常利息,‘2’ 复息 | |
dk_zh | char | 12 | Not null | 贷款账号 |
dk_ye | Money | 18 | 贷款余额 | |
Fxzhrq | date | 8:yyyy-mm-dd | 复息最后日期 | |
Fxksrq | date | 8:yyyy-mm-dd | 利息开始日期 | |
Lxdqrq | date | 8:yyyy-mm-dd | 利息到期日期 | |
Lxjxrq | date | 8:yyyy-mm-dd | 利息计算日期 | |
Lxclrq | date | 8:yyyy-mm-dd | 利息处理日期 | |
Ll | Float | 6 | 利率 | |
Lxe | Money | 16 | 利息额 | |
lxclbz | Char | 1 | 利息处理标志: ‘0’未处理,‘1’已收利息, |
表设计中应注意的问题:
1.对于字符类型的字段,要仔细确认字段的可能长度。在SQL Server数据库设计中,一般来说,对于定长的字符数据字段,去字符类型(char),对于不定长的,取变长字符类型(varchar)。
2.对于以分类形式出现的字段,建议不使用字符类型,而使用数字类型。如:人员分类为高职、中职、低职;如果用字符类型,则将这些字符串需要入库;如果使用数字类型分别用1、2、3代表高职、中职、低职,则入库的是数字信息,从程序编写的角度考虑,后者更好维护一些,主要体现在如果是多语言版本时,我们不需要在程序中将这些字符串信息进行判断处理。
为了保证数据的完整性,需要对表之间相互的数据进行约束,主要是通过外键来实现数据增删时的数据完备。
存储过程是一组预先定义并编译好的SQL语句,可以接受参数、返回状态值和参数值,并可以嵌套调用。使用存储过程可以改变SQL语句的运行性能,提高其执行效率。存储过程还可用做一种安全机制,使用户通过它访问未授权的表或视图。
触发器是一种特殊的存储过程,当表中的数据被修改时,由系统自动执行。使用触发器可以实施更为复杂的的数据完整性约束。
数据库系统提供了Job功能,该功能可以用来解决需要定期处理商业数据的问题