企业信息化建设中,字典表相信大家都不陌生,也可以理解是基础配置表,比如:采购入库是否启用质检、报站单品最小数量等。本文以中小饮料企业为例,谈谈字典表如何设计,应该注意哪些问题?

1、字典表目的

一个主要目的就是系统可配置化,理想结果就是业务小调整,通过维护字典,无需修改程序、后台修改数据表就可以实现。
比如采购入库是否启用质检配置,假设配置“是”,则采购入库从业务上就变成采购收货,生成的是收货单,再由质检人员根据收货单进行质检入库。如果不需要质检,配置成“否”即可,采购入库就直接入库了。

2、字典表内容会随系统升级而变化

虽说AI已经盛行,机器学习无处不在,但是对企业信息化来说,字典表几乎是预留型,即有哪些配置项、配置项是否可删除等是在系统设计、开发时预留的。因此系统有重大升级时,可能就伴随着字典表修改。

3、字典表如何设计

分两部分:数据库表结构如何设计,页面UI如何设计。

1)数据库表结构如何设计

以mysql为例,表结构如下:

CREATE TABLE `sys_config` (
  `sid` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `domain` varchar(100) NOT NULL,
  `section` varchar(100) NOT NULL COMMENT '区段',
  `key_name` varchar(32) NOT NULL COMMENT '配置名称',
  `key_label` varchar(32) DEFAULT NULL,
  `key_value` varchar(100) DEFAULT NULL COMMENT '配置值',
  `key_text` varchar(100) DEFAULT NULL COMMENT '配置值-文本',
  `show_order` int(32) DEFAULT '10' COMMENT '显示次序',
  `can_delete` varchar(1) DEFAULT 'N' COMMENT '是否可删除',
  `memo` varchar(100) DEFAULT NULL COMMENT '备注',
  `write_uid` varchar(32) DEFAULT NULL,
  `write_time` datetime DEFAULT NULL,
  PRIMARY KEY (`sid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='系统配置项'

说明:

  • domain: 通常对应模块,比如销售(sales),采购(pur)等
  • section:通常是模块的功能块,比如销售订单(order),价格、配送政策(policy)等
  • key_name:配置项名称,类似input框ID,维护、取配置项值时必须有key_name条件,一个很关键字段
  • key_label:配置项说明,类似input框对应的label
  • key_value:配置项值
  • key_text:配置项值对应的文本描述,比如:客户类型key_value=20,表示意向客户,则对应的key_text = ‘意向客户’
  • can_delete:该配置项是否可删除,有些配置项比如客户类型可以删除,有些不可删除,比如上文提到到的采购入库是否启用质检配置等。
  • show_order:显示顺序,数值越小,越靠前

部分数据截图:

mysql若依数据字典表设计 mysql 字典表设计_数据库表结构设计

2)页面UI设计

一个是系统管理员操作的字典表维护页面,可以操作字典表里的任何一项,就是一个简单的CRUD操作页面,不再赘述。

另外一个是业务关键人员操作的对应业务配置,大概页面如下:

mysql若依数据字典表设计 mysql 字典表设计_企业信息化_02


该页面有几个注意事项:

  • 左侧导航基本上对应字典表domain,可根据权限配置显示哪几个模块;
  • 右侧导航基本上对应字典表section,根据具体配置项是否可删除,保存按钮左侧会字段出现新增、删除按钮