数据库设计(2) 单个字段层面

主要回答的问题:

  1. 时间字段的存储类型和该类型的优势 // datetime,timestamp,int
  2. 这些时间字段一般起什么作用. // 创建时间, 改动时间, 业务意义的时间
  3. 小数类型的存储类型和该类型的优势: // 禁止使用 float 和 double
  4. 金钱字段如何存储: decimal, int
  5. 枚举类型用不用,什么时候用,用的时候注意什么.
    6.什么时候用json对象,哪些数据放json对象中.

时间字段如何记录

A:
datatime:
timestamp:
int:

是否需要update_at记录更改时间

A: 只要表的数据可能被修改,一般都需要改字段,改动任意字段自动更新改值。
Q: 如果只需要记录指定字段的更新时间呢?
A: 增加一个udpate_xxx字段,在业务代码显示记录指定字段的更新时间。

小数类型

// 附录2
6. 【强制】小数类型为 decimal,禁止使用 float 和 double。
说明:在存储的时候,float 和 double 都存在精度损失的问题,很可能在比较值的时候,得到不正确的
结果。如果存储的数据范围超过 decimal 的范围,建议将数据拆成整数和小数并分开存储。
// 附录1
【建议】存储金钱的字段,建议用int,程序端乘以100和除以100进行存取。因为int占用4字节,而double占用8字节,空间浪费。

枚举类型的使用及局限

MySQL ENUM 枚举类型的使用及局限

6.什么时候用json对象,那些东西放json对象中?

// 考虑把DDD领取的值对象整体作为表的1个字段,以json存储。// 注意同一个对象在不同业务中甚至同一个业务中,角色可能是在转换的。值对象|实体对象

参考

  1. MySQL数据库设计规范
  2. [阿里巴巴手册]
  3. 04 | 实体和值对象:从领域模型的基础单元看系统设计
原文地址:https://www.cnblogs.com/yudidi/p/13379634.html