03-数据库设计文档.md 10.2 KB

03-数据库设计文档

  • Schema: xlyweberp_vibe_erp_test
  • Migration 清单: sql/migrations/V*.sql(由 Flyway 顺序 apply)
  • 生成方式: 由 A3 db-design-gen 基于 docs/01-需求清单/<module>/REQ-*.md REQ 卡片正向设计生成(schema SSoT)。

项目标准列约定

下文每张业务表的字段清单都自动包含以下 5 个标准列(匈牙利前缀 i int / s varchar / t datetime)。渲染时由 docs-03-table-template.md 模板内置原样输出。

列名 类型 可空 主键 说明
iIncrement int 整数主键 ID(自增方式由实现决定:DB AUTO_INCREMENT 或应用 / 触发器分配)
sId varchar(100) 业务 ID(对外暴露的字符串标识,如 UUID / 人类可读编号)
sBrandsId varchar(100) 品牌 ID(多租户隔离)
sSubsidiaryId varchar(100) 子公司 ID(组织层级隔离)
tCreateDate datetime 记录创建时间

字典 / 辅助表如有豁免,在该表业务注记里注明豁免原因。

ER 关系概览

本库围绕「用户管理(USR)」单模块设计,核心实体为用户表 usr_user,辅以 4 张支撑/关联表:

  • usr_user(用户)—— 核心表。承载登录账号、密码、用户类型、语言、单据修改权限、作废标志、最后登录时间等。
  • usr_employee(职员)—— 支撑表。提供员工名 / 员工编号 / 部门;usr_user.iEmployeeId 可选外键关联(N:1,一个职员至多对应一个登录用户)。
  • usr_company(公司 / 版本)—— 支撑表。登录页「版本」下拉的数据来源;当前仅供登录时选择,不与 usr_user 建强外键。
  • usr_permission(权限)—— 支撑表。定义可分配的权限项,按「权限分类」组织。
  • usr_user_permission(用户权限)—— 关联表。usr_userusr_permission 的多对多授权关系(对应新增 / 修改用户界面的「权限组」勾选)。

关系:

usr_user  N:1  usr_employee          (ON DELETE SET NULL)
usr_user  N:M  usr_permission         经 usr_user_permission(两侧 ON DELETE CASCADE)
usr_company                           独立支撑表(登录时选择,无外键)

表清单

  • usr_user — 用户表:登录账号与用户属性核心表
  • usr_employee — 职员表:员工名 / 部门等支撑信息
  • usr_company — 公司表:登录「版本」下拉数据来源
  • usr_permission — 权限表:可分配权限项定义
  • usr_user_permission — 用户权限关联表:用户↔权限多对多授权

usr_user — 用户表:登录账号与用户属性核心表

字段

字段 类型 Nullable 默认 业务含义
iIncrement int 整数主键 ID(标准列)
sId varchar(100) 业务 ID(标准列)
sBrandsId varchar(100) 1111111111 品牌 ID,多租户隔离(标准列)
sSubsidiaryId varchar(100) 1111111111 子公司 ID,组织层级隔离(标准列)
tCreateDate datetime 当前时间 创建时间(标准列,对应「制单日期」)
sUserName varchar(50) 用户名,登录账号,系统内全局唯一(3-20 位字母数字下划线)
sUserNo varchar(50) 用户号,关联职员后可自动带出员工编号 / 姓名
sPassword varchar(100) 登录密码,BCrypt 哈希存储(初始密码 666666)
iEmployeeId int 关联职员 ID(可选),外键 → usr_employee.iIncrement
sUserType varchar(20) 普通用户 用户类型:普通用户 / 超级管理员
sLanguage varchar(20) 中文 界面语言:中文 / 英文 / 繁体 【人工填写:需用户审阅】默认值与取值范围待确认
iCanModifyBill tinyint(1) 0 单据修改权限:0 否 / 1 是
iIsVoid tinyint(1) 0 作废 / 禁用标志:0 正常 / 1 已作废(禁用后不可登录)
tLastLoginDate datetime 最后登录时间,登录成功时更新
sCreator varchar(50) 制单人(创建该用户的操作员)

索引

  • uk_usr_user_username (UNIQUE): sUserName
  • idx_usr_user_employee (INDEX): iEmployeeId
  • idx_usr_user_type (INDEX): sUserType
  • idx_usr_user_tenant (INDEX): sBrandsId, sSubsidiaryId

外键

  • fk_usr_user_employee: iEmployeeId → usr_employee.iIncrement (SET NULL)

业务注记

用户表为本模块核心实体,承载登录认证(用户名 + 密码)与用户类型 / 语言 / 单据修改权限等属性。sUserName 全局唯一;sPassword 以 BCrypt 哈希存储,初始为 666666;iIsVoid=1 表示禁用,禁止登录。可选关联职员(iEmployeeId,职员删除时置空)以带出员工名 / 部门。登录令牌 JWT 为无状态,不落库。查询接口(REQ-USR-003)按用户名 / 类型 / 作废 / 登录日期 / 制单人等条件检索,密码字段不返回。


usr_employee — 职员表:员工名 / 部门等支撑信息

字段

字段 类型 Nullable 默认 业务含义
iIncrement int 整数主键 ID(标准列)
sId varchar(100) 业务 ID(标准列)
sBrandsId varchar(100) 1111111111 品牌 ID,多租户隔离(标准列)
sSubsidiaryId varchar(100) 1111111111 子公司 ID,组织层级隔离(标准列)
tCreateDate datetime 当前时间 创建时间(标准列)
sEmployeeName varchar(50) 职员 / 员工姓名(用户「员工名」下拉来源)
sEmployeeNo varchar(50) 员工编号
sDepartment varchar(100) 所属部门(用户查询输出「部门」来源)

索引

  • idx_usr_employee_name (INDEX): sEmployeeName
  • idx_usr_employee_tenant (INDEX): sBrandsId, sSubsidiaryId

外键

(无)

业务注记

职员表为用户的关联支撑表,提供员工名、员工编号、部门信息。用户新增 / 修改时通过「员工名」下拉选择职员,用户查询 / 展示时按 usr_user.iEmployeeId 关联取员工名与部门。可作为字典型支撑数据维护。


usr_company — 公司表:登录「版本」下拉数据来源

字段

字段 类型 Nullable 默认 业务含义
iIncrement int 整数主键 ID(标准列)
sId varchar(100) 业务 ID(标准列)
sBrandsId varchar(100) 1111111111 品牌 ID,多租户隔离(标准列)
sSubsidiaryId varchar(100) 1111111111 子公司 ID,组织层级隔离(标准列)
tCreateDate datetime 当前时间 创建时间(标准列)
sCompanyName varchar(100) 公司名称(登录页「版本」下拉的显示来源)
sVersion varchar(50) 版本 / 账套标识 【人工填写:需用户审阅】"版本"语义(账套 / 数据版本)待确认

索引

  • uk_usr_company_name (UNIQUE): sCompanyName

外键

(无)

业务注记

公司表为登录页「版本」下拉的数据来源(REQ-USR-004),每行代表一个可登录的公司 / 账套。当前仅用于登录时选择,不与用户表建立强外键关系。


usr_permission — 权限表:可分配权限项定义

字段

字段 类型 Nullable 默认 业务含义
iIncrement int 整数主键 ID(标准列)
sId varchar(100) 业务 ID(标准列)
sBrandsId varchar(100) 1111111111 品牌 ID,多租户隔离(标准列)
sSubsidiaryId varchar(100) 1111111111 子公司 ID,组织层级隔离(标准列)
tCreateDate datetime 当前时间 创建时间(标准列)
sPermissionName varchar(100) 权限名称
sPermissionCode varchar(100) 权限编码(程序判定用,系统内唯一)
sPermissionCategory varchar(100) 权限分类(新增 / 修改用户界面「权限组」的"权限分类")

索引

  • uk_usr_permission_code (UNIQUE): sPermissionCode
  • idx_usr_permission_category (INDEX): sPermissionCategory

外键

(无)

业务注记

权限表定义可分配的权限项,按「权限分类」组织(对应新增 / 修改用户界面的「权限组」网格)。sPermissionCode 全局唯一供程序判定。【人工填写:需用户审阅】权限粒度(按分类 / 按具体功能点)待确认。


usr_user_permission — 用户权限关联表:用户↔权限多对多授权

字段

字段 类型 Nullable 默认 业务含义
iIncrement int 整数主键 ID(标准列)
sId varchar(100) 业务 ID(标准列;关联表对外不暴露,可留空)
sBrandsId varchar(100) 1111111111 品牌 ID,多租户隔离(标准列)
sSubsidiaryId varchar(100) 1111111111 子公司 ID,组织层级隔离(标准列)
tCreateDate datetime 当前时间 创建时间(标准列)
iUserId int 用户 ID,外键 → usr_user.iIncrement
iPermissionId int 权限 ID,外键 → usr_permission.iIncrement

索引

  • uk_usr_user_permission (UNIQUE): iUserId, iPermissionId
  • idx_usr_user_permission_perm (INDEX): iPermissionId

外键

  • fk_usr_up_user: iUserId → usr_user.iIncrement (CASCADE)
  • fk_usr_up_permission: iPermissionId → usr_permission.iIncrement (CASCADE)

业务注记

用户↔权限多对多关联表,记录每个用户被授予的权限(对应「权限组」勾选)。(iUserId, iPermissionId) 唯一防重复授权;删除用户或权限时级联清除对应授权记录。该表为纯关联表,sId 业务 ID 不对外暴露(标准列仍保留以保持结构一致)。