====== 设计原则 ======
* 数据库层控制全局约束。主键;唯一键;外键
* 程序DO层控制每行的每个字段约束。是否为空,默认值,是否满足业务规则等
====== DO层设计原则 ======
对于每个字段要严格控制,每个DO要有一个builder去校验
* 是否允许为空???
* 是否有默认值,默认值是什么???
* 是否是枚举类型,有哪些枚举值???
* 每个字段的内容需要符合哪些格式才是合法的
* 比如:一个字段的长度有限制
* 比如:必须是驼峰格式
* 比如:一个json字段,可能是 null, "", " ", "{}", {}, {"a":"}, {"a":"b"}。如此多的形式,必须要限制。要么为null, 要么就是有意义的{"a":"b"}