前言

这是一篇日常开发中根据产品需求去设计数据表的总结。

抛去测试、架构来说,数据表设计是指定功能开发的一个起点,如果出现失误将会对未来开发以及运行都会有很大的影响。接下来我们聊聊应该如何根据需求去设计数据表。

原型图

首先产品递交的绝笔是份原型图或者需求文档,这里先看原型图,根据原型图上的任意label、input汇总,再根据逻辑不同去划分为不同的块(也就意味着不同的表)。以电商优惠卷为例,原型图可能是这样的(原谅我不会画这图,就拿京东的一张图代替吧)。

当你看到这张原型后,首先你得确认这是个什么功能是吧。瞅了一眼是优惠券的功能,首先确立有了第一张表和表名

  • coupons
    再者优惠券是给予用户使用的,所以又有了
  • user_coupons

一个是优惠券存库表,一个是发送优惠券的用户表,至此表名想好了。接下来就是字段了。

分离

根据上述原型图我们可以将字段所属逻辑区域分成以下这样

将以原型图为基准的逻辑分为两大块,一块是显示相关的字段,另一块则是控制相关的字段(如添加时间,过期时间,状态等)。

任意一家公司都想要有相关行业经验的开发者,并不是因为技术有多高深,而是可以根据给出的具有局限性的原型图去扩展字段。考虑未来业务发展所需要的,这实际也是架构的一部分。

扩展

大概的以张图来说明所说的扩展字段。

通过以自己的日常生活经验和开发经验对具有局限性的原型图进行扩展。是一个业务程序员最起码的技能。
在之后,将要面临一些性能的考虑了。

性能

本章并不会详细将数据表的设计上,就大概的根据优惠券的功能讲解下思路。

  • 批量发放应该考虑的技术问题
  • 考虑频繁被查询的字段设置索引,例如优惠券功能?标题等…
  • 有效期使用datetime设置,时间戳对于sql查询的局限太大。

一张原型图迁出的考虑因素很多。也是一名程序员的基础。

致谢

感谢你看到这里,希望本篇文章可以帮助到你,谢谢。