系统参数设置及单位的处理

系统中一般存在很多整个系统的全局配置,还需要可以更改。我们可以设置一个key-value表,使用的时候根据key获取值即可。

表设计如下:

CREATE TABLE `kv` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `k_name` varchar(100) NOT NULL COMMENT '名称',
  `k` varchar(32) NOT NULL COMMENT 'key',
  `vc` varchar(64) DEFAULT NULL COMMENT '字符串类型的value',
  `explain_init` varchar(100) NOT NULL COMMENT '参数说明,新增的时候填入,编辑不可更改',
  `remark` varchar(100) DEFAULT NULL COMMENT '备注',
  `is_configuration` int(1) NOT NULL DEFAULT '0' COMMENT '是否可配置(0 否 1是)',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniq_k` (`k`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=112 DEFAULT CHARSET=utf8 COMMENT='通用k-v';

为了统一和便于处理,值统一使用varchar来保存,获取的时候转换类型即可。

explain_init 是参数说明,新增的时候填入,编辑的时候不可更改,可以给使用人一个提醒;

remark 是对本值的一个详细说明;

is_configuration 表示是否可以配置,不可配置的就只是程序中使用的(比如存一些临时值),不能直接修改。

至此,已经能满足基本的需求了。

更加深入的:一般值都有单位才有意义,上面的设计中,是没有单位的,所以程序中必须基于某个设定,单位要统一,比如时间单位设定为秒,距离单位设置为米。一般都是这个域的较小的单位。

为了方便设置,我们还可以添加一个字段表示单位。

增加一个字段,表示基于一个标准的倍率,rate,默认就是 1,使用的时候用 vc * rate 即可。

如此,在配置的时候怎么知道选择那些倍率呢?

再添加一个获取倍率的类型,新增一个表,此表保存单位与单位之间的关系。然后在kv表新增一个字段,表示选择什么单位,关联此表的unit,如此设置某个值的时候就可以知道选择哪些单位。

CREATE TABLE `unit` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `unit` varchar(16) NOT NULL COMMENT '区别时间、距离等',
  `rate` bigint(16) unsigned NOT NULL DEFAULT '1' COMMENT '倍率,就是单位与单位之间的换算关系',
  `unit_name` varchar(16) NOT NULL COMMENT '单位的名字',
  PRIMARY KEY (`id`),
  KEY `index_unit` (`unit`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

比如时间的就选择time,距离的就选择distance,质量的就选择quality。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值