mysql字段设计 书_数据库字段设计

一、上下架字段

很多产品都有上下架的需求,比如商品管理,广告管理,图书管理等等。

一般我们都用一个状态字段来表示他的状态来,不同的状态下我们可以进行不同的业务操作。但有时候真实的状态又与时间有关。某时间到了就上架,某时间到了就要下架。如果我们只用一个状态字段来表示状态,那么我们就需设计一个定时任务,每隔很短的时间来判断当前时间与设置时间的关系来变化状态值。这样状态值就可以用多个值来表示直正的状态。比如:待上架,已上架,已过期。

如果不用定时任务呢?那我们就要在使用时加上时间的判断,这样的话,状态值可以就是两个:下架、上架。至于上架又可分成"时间内"与"时间外"的,这个不在状态字段里体现。下图分别表示只有开始时间与有开始时间和结束时间的两种情况:

8fbbc759a4f16c8940ec666bfcb1a78e.png

以前的另一种状态设计,感觉比较麻烦:

ad3577e29dd7ab141c20baccba58463c.png

二、is_del(逻辑删除)字段

这个用于恢复一些误操作,但不滥用。因为如果滥用(如每个表都设置一个),那么所有的查询sql都要关注这个字段,谁又敢保证“都”都关注到字段呢。

如果确实有这样的业务,那么在“逻辑删"时就要考虑相关表的数据。是要物理删除?逻辑删?不变化? 不变化的话,相关表的数据会不会被别的表关联到?

关联到了数据是不是就是逻辑错误?

如果is_del能放进state字段,就不要拿出来,放进去就要考虑有没有删除状态下还有别的状态(比如有需求要取删除的但曾经是显示的),有就不能放进去。

三、冗余字段的设计

数据库的设计范式里是不推荐冗余字段的,确实有它的道理。在实际操作中,有时为了效率要多设计一个冗余字段,那么一定要考虑到,如果同步它的更新。是用事务,还是定时任务?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值