Appearance
前言
入职了一家初创公司,记录一下数据库设计的思路
自增主键还是 uuid
永远不用 uuid 作为主键,考虑使用自增的的 uuid
主键 id 和业务 ID
主键 id 用于表设计的 id,满足查询的性能。业务 ID 仅作为满足业务可以读, 比如用户 id 为 2123414,但是主键 id 为 1.
数据库基础字段
每个数据表总是需要有如下字段
- id 表 id
- 创建时间(业务不感知,数据库自动)
- 更新时间(数据库自动)
- 创建人(路由级别注入器自动注入)
- 更新人(路由级别注入器自动注入)
- 数据状态(是否删除)
- 数据有效期
prisma
model Base {
id Int @id
}物理删除还是逻辑删除
总是逻辑删除,不要担心那一点数据空间
用户表
公司有很多第三方系统是接入 ldap 登录,用户表需要直接 ldap,接入 ldap 后用户密码需要和 ldap 共享。而且还有些自研的系统,有些第三方系统只支持 oauth 登录,有些系统只支持 sso 登录。需要设计一个大而全然后又简单的用户登录。又因为 ldap 的方式,设计角色时需要考虑层级的关系
prisma
model User {
id int @id()
}
model UserAuth {
}