*数据字典和枚举值
在核心系统应用开发中,数据字典有举足轻重的作用。数据字典是对系统中所有字段的归纳抽象,需要规范同类字段的类型长度,方便定义和修改。
但是,在过去的核心系统中,数据字典的理解往往也会有失误。常见的错误方法,是试图穷举定义所有可以出现的字段名字。可是实际上核心系统应用程序内容是不断扩充的,功能和交易程序都在不停增加,所用到的字段也是无穷无尽。如果需要列举的是所有字段,就像建巴比伦塔一样困难。而且不可避免会出现账号1到账号9这样的重复。
在Firebird系统中,数据字典的使用方式回归了本源意义,即数据字典定义的是不重复的字段基础类型。举例来说,“日期”就是一个基础类型,归数据字典管理。而“交易日期”,“开户日期”这些字段,都只是使用基础类型定义出来的具体字段变量,不归集到数据字典管理,但命名上要求具体字段必须以数据字典基础类型结尾,体现归属关系。“日期”在数据字典里定义的是WKDT,“开户日期”起名可以叫OPWKDT,“交易日期”起名可以叫TRWKDT,不同场景中也可以起名不一样。这样的数据字典和字段命名规则,既满足应用系统字段的不断扩充,又保持数据字典的精简和稳定。
数据字典的实现方式,是建立一个DICT的PF文件并编译,里面的内容即是所有基础类型的定义。摘录部分如下所示。
- A R RDICT
- A*长度 L
- A @@WKDT L TEXT('日期')
- A
- A*长度 T
- A @@WKTM T TEXT('时间')
- A
- A*长度 Z
- A @@TMSP Z TEXT('时间戳')
- A
- A*长度 1A
- A @@CHAR 1A TEXT('字符')
- A @@YNFG 1A TEXT('是否标志')
- A* 1 是 YES
- A* 0 否 NO
- ......
- A*长度 3P
- A @@EXSQ 3P 0 TEXT('执行序号')
- A*长度 4A
- A @@SMCD 4A TEXT('摘要代码')
- A @@I