关于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和谁的账户有关。


0
0

仿微信抢红包 Golang实战多版本抢红包系统

Golang红包系统单体版+并发版+分布式+微服务版,四大金装版、超值必修课

582 学习 · 159 问题

查看课程