Skip to content

前言

入职了一家初创公司,记录一下数据库设计的思路

自增主键还是 uuid

永远不用 uuid 作为主键,考虑使用自增的的 uuid

主键 id 和业务 ID

主键 id 用于表设计的 id,满足查询的性能。业务 ID 仅作为满足业务可以读, 比如用户 id 为 2123414,但是主键 id 为 1.

数据库基础字段

每个数据表总是需要有如下字段

  1. id 表 id
  2. 创建时间(业务不感知,数据库自动)
  3. 更新时间(数据库自动)
  4. 创建人(路由级别注入器自动注入)
  5. 更新人(路由级别注入器自动注入)
  6. 数据状态(是否删除)
  7. 数据有效期
prisma
model Base {
    id Int @id
}

物理删除还是逻辑删除

总是逻辑删除,不要担心那一点数据空间

用户表

公司有很多第三方系统是接入 ldap 登录,用户表需要直接 ldap,接入 ldap 后用户密码需要和 ldap 共享。而且还有些自研的系统,有些第三方系统只支持 oauth 登录,有些系统只支持 sso 登录。需要设计一个大而全然后又简单的用户登录。又因为 ldap 的方式,设计角色时需要考虑层级的关系

prisma
model User {
    id  int @id()
}

model UserAuth {

}

https://zq99299.github.io/mysql-tutorial/ali-new-retail/