数据库布尔类型字段设计时候的一些技巧

说的数据库设计,大家都知道数据库设计三范式与逆范式。

简单的回顾一下。

1.第一范式(确保每列保持原子性)

2.第二范式(确保表中的每列都和主键相关)

3.第三范式(确保每列都和主键列直接相关,而不是间接相关)

逆范式:
就是有的时候拆分的太细致了, 让连表产生了很多. 这个时间, 如果有一个字段经常被两个地方使用到, 我们就会把这个字段放在第二个表字段里面。


除了上面说的这几个,本人还总结了一个技巧。

就是要数据库字段设计的时候,让某个字段具有高可用性(暂且这么叫吧)。充分挖掘该字段的第二层含义。

第一个例子:

is_super这个字段 ,通常用的 管理员表中,用于区分当前用户是否是超级管理员,

通常的做法是设置成 布尔类型或者 tinyint,用0或1表示 是不是超管。

但是如果你把该字段设计成int,把他当成一个pid使用的话,是不是 同时还包含了 如果非管理员,能对该管理员进行溯源。

比如超管的id是5,普通用户的is_super是5的话,就代表了该用户 是非超管,同时是由id=5 的超管创建的用户。

 

第二个例子:

vip字段的设计,这个字段 一般用于标识 当前用户是否是vip用户,0和1两种状态。

但是细想一下,如果 把字段的值 拓展成 0和 1、2、3、4....两种情况的话,是不是 就可以代表两个含义?

第一种,当前用户是不是vip用户,第二种,当前用户 的vip级别是多少。

 

第三个例子:

is_delete 字段 ,这个字段 通常表示 是否被软删除,分为0和1的两种情况。

但是细想一下,如果把该字段设计成int(10),当大于0的时候,代表删除,把删除时间的时间戳代替1。

是不是 同时给该字段赋予了第二层含义,就是 不仅知道该字段已经被软删除了,同时知道是什么时间删除的。

 

所以在设计一个布尔类型的字段的时候,转动一个脑筋,挖掘布尔类型字段更深一层次的含义。

谢谢浏览。

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值