关于account_name 和account_type的思考
来源:5-2 资金账户模块数据库表设计讲解
DangCode
2019-11-09
type是枚举类型,能够根据type获取name,因为type和name是一一对应的,也能根据name获取type。
那为什么要弄两个字段呢?查询的时候空间换时间么。但是插入修改的时候需要两个字段都修改,要做两个字段的同步修改。更新操作频率远远小于查询,所以这用的冗余设计。这么理解对么?
另外枚举类型为什么不能用字符啊,用字符的话既不用冗余,也不用更新同步,是不是数据库对数字的支持查询起来要比字符快啊 尤其是统计的时候,虽然查过资料但是这个问题一直没有明确解决了。
1回答
-
枫荇
2019-11-10
您好,同学!
先看一下字段注释:
-- | account_name | 账户名称 | varchar | 账户对应的名称或者命名,比如xxx积分、xxx零钱 |
-- | account_type | 账户类型 | int | 账户类型,用来区分不同类型的账户:积分账户、会员卡账户、钱包账户、红包账户 |
首先account_name和account_type不是k/v对应关系,不是一一对应的。
那么account_name是干什么的呢?实际上account_name是一种冗余设计,为了说明账户的是谁的什么类型的账户。
那么和account_type有什么关系呢?type是枚举类型,可以理解为模板,是通用的,那么account_name是type的一个实例,是具体的,并非对应关系,比如说,DangCode开通了一个:
“type=积分账户”的账户
那么account_name就是DangCode的积分账户,特指DangCode的积分账户,不是枫荇的的积分账户。
而type是固定的,和谁的账户无关;account_name和谁的账户有关。
00
相似问题