DevTestOpsGuide

开发 测试 上线 的经验与笔记

View project on GitHub

表设计

设计表时字段默认not null, 减少判空与空指针异常

可空字段必须明确说明原因,否则都必须非空,在特殊情况下程序疏漏可能插入空值,从而导致一系列问题。

可空字段漏了判空会导致空指针异常,需要频繁判空。

当然,在这条规则下写程序时仍需了解数据库字段,可空/非空 与其他字段不同的需要用文档注释标注, 在SpringMVC等可以使用@Validated的建议注解@NotNull

上面提到的两个注解具体路径为

import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.NotNull;

大表考虑分区,可以非常简单地提升整个性能

表设计时需要考虑报表需求记录信息

  • 如果数据中台不能接管所有报表时,微服务后无法跨库 JOIN 将会引起很多麻烦
  • 需要查用的不记在本系统甚至没有系统记录将

表前加库名可以方便后人接手

虽然可以在information_schema.TABLES

datetime(6) 用最 6 位小数或和 java 一样 3 位小数,否则默认没有小数

创建时间和更新时间使用数据库自动生生成避免程序与数据库时钟差,创建与更新时不要写这两个字段

除非数据量较小时不用 id,否则 InnoDB 用 id 当主键以提升 B+ 树存储效率