企业信息化建设中,字典表相信大家都不陌生,也可以理解是基础配置表,比如:采购入库是否启用质检、报站单品最小数量等。本文以中小饮料企业为例,谈谈字典表如何设计,应该注意哪些问题?
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:显示顺序,数值越小,越靠前
部分数据截图:
2)页面UI设计
一个是系统管理员操作的字典表维护页面,可以操作字典表里的任何一项,就是一个简单的CRUD操作页面,不再赘述。
另外一个是业务关键人员操作的对应业务配置,大概页面如下:
该页面有几个注意事项:
- 左侧导航基本上对应字典表domain,可根据权限配置显示哪几个模块;
- 右侧导航基本上对应字典表section,根据具体配置项是否可删除,保存按钮左侧会字段出现新增、删除按钮