设计“编码”的几个经验
摘 要:设计“编码”的几个经验
正 文:
1、不存储能够通过运算得出的字段
大家都有这个概念,就是表里储存的数据并不需要和显示出的数据相同。它保存的是最基础的数据,尽量不存储能够通过运算得出的字段。
但在实际运用过程中仍有许多人会陷入该误区。比如常有人问:如何让自动编号从101开始递增?解决的方法大家提出的不少,有通过各种操作来完成的,有通过代码来完成的,有通过更新查询来完成的,其实您只要理解了上面的原则您就知道,为什么表里的数据一定要和显示出的数据相同?表里就存的是从1开始递增的编号,而在要显示的报表或窗体内将该自动编号加100就是了。还有比如某企业有其代码的编制原则:商品编码=商品大类编码+商品小类编码+商品规格的顺序码;入库单代码=年月日+该日的入库顺序编号等等。其实将这样的编码字段分解为:“商品大类编码”;“商品小类编码”;“商品规格的顺序码”;“入库日期”;“该日的入库顺序编号”几个字段,在需要显示的地方将这些字段合并起来就是了,这样更有利于以后的筛选和管理,也能减少重复的录入(如前面的入库单中还有“入库日期”的录入字段,出现重复)。
2、 做为主关键字的编码不要使用会变动的特征码。
许多如商品编码,或客户编码都是有很多级次的,大家很喜欢在该编码上带上上级的编码。这无可厚非,许多国家级的编码编制原则也是这样来完成的。但许多编程人员忽略了一个要点,就是这些归类和级次是固定不变的。若这归类的标准会随时间的推移发生变化,就不应将其体现在编码中。
有一个例子,某企业的客户编码方案是:销售大区编码+办事处编码+顺序码。但这大区的划分以及办事处的划分会随着企业销售状况的变换做相应调整的。这样每次销售区域的重新划分都给程序员带来巨大的挑战——重新修订客户编码极其和客户编码相关的合同、发货单、发票、回款单等等一系列的单据记录!并且修改历史记录也将引起日后审计的一系列问题。其实企业编制这样的编码方案目的就是希望程序能够按各大区、各办事处、各客户分类汇总数据罢了。后来该企业将其客户编码的编制原则修订为:行政省编码+顺序码。而表结构修订为:
合同:合同号;….. 行政省编码;顺序码;………
客户档案:行政省编码;顺序码;客户名称;税号……(行政省编码+顺序码组成主键)
省份档案:行政省编码;省份名称;所属办事处编码
办事处档案:办事处编码;办事处名称;所属大区编码
销售大区档案:大区编码;大区名称
再通过“关系”将各档案串起来,就行了。这样,即使办事处或销售大区发生变化,最多只调整后三个档案的记录,数据量少多了。
3、 能用数值类编码的尽量不用文本型的编码。
许多人都知道数值型的字段所占的空间比文本型的小。但许多人碰到如“00012345”的8位数字码的发票号;或者“010-1234567”的电话号码;亦或“第0001号”的情况,都不由自主的选择了“文本”型的字段。其实将其设为数值型而将其格式设为:00000000;000\-0000000;第0000号 就行了。您是否发现象“00012345”只用输入12345即可,提高了效率。
4、 对于需要大量输机的录入界面上所使用的编码尽量使用小键盘上能敲打的码。
这源于我的一个实际的经验。我有一个习惯,就是程序编制完成后交给用户实际使用时,我会在旁边实际观察上一定的时间的。因为输机人员每天面对的是大量的数据,若录入界面稍有不方便的地方将极大的影响其输机的速度。
有一次我发现一个输机员左手压着厚厚的单据,右手在敲击键盘。但由于程序中的商品编码是按字母的大类编码+顺序码构成的,因此在输入商品代码时,输机员必须移动视线到键盘上,同时将右手从小键盘上移到大键盘上来敲上字母,然后再回到小键盘上,视线再回到单据上。由于商品编码编制规则的限制无法实现盲打,极大的限制了输机速度。输机人员不停的低头抬头,极易造成疲劳,影响工作效率。
改用数字编码作为商品的大类编码后,输机员左手控制单据,右手负责输机,眼睛仅盯单据。效率得到极大的提高。
(责任编辑:admin)