4. 当事人类别

原创 2006年05月22日 09:50:00
 连载之14
原创:胖子刘(转载请注明作者和出处,谢谢)
4.       当事人类别
企业系统在记录当事人信息的时候,总会记录其所属类别。这样可以分门别类的统计各类当事人的业务信息、便于经营数据的分析和对比,为公司经营战略提供决策依据。
关于当事人的分类方式很多且不固定。比如按照人员年收入水平可以作如下分类——1万元以下、1万-5万元、5万-10万元、10万-20万元、20万元以上;按照组织的规模可以分为——特大型企业、大型企业、中型企业、小型企业和个体工商户等。
面对以上情况,有些系统在设计的时候,喜欢在当事人表中增加“年收入水平”和“组织规模”两个字段,分别用于存储当事人所属类别信息。这种设计很死板且不方便扩展。比如企业根据业务的需要新增了一种分类方式:按照行业类别分类如下——通信、IT、能源、电力、制造业、物流运输、政府机关、零售业等。采取这种设计必要修改表结构,增加一个“行业类别”字段,相应的程序代码也要随之修改。
在我们这里,“当事人”和“当事人类型”是典型的多对多关系,由于关联表有独立的业务需求(企业希望保持当事人类别变动历史,以便进行更详细的分析),所以我们采用“多对多模式”的第1种情况设计如下:图15
为了满足企业的这种需求,我们在关联表(当事人类别表)中增加了起始和截止时间两个属性,记录当事人类别的变化历史。例如,假设某当事人在2004年1月1日至2004年12月31日这段时间的收入水平为“1万元以下”,在2005年1月1日至2005年12月31日这段时间收入水平增加到“1万-5万元”,在2006年1月1日至2006年5月22日这段时间的收入水平又下降到了“1万元以下”,这样当事人类别表中可添加3条记录。其中第1条和第3条记录针对外键字段(当事人类型ID、当事人ID)来说是重复的,但是外键字段加上起始日期后,就不再重复、可以作为整条记录的唯一标识,所以我们在这3个字段上创建了一个唯一索引。
如果企业不需要变动历史,只关心当前最新状态,那么“当事人类别”表中的起始和截止日期删掉即可。为了简化开发,还可以删掉“当事人类别ID”字段,只保留“当事人ID”和“当事人类型ID”、并在这两个字段上创建主键即可。
“当事人类型”表是一个“简单自联结模式”的表,通过这种模式来记录企业所有的当事人分类名称和分类项目,同时标记分类名称为非叶子(是否为叶子属性值=false)、分类项目标记为叶子(是否为叶子属性值=true)。
按照当前所举的例子,“当事人类型”表存储的数据记录为如下形式:
当事人类型ID
描述
排序号
父ID
是否为叶子
1
年收入水平
2
NULL
0
2
组织规模
3
NULL
0
3
行业类别
4
NULL
0
4
1万元以下
1
1
1
5
1万-5万元
2
1
1
6
5万-10万元
3
1
1
7
10万-20万元
4
1
1
8
20万元以上
5
1
1
9
特大型企业
1
2
1
10
大型企业
2
2
1
11
中型企业
3
2
1
12
小型企业
4
2
1
13
个体工商户
5
2
1
14
通信
1
3
1
15
IT
2
3
1
16
能源
3
3
1
17
电力
4
3
1
18
制造业
5
3
1
19
物流运输
6
3
1
20
政府机关
7
3
1
21
零售业
8
3
1

数据仓库专题(5)-如何构建主题域模型原则之站在巨人的肩上(二)NCR FS-LDM主题域模型划分

分布式数据仓库模型的架构设计,受分布式技术的影响,很多有自己特色的地方,但是在概念模型和逻辑模型设计方面,还是有很多可以从传统数据仓库模型进行借鉴的地方。NCR FS-LDM数据模型是金融行业事实上的...
  • zhangziliang09
  • zhangziliang09
  • 2015年04月21日 11:01
  • 3190

广泛大概散热通道让他当事人各方的

广州后勤医院骨科【tel 020-36772212】【医院网址 020guke.com】在骨科疾病治疗 领域上非常权威,可以说是广州最好的骨科医院!医院坚持一切为了病人,为了一切病人 ...
  • qq_20948845
  • qq_20948845
  • 2014年09月17日 17:06
  • 3

C语言存储类型

看c专家编程,有说存储类型一直不太清楚。看到一篇文章讲解c的存储类型,讲解了c语言中的各种变量的存储类型,而且是从进程、内存的角度讲解的,以前从没有这样理解过,觉得挺有用的,在这里转载过来。  ...
  • hjxhjh
  • hjxhjh
  • 2013年05月19日 18:29
  • 9341

浅谈BI领域的数据模型设计(二)

分类: 数据仓库与数据挖掘 /**********************************/ 目录: 第一部分:基础概念 第二部分:设计方式 第三部分:银行业数据模型...
  • ding_shan
  • ding_shan
  • 2016年04月01日 16:15
  • 3224

游戏类型分类及简介

1、RPG(Role Playing Game) 角色扮演游戏 RPG游戏的核心是扮演,在玩法上通常是玩家扮演游戏中的一个或多个角色,—般有完整的故事情节。RPG游戏强调的是游戏的剧...
  • u011476173
  • u011476173
  • 2014年11月25日 12:01
  • 1165

Unicode 通用类别

Unicode 通用类别: http://msdn.microsoft.com/zh-cn/library/20bw873z(VS.80).aspx 类别 说明 L...
  • Yoara
  • Yoara
  • 2014年09月17日 10:28
  • 1770

PHP类别管理:类别增加、选择

思路: 创建一个数据库: 代码如下: index.html 添加分类 类别:          add.php ...
  • u013372487
  • u013372487
  • 2015年06月08日 15:51
  • 653

4. PHP变量的类型(一)

1. 四种标量类型1.1 布尔类型boolean以下值被认为是false,所有其他值都被认为是true(包括任何资源) - 布尔值false - 整型值0(零)为假,-1和其他非零值(不论正负)一...
  • the_victory
  • the_victory
  • 2016年04月15日 19:45
  • 352

SQL Server 子父级类别表(笔记)

USE [master] GO IF EXISTS(SELECT * FROM sysdatabases WHERE name='Temp') DROP DATABASE Temp GO CREATE...
  • u011575989
  • u011575989
  • 2013年10月01日 15:44
  • 753

类型编码(Type Encodings)

为了协助运行时系统,编译器用字符串为每个方法的返回值和参数类型和方法选择器编码。使用的编码方案在其他情况下也很有用,所以它是public 的,可用于@encode() 编译器指令。当给定一个类型参数,...
  • iosswift
  • iosswift
  • 2015年01月03日 11:58
  • 1788
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:4. 当事人类别
举报原因:
原因补充:

(最多只允许输入30个字)