Skip to content

物理数据模型

文档编号: SYS-DB-DES-002
版本: 1.0
日期: 2026-03-08
作者: 数据库架构师
状态: ✅ 已评审


一、概述

1.1 文档目的

本文档基于逻辑数据模型,设计System平台的物理数据模型(Physical Data Model),定义具体的表结构、字段类型、约束条件,为数据库实施提供基础。

1.2 输入文档

  • 逻辑数据模型(SYS-DB-DES-001)
  • 数据库命名规范
  • MySQL 8.0 数据库规范

1.3 设计原则

  • 性能优先: 考虑查询性能,合理设计字段类型和索引
  • 空间优化: 选择合适的数据类型,避免空间浪费
  • 可维护性: 清晰的命名和完整的注释
  • 兼容性: 遵循MySQL 8.0标准

二、数据库设计

2.1 数据库信息

属性
数据库名db_system
字符集utf8mb4
排序规则utf8mb4_unicode_ci
存储引擎InnoDB
时区+08:00

2.2 建库语句

sql
CREATE DATABASE IF NOT EXISTS `db_system` 
DEFAULT CHARACTER SET utf8mb4 
DEFAULT COLLATE utf8mb4_unicode_ci;

USE `db_system`;

三、表结构设计

3.1 用户管理域

3.1.1 用户表 (sys_user)

表说明: 存储系统用户的基本信息

表结构:

sql
CREATE TABLE `sys_user` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID',
  `username` varchar(50) NOT NULL COMMENT '用户名',
  `password` varchar(100) NOT NULL COMMENT '密码(加密存储)',
  `nickname` varchar(50) DEFAULT NULL COMMENT '昵称',
  `email` varchar(100) DEFAULT NULL COMMENT '邮箱',
  `phone` varchar(20) DEFAULT NULL COMMENT '手机号',
  `avatar` varchar(200) DEFAULT NULL COMMENT '头像URL',
  `status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:0-禁用,1-启用',
  `gender` tinyint DEFAULT '0' COMMENT '性别:0-未知,1-男,2-女',
  `employee_no` varchar(50) DEFAULT NULL COMMENT '员工编号',
  `dept_id` bigint DEFAULT NULL COMMENT '主属部门ID',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `create_by` bigint DEFAULT NULL COMMENT '创建人ID',
  `update_by` bigint DEFAULT NULL COMMENT '更新人ID',
  `deleted` tinyint NOT NULL DEFAULT '0' COMMENT '删除标志:0-正常,1-删除',
  `tenant_id` bigint NOT NULL COMMENT '租户ID',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_username` (`username`),
  UNIQUE KEY `uk_email` (`email`),
  UNIQUE KEY `uk_phone` (`phone`),
  UNIQUE KEY `uk_employee_no` (`employee_no`),
  KEY `idx_dept_id` (`dept_id`),
  KEY `idx_tenant_id` (`tenant_id`),
  KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';

字段说明:

字段名数据类型可空默认值说明
idBIGINT自增主键
usernameVARCHAR(50)-用户名,唯一
passwordVARCHAR(100)-BCrypt加密
nicknameVARCHAR(50)NULL显示名称
emailVARCHAR(100)NULL邮箱,唯一
phoneVARCHAR(20)NULL手机号,唯一
avatarVARCHAR(200)NULL头像URL
statusTINYINT10-禁用,1-启用
genderTINYINT00-未知,1-男,2-女
employee_noVARCHAR(50)NULL员工编号,唯一
dept_idBIGINTNULL外键:sys_dept.id
remarkVARCHAR(500)NULL备注
create_timeDATETIMECURRENT_TIMESTAMP创建时间
update_timeDATETIMECURRENT_TIMESTAMP更新时间
create_byBIGINTNULL创建人ID
update_byBIGINTNULL更新人ID
deletedTINYINT0逻辑删除标志
tenant_idBIGINT-租户ID

3.1.2 用户角色关系表 (sys_user_role)

表说明: 用户与角色的多对多关系

sql
CREATE TABLE `sys_user_role` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '关系ID',
  `user_id` bigint NOT NULL COMMENT '用户ID',
  `role_id` bigint NOT NULL COMMENT '角色ID',
  `is_primary` tinyint NOT NULL DEFAULT '0' COMMENT '是否主角色:0-否,1-是',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `create_by` bigint DEFAULT NULL COMMENT '创建人ID',
  `tenant_id` bigint NOT NULL COMMENT '租户ID',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_user_role` (`user_id`,`role_id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_role_id` (`role_id`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户角色关系表';

3.1.3 用户部门关系表 (sys_user_dept)

表说明: 用户与部门的多对多关系

sql
CREATE TABLE `sys_user_dept` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '关系ID',
  `user_id` bigint NOT NULL COMMENT '用户ID',
  `dept_id` bigint NOT NULL COMMENT '部门ID',
  `is_primary` tinyint NOT NULL DEFAULT '0' COMMENT '是否主部门:0-否,1-是',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `create_by` bigint DEFAULT NULL COMMENT '创建人ID',
  `tenant_id` bigint NOT NULL COMMENT '租户ID',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_user_dept` (`user_id`,`dept_id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_dept_id` (`dept_id`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户部门关系表';

3.2 权限管理域

3.2.1 角色表 (sys_role)

表说明: 系统角色定义

sql
CREATE TABLE `sys_role` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '角色ID',
  `role_code` varchar(50) NOT NULL COMMENT '角色编码',
  `role_name` varchar(50) NOT NULL COMMENT '角色名称',
  `role_type` tinyint NOT NULL DEFAULT '2' COMMENT '角色类型:1-系统角色,2-业务角色',
  `data_scope` tinyint NOT NULL DEFAULT '1' COMMENT '数据范围:1-全部,2-本部门,3-本部门及子部门,4-仅本人,5-自定义',
  `status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:0-禁用,1-启用',
  `sort_order` int NOT NULL DEFAULT '0' COMMENT '排序号',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `create_by` bigint DEFAULT NULL COMMENT '创建人ID',
  `update_by` bigint DEFAULT NULL COMMENT '更新人ID',
  `deleted` tinyint NOT NULL DEFAULT '0' COMMENT '删除标志',
  `tenant_id` bigint NOT NULL COMMENT '租户ID',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_role_code` (`role_code`),
  KEY `idx_tenant_id` (`tenant_id`),
  KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色表';

3.2.2 角色权限关系表 (sys_role_permission)

表说明: 角色与权限的多对多关系

sql
CREATE TABLE `sys_role_permission` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '关系ID',
  `role_id` bigint NOT NULL COMMENT '角色ID',
  `permission_id` bigint NOT NULL COMMENT '权限ID',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `create_by` bigint DEFAULT NULL COMMENT '创建人ID',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_role_permission` (`role_id`,`permission_id`),
  KEY `idx_role_id` (`role_id`),
  KEY `idx_permission_id` (`permission_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色权限关系表';

3.2.3 权限表 (sys_permission)

表说明: 系统权限定义

sql
CREATE TABLE `sys_permission` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '权限ID',
  `perm_code` varchar(100) NOT NULL COMMENT '权限编码',
  `perm_name` varchar(50) NOT NULL COMMENT '权限名称',
  `resource_type` tinyint NOT NULL COMMENT '资源类型:1-菜单,2-按钮,3-接口',
  `resource_url` varchar(200) DEFAULT NULL COMMENT '资源URL',
  `http_method` varchar(10) DEFAULT NULL COMMENT 'HTTP方法:GET/POST/PUT/DELETE',
  `parent_id` bigint NOT NULL DEFAULT '0' COMMENT '父权限ID,0表示根',
  `sort_order` int NOT NULL DEFAULT '0' COMMENT '排序号',
  `status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:0-禁用,1-启用',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_perm_code` (`perm_code`),
  KEY `idx_parent_id` (`parent_id`),
  KEY `idx_resource_type` (`resource_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='权限表';

3.2.4 菜单表 (sys_menu)

表说明: 系统菜单定义

sql
CREATE TABLE `sys_menu` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '菜单ID',
  `menu_name` varchar(50) NOT NULL COMMENT '菜单名称',
  `menu_type` tinyint NOT NULL COMMENT '菜单类型:1-目录,2-菜单,3-按钮',
  `icon` varchar(100) DEFAULT NULL COMMENT '菜单图标',
  `path` varchar(200) DEFAULT NULL COMMENT '路由路径',
  `component` varchar(200) DEFAULT NULL COMMENT '组件路径',
  `permission` varchar(100) DEFAULT NULL COMMENT '权限标识',
  `parent_id` bigint NOT NULL DEFAULT '0' COMMENT '父菜单ID,0表示根',
  `menu_level` int NOT NULL DEFAULT '1' COMMENT '菜单层级',
  `sort_order` int NOT NULL DEFAULT '0' COMMENT '排序号',
  `is_cache` tinyint NOT NULL DEFAULT '0' COMMENT '是否缓存:0-否,1-是',
  `is_visible` tinyint NOT NULL DEFAULT '1' COMMENT '是否可见:0-否,1-是',
  `status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:0-禁用,1-启用',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `create_by` bigint DEFAULT NULL COMMENT '创建人ID',
  `update_by` bigint DEFAULT NULL COMMENT '更新人ID',
  `deleted` tinyint NOT NULL DEFAULT '0' COMMENT '删除标志',
  `tenant_id` bigint NOT NULL COMMENT '租户ID',
  PRIMARY KEY (`id`),
  KEY `idx_parent_id` (`parent_id`),
  KEY `idx_tenant_id` (`tenant_id`),
  KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='菜单表';

3.3 组织管理域

3.3.1 部门表 (sys_dept)

表说明: 组织架构部门

sql
CREATE TABLE `sys_dept` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '部门ID',
  `dept_code` varchar(50) NOT NULL COMMENT '部门编码',
  `dept_name` varchar(50) NOT NULL COMMENT '部门名称',
  `parent_id` bigint NOT NULL DEFAULT '0' COMMENT '父部门ID,0表示根',
  `ancestors` varchar(500) DEFAULT NULL COMMENT '祖先路径,如:0,1,2,',
  `dept_level` int NOT NULL DEFAULT '1' COMMENT '部门层级',
  `leader_id` bigint DEFAULT NULL COMMENT '负责人ID',
  `sort_order` int NOT NULL DEFAULT '0' COMMENT '排序号',
  `status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:0-禁用,1-启用',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `create_by` bigint DEFAULT NULL COMMENT '创建人ID',
  `update_by` bigint DEFAULT NULL COMMENT '更新人ID',
  `deleted` tinyint NOT NULL DEFAULT '0' COMMENT '删除标志',
  `tenant_id` bigint NOT NULL COMMENT '租户ID',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_dept_code` (`dept_code`),
  KEY `idx_parent_id` (`parent_id`),
  KEY `idx_tenant_id` (`tenant_id`),
  KEY `idx_leader_id` (`leader_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='部门表';

3.3.2 岗位表 (sys_position)

表说明: 岗位定义

sql
CREATE TABLE `sys_position` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '岗位ID',
  `position_code` varchar(50) NOT NULL COMMENT '岗位编码',
  `position_name` varchar(50) NOT NULL COMMENT '岗位名称',
  `position_level` int DEFAULT NULL COMMENT '岗位级别,数字越小级别越高',
  `status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:0-禁用,1-启用',
  `sort_order` int NOT NULL DEFAULT '0' COMMENT '排序号',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `create_by` bigint DEFAULT NULL COMMENT '创建人ID',
  `update_by` bigint DEFAULT NULL COMMENT '更新人ID',
  `deleted` tinyint NOT NULL DEFAULT '0' COMMENT '删除标志',
  `tenant_id` bigint NOT NULL COMMENT '租户ID',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_position_code` (`position_code`),
  KEY `idx_tenant_id` (`tenant_id`),
  KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='岗位表';

3.3.3 员工表 (sys_employee)

表说明: 员工信息

sql
CREATE TABLE `sys_employee` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '员工ID',
  `employee_no` varchar(50) NOT NULL COMMENT '员工编号',
  `employee_name` varchar(50) NOT NULL COMMENT '员工姓名',
  `user_id` bigint DEFAULT NULL COMMENT '关联用户ID',
  `dept_id` bigint NOT NULL COMMENT '所属部门ID',
  `position_id` bigint DEFAULT NULL COMMENT '岗位ID',
  `gender` tinyint DEFAULT '0' COMMENT '性别:0-未知,1-男,2-女',
  `birthday` date DEFAULT NULL COMMENT '出生日期',
  `id_card` varchar(100) DEFAULT NULL COMMENT '身份证号(加密存储)',
  `phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
  `email` varchar(100) DEFAULT NULL COMMENT '邮箱',
  `entry_date` date DEFAULT NULL COMMENT '入职日期',
  `leave_date` date DEFAULT NULL COMMENT '离职日期',
  `employment_status` tinyint NOT NULL DEFAULT '1' COMMENT '在职状态:1-在职,2-离职,3-试用期',
  `work_location` varchar(100) DEFAULT NULL COMMENT '工作地点',
  `address` varchar(200) DEFAULT NULL COMMENT '家庭住址',
  `emergency_contact` varchar(50) DEFAULT NULL COMMENT '紧急联系人',
  `emergency_phone` varchar(20) DEFAULT NULL COMMENT '紧急联系电话',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `create_by` bigint DEFAULT NULL COMMENT '创建人ID',
  `update_by` bigint DEFAULT NULL COMMENT '更新人ID',
  `deleted` tinyint NOT NULL DEFAULT '0' COMMENT '删除标志',
  `tenant_id` bigint NOT NULL COMMENT '租户ID',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_employee_no` (`employee_no`),
  UNIQUE KEY `uk_user_id` (`user_id`),
  KEY `idx_dept_id` (`dept_id`),
  KEY `idx_position_id` (`position_id`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='员工表';

3.4 系统配置域

3.4.1 租户基本信息配置表 (sys_tenant_config)

表说明: 租户基本信息配置

sql
CREATE TABLE `sys_tenant_config` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '配置ID',
  `tenant_name` varchar(100) NOT NULL COMMENT '租户名称',
  `tenant_code` varchar(50) NOT NULL COMMENT '租户编码',
  `logo_url` varchar(200) DEFAULT NULL COMMENT '租户Logo',
  `contact_name` varchar(50) DEFAULT NULL COMMENT '联系人姓名',
  `contact_phone` varchar(20) DEFAULT NULL COMMENT '联系人电话',
  `contact_email` varchar(100) DEFAULT NULL COMMENT '联系人邮箱',
  `address` varchar(200) DEFAULT NULL COMMENT '公司地址',
  `industry_type` varchar(50) DEFAULT NULL COMMENT '行业类型',
  `company_scale` varchar(50) DEFAULT NULL COMMENT '公司规模',
  `expire_time` datetime DEFAULT NULL COMMENT '到期时间',
  `status` tinyint NOT NULL DEFAULT '1' COMMENT '租户状态:0-禁用,1-启用',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `create_by` bigint DEFAULT NULL COMMENT '创建人ID',
  `update_by` bigint DEFAULT NULL COMMENT '更新人ID',
  `deleted` tinyint NOT NULL DEFAULT '0' COMMENT '删除标志',
  `tenant_id` bigint NOT NULL COMMENT '租户ID',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_tenant_code` (`tenant_code`),
  KEY `idx_tenant_id` (`tenant_id`),
  KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='租户基本信息配置表';

3.4.2 Web信息配置表 (sys_web_config)

表说明: Web端配置信息

sql
CREATE TABLE `sys_web_config` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '配置ID',
  `site_title` varchar(100) DEFAULT NULL COMMENT '网站标题',
  `site_logo` varchar(200) DEFAULT NULL COMMENT '网站Logo',
  `site_favicon` varchar(200) DEFAULT NULL COMMENT '网站图标',
  `login_bg_image` varchar(200) DEFAULT NULL COMMENT '登录背景图',
  `login_title` varchar(100) DEFAULT NULL COMMENT '登录页标题',
  `copyright` varchar(200) DEFAULT NULL COMMENT '版权信息',
  `icp_record` varchar(100) DEFAULT NULL COMMENT 'ICP备案号',
  `theme_color` varchar(20) DEFAULT NULL COMMENT '主题色',
  `sidebar_theme` tinyint DEFAULT '1' COMMENT '侧边栏主题:1-深色,2-浅色',
  `layout_mode` tinyint DEFAULT '1' COMMENT '布局模式:1-左侧菜单,2-顶部菜单',
  `is_show_watermark` tinyint NOT NULL DEFAULT '0' COMMENT '是否显示水印:0-否,1-是',
  `watermark_text` varchar(100) DEFAULT NULL COMMENT '水印文字',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `create_by` bigint DEFAULT NULL COMMENT '创建人ID',
  `update_by` bigint DEFAULT NULL COMMENT '更新人ID',
  `deleted` tinyint NOT NULL DEFAULT '0' COMMENT '删除标志',
  `tenant_id` bigint NOT NULL COMMENT '租户ID',
  PRIMARY KEY (`id`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Web信息配置表';

3.4.3 商务信息配置表 (sys_business_config)

表说明: 商务信息配置

sql
CREATE TABLE `sys_business_config` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '配置ID',
  `contract_no` varchar(50) DEFAULT NULL COMMENT '合同编号',
  `contract_start_date` date DEFAULT NULL COMMENT '合同开始日期',
  `contract_end_date` date DEFAULT NULL COMMENT '合同结束日期',
  `service_type` varchar(50) DEFAULT NULL COMMENT '服务类型',
  `service_level` varchar(50) DEFAULT NULL COMMENT '服务等级',
  `max_user_count` int DEFAULT NULL COMMENT '最大用户数',
  `max_storage_size` bigint DEFAULT NULL COMMENT '最大存储空间(MB)',
  `payment_cycle` tinyint DEFAULT NULL COMMENT '付款周期:1-月付,2-季付,3-年付',
  `payment_status` tinyint DEFAULT NULL COMMENT '付款状态:0-未付款,1-已付款',
  `invoice_title` varchar(200) DEFAULT NULL COMMENT '发票抬头',
  `invoice_tax_no` varchar(50) DEFAULT NULL COMMENT '发票税号',
  `invoice_address` varchar(200) DEFAULT NULL COMMENT '发票地址',
  `invoice_phone` varchar(20) DEFAULT NULL COMMENT '发票电话',
  `invoice_bank` varchar(100) DEFAULT NULL COMMENT '开户银行',
  `invoice_account` varchar(50) DEFAULT NULL COMMENT '银行账号',
  `sales_manager` varchar(50) DEFAULT NULL COMMENT '销售经理',
  `sales_phone` varchar(20) DEFAULT NULL COMMENT '销售电话',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `create_by` bigint DEFAULT NULL COMMENT '创建人ID',
  `update_by` bigint DEFAULT NULL COMMENT '更新人ID',
  `deleted` tinyint NOT NULL DEFAULT '0' COMMENT '删除标志',
  `tenant_id` bigint NOT NULL COMMENT '租户ID',
  PRIMARY KEY (`id`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='商务信息配置表';

3.4.4 数据字典类型表 (sys_dict_type)

表说明: 数据字典类型

sql
CREATE TABLE `sys_dict_type` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '类型ID',
  `dict_code` varchar(50) NOT NULL COMMENT '字典编码',
  `dict_name` varchar(50) NOT NULL COMMENT '字典名称',
  `status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:0-禁用,1-启用',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `create_by` bigint DEFAULT NULL COMMENT '创建人ID',
  `update_by` bigint DEFAULT NULL COMMENT '更新人ID',
  `deleted` tinyint NOT NULL DEFAULT '0' COMMENT '删除标志',
  `tenant_id` bigint NOT NULL COMMENT '租户ID',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_dict_code` (`dict_code`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='数据字典类型表';

3.4.5 数据字典项表 (sys_dict_item)

表说明: 数据字典项

sql
CREATE TABLE `sys_dict_item` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '项ID',
  `dict_type_id` bigint NOT NULL COMMENT '字典类型ID',
  `item_code` varchar(50) NOT NULL COMMENT '项编码',
  `item_label` varchar(50) NOT NULL COMMENT '项标签',
  `item_value` varchar(100) NOT NULL COMMENT '项值',
  `sort_order` int NOT NULL DEFAULT '0' COMMENT '排序号',
  `status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:0-禁用,1-启用',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `create_by` bigint DEFAULT NULL COMMENT '创建人ID',
  `update_by` bigint DEFAULT NULL COMMENT '更新人ID',
  `deleted` tinyint NOT NULL DEFAULT '0' COMMENT '删除标志',
  `tenant_id` bigint NOT NULL COMMENT '租户ID',
  PRIMARY KEY (`id`),
  KEY `idx_dict_type_id` (`dict_type_id`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='数据字典项表';

3.5 审计日志域

3.5.1 操作日志表 (sys_operation_log)

表说明: 用户操作日志

sql
CREATE TABLE `sys_operation_log` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '日志ID',
  `user_id` bigint DEFAULT NULL COMMENT '用户ID',
  `username` varchar(50) DEFAULT NULL COMMENT '用户名',
  `operation_type` varchar(50) NOT NULL COMMENT '操作类型',
  `operation_desc` varchar(200) DEFAULT NULL COMMENT '操作描述',
  `request_method` varchar(10) DEFAULT NULL COMMENT '请求方法',
  `request_url` varchar(500) DEFAULT NULL COMMENT '请求URL',
  `request_params` text COMMENT '请求参数',
  `response_data` text COMMENT '响应数据',
  `ip_address` varchar(50) DEFAULT NULL COMMENT 'IP地址',
  `user_agent` varchar(500) DEFAULT NULL COMMENT '用户代理',
  `execution_time` int DEFAULT NULL COMMENT '执行时间(毫秒)',
  `status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:0-失败,1-成功',
  `error_msg` text COMMENT '错误信息',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `tenant_id` bigint NOT NULL COMMENT '租户ID',
  PRIMARY KEY (`id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_operation_type` (`operation_type`),
  KEY `idx_create_time` (`create_time`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='操作日志表';

3.5.2 登录日志表 (sys_login_log)

表说明: 用户登录日志

sql
CREATE TABLE `sys_login_log` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '日志ID',
  `user_id` bigint DEFAULT NULL COMMENT '用户ID',
  `username` varchar(50) NOT NULL COMMENT '用户名',
  `login_type` tinyint NOT NULL COMMENT '登录类型:1-账号密码,2-手机号,3-邮箱',
  `ip_address` varchar(50) DEFAULT NULL COMMENT 'IP地址',
  `ip_location` varchar(100) DEFAULT NULL COMMENT 'IP归属地',
  `user_agent` varchar(500) DEFAULT NULL COMMENT '用户代理',
  `browser` varchar(50) DEFAULT NULL COMMENT '浏览器',
  `os` varchar(50) DEFAULT NULL COMMENT '操作系统',
  `status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:0-失败,1-成功',
  `error_msg` varchar(500) DEFAULT NULL COMMENT '错误信息',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `tenant_id` bigint NOT NULL COMMENT '租户ID',
  PRIMARY KEY (`id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_username` (`username`),
  KEY `idx_create_time` (`create_time`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='登录日志表';

四、约束汇总

4.1 主键约束

表名主键字段说明
sys_userid自增主键
sys_roleid自增主键
sys_permissionid自增主键
sys_menuid自增主键
sys_deptid自增主键
sys_positionid自增主键
sys_employeeid自增主键
sys_tenant_configid自增主键
sys_web_configid自增主键
sys_business_configid自增主键
sys_dict_typeid自增主键
sys_dict_itemid自增主键
sys_operation_logid自增主键
sys_login_logid自增主键

4.2 唯一约束

表名字段约束名说明
sys_userusernameuk_username用户名唯一
sys_useremailuk_email邮箱唯一
sys_userphoneuk_phone手机号唯一
sys_useremployee_nouk_employee_no员工编号唯一
sys_rolerole_codeuk_role_code角色编码唯一
sys_permissionperm_codeuk_perm_code权限编码唯一
sys_deptdept_codeuk_dept_code部门编码唯一
sys_positionposition_codeuk_position_code岗位编码唯一
sys_employeeemployee_nouk_employee_no员工编号唯一
sys_employeeuser_iduk_user_id用户ID唯一
sys_tenant_configtenant_codeuk_tenant_code租户编码唯一
sys_dict_typedict_codeuk_dict_code字典编码唯一

4.3 外键约束

子表字段父表父字段级联规则
sys_userdept_idsys_deptidON DELETE SET NULL
sys_user_roleuser_idsys_useridON DELETE CASCADE
sys_user_rolerole_idsys_roleidON DELETE CASCADE
sys_user_deptuser_idsys_useridON DELETE CASCADE
sys_user_deptdept_idsys_deptidON DELETE CASCADE
sys_role_permissionrole_idsys_roleidON DELETE CASCADE
sys_role_permissionpermission_idsys_permissionidON DELETE CASCADE
sys_employeeuser_idsys_useridON DELETE SET NULL
sys_employeedept_idsys_deptidON DELETE RESTRICT
sys_employeeposition_idsys_positionidON DELETE SET NULL
sys_dict_itemdict_type_idsys_dict_typeidON DELETE CASCADE

五、表统计

表数量表名
用户管理域3sys_user, sys_user_role, sys_user_dept
权限管理域4sys_role, sys_role_permission, sys_permission, sys_menu
组织管理域3sys_dept, sys_position, sys_employee
系统配置域5sys_tenant_config, sys_web_config, sys_business_config, sys_dict_type, sys_dict_item
审计日志域2sys_operation_log, sys_login_log
总计17-

六、审核记录

6.1 审核状态

审核项状态审核人审核日期
表结构设计✓ 通过技术负责人2026-03-08
约束设计✓ 通过技术负责人2026-03-08
字段类型定义✓ 通过技术负责人2026-03-08
外键关系✓ 通过技术负责人2026-03-08

6.2 签字确认

角色姓名签字日期
编制人数据库架构师_____________2026-03-08
审核人技术负责人_____________2026-03-08
批准人项目经理_____________2026-03-08

七、修订记录

版本日期作者变更内容
1.02026-03-08数据库架构师初始版本,创建物理数据模型

Released under the MIT License.