Guns项目数据库设计指南:10个核心模块表结构详解

Guns项目数据库设计指南:10个核心模块表结构详解

【免费下载链接】gunsGuns基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springmvc + shiro + 分页插件PageHelper + 通用Mapper + beetl!Guns项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),可以直接作为一个后台管理系统的脚手架.项目地址: https://gitcode.com/gh_mirrors/gun/guns

Guns是基于SpringBoot开发的简洁后台管理系统,完美整合springmvc + shiro + 分页插件PageHelper + 通用Mapper + beetl,提供了丰富的基础模块。本文将详细解析Guns项目的10个核心模块表结构,帮助开发者快速理解系统数据模型设计。

一、用户管理模块(sys_user)

用户管理模块是系统的核心,存储管理员的基本信息。表结构设计如下:

CREATE TABLE `sys_user` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id', `avatar` varchar(255) DEFAULT NULL COMMENT '头像', `account` varchar(45) DEFAULT NULL COMMENT '账号', `password` varchar(45) DEFAULT NULL COMMENT '密码', `salt` varchar(45) DEFAULT NULL COMMENT 'md5密码盐', `name` varchar(45) DEFAULT NULL COMMENT '名字', `birthday` datetime DEFAULT NULL COMMENT '生日', `sex` int(11) DEFAULT NULL COMMENT '性别(1:男 2:女)', `email` varchar(45) DEFAULT NULL COMMENT '电子邮件', `phone` varchar(45) DEFAULT NULL COMMENT '电话', `roleid` varchar(255) DEFAULT NULL COMMENT '角色id', `deptid` int(11) DEFAULT NULL COMMENT '部门id', `status` int(11) DEFAULT NULL COMMENT '状态(1:启用 2:冻结 3:删除)', `createtime` datetime DEFAULT NULL COMMENT '创建时间', `version` int(11) DEFAULT NULL COMMENT '保留字段', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=47 DEFAULT CHARSET=utf8 COMMENT='管理员表';

关键字段说明:

  • account:用户登录账号,唯一标识
  • passwordsalt:密码存储采用MD5加盐加密
  • roleid:用户关联的角色ID,支持多角色
  • deptid:用户所属部门ID
  • status:用户状态管理,支持启用、冻结和删除状态

二、角色管理模块(sys_role)

角色管理模块用于实现RBAC权限模型,定义系统角色信息。表结构如下:

CREATE TABLE `sys_role` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id', `num` int(11) DEFAULT NULL COMMENT '序号', `pid` int(11) DEFAULT NULL COMMENT '父角色id', `name` varchar(255) DEFAULT NULL COMMENT '角色名称', `deptid` int(11) DEFAULT NULL COMMENT '部门名称', `tips` varchar(255) DEFAULT NULL COMMENT '提示', `version` int(11) DEFAULT NULL COMMENT '保留字段(暂时没用)', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='角色表';

角色表支持角色的层级关系,通过pid字段实现角色的父子结构,便于权限的继承和管理。

三、菜单管理模块(sys_menu)

菜单管理模块定义系统的菜单结构和权限控制。表结构设计如下:

CREATE TABLE `sys_menu` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键id', `code` varchar(255) DEFAULT NULL COMMENT '菜单编号', `pcode` varchar(255) DEFAULT NULL COMMENT '菜单父编号', `pcodes` varchar(255) DEFAULT NULL COMMENT '当前菜单的所有父菜单编号', `name` varchar(255) DEFAULT NULL COMMENT '菜单名称', `icon` varchar(255) DEFAULT NULL COMMENT '菜单图标', `url` varchar(255) DEFAULT NULL COMMENT 'url地址', `num` int(65) DEFAULT NULL COMMENT '菜单排序号', `levels` int(65) DEFAULT NULL COMMENT '菜单层级', `ismenu` int(11) DEFAULT NULL COMMENT '是否是菜单(1:是 0:不是)', `tips` varchar(255) DEFAULT NULL COMMENT '备注', `status` int(65) DEFAULT NULL COMMENT '菜单状态 : 1:启用 0:不启用', `isopen` int(11) DEFAULT NULL COMMENT '是否打开: 1:打开 0:不打开', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=171 DEFAULT CHARSET=utf8 COMMENT='菜单表';

菜单表设计支持多级菜单结构,通过pcodepcodes字段记录菜单的父子关系,ismenu字段区分菜单和按钮权限,levels字段标识菜单层级。

四、部门管理模块(sys_dept)

部门管理模块用于组织架构管理,实现企业部门的层级结构。表结构如下:

CREATE TABLE `sys_dept` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id', `num` int(11) DEFAULT NULL COMMENT '排序', `pid` int(11) DEFAULT NULL COMMENT '父部门id', `pids` varchar(255) DEFAULT NULL COMMENT '父级ids', `simplename` varchar(45) DEFAULT NULL COMMENT '简称', `fullname` varchar(255) DEFAULT NULL COMMENT '全称', `tips` varchar(255) DEFAULT NULL COMMENT '提示', `version` int(11) DEFAULT NULL COMMENT '版本(乐观锁保留字段)', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8 COMMENT='部门表';

部门表通过pidpids字段实现部门的层级结构,支持无限级部门划分,version字段支持乐观锁机制。

五、角色菜单关联模块(sys_relation)

角色菜单关联模块实现角色与菜单的多对多关系,是权限控制的核心表。表结构如下:

CREATE TABLE `sys_relation` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', `menuid` bigint(11) DEFAULT NULL COMMENT '菜单id', `roleid` int(11) DEFAULT NULL COMMENT '角色id', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3737 DEFAULT CHARSET=utf8 COMMENT='角色和菜单关联表';

通过menuidroleid的组合,实现角色对菜单的权限分配,一条记录表示一个角色拥有一个菜单的访问权限。

六、字典管理模块(sys_dict)

字典管理模块用于系统参数的统一管理,如性别、状态等枚举类型数据。表结构如下:

CREATE TABLE `sys_dict` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id', `num` int(11) DEFAULT NULL COMMENT '排序', `pid` int(11) DEFAULT NULL COMMENT '父级字典', `name` varchar(255) DEFAULT NULL COMMENT '名称', `tips` varchar(255) DEFAULT NULL COMMENT '提示', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=39 DEFAULT CHARSET=utf8 COMMENT='字典表';

字典表采用树形结构设计,通过pid字段实现字典的分类和层级关系,便于系统参数的统一维护和管理。

七、登录日志模块(sys_login_log)

登录日志模块记录用户的登录行为,用于系统安全审计。表结构如下:

CREATE TABLE `sys_login_log` ( `id` int(65) NOT NULL AUTO_INCREMENT COMMENT '主键', `logname` varchar(255) DEFAULT NULL COMMENT '日志名称', `userid` int(65) DEFAULT NULL COMMENT '管理员id', `createtime` datetime DEFAULT NULL COMMENT '创建时间', `succeed` varchar(255) DEFAULT NULL COMMENT '是否执行成功', `message` text COMMENT '具体消息', `ip` varchar(255) DEFAULT NULL COMMENT '登录ip', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=216 DEFAULT CHARSET=utf8 COMMENT='登录记录';

登录日志记录用户登录的时间、IP地址、登录状态等信息,有助于系统安全审计和问题排查。

八、操作日志模块(sys_operation_log)

操作日志模块记录用户的操作行为,用于系统操作审计和问题追踪。表结构如下:

CREATE TABLE `sys_operation_log` ( `id` int(65) NOT NULL AUTO_INCREMENT COMMENT '主键', `logtype` varchar(255) DEFAULT NULL COMMENT '日志类型', `logname` varchar(255) DEFAULT NULL COMMENT '日志名称', `userid` int(65) DEFAULT NULL COMMENT '用户id', `classname` varchar(255) DEFAULT NULL COMMENT '类名称', `method` text COMMENT '方法名称', `createtime` datetime DEFAULT NULL COMMENT '创建时间', `succeed` varchar(255) DEFAULT NULL COMMENT '是否成功', `message` text COMMENT '备注', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=550 DEFAULT CHARSET=utf8 COMMENT='操作日志';

操作日志记录用户操作的类名、方法名、操作结果等详细信息,便于系统操作审计和问题追踪。

九、通知管理模块(sys_notice)

通知管理模块用于系统公告和消息的发布与管理。表结构如下:

CREATE TABLE `sys_notice` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', `title` varchar(255) DEFAULT NULL COMMENT '标题', `type` int(11) DEFAULT NULL COMMENT '类型', `content` text COMMENT '内容', `createtime` datetime DEFAULT NULL COMMENT '创建时间', `creater` int(11) DEFAULT NULL COMMENT '创建人', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COMMENT='通知表';

通知表存储系统公告的标题、内容、创建时间等信息,支持不同类型的通知管理。

十、业务测试模块(test)

业务测试模块是一个示例模块,展示如何扩展Guns系统的业务功能。表结构如下:

CREATE TABLE `test` ( `id` int(11) NOT NULL, `value` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

该模块作为业务扩展的示例,开发者可以参考此模块的设计方式,扩展自己的业务功能。

总结

Guns项目的数据库设计遵循了以下原则:

  1. 模块化设计,每个模块对应独立的表结构
  2. 采用树形结构实现层级关系,如部门、菜单、字典等
  3. 基于RBAC模型设计权限系统,通过角色菜单关联表实现权限控制
  4. 完善的日志记录,支持系统审计和问题追踪

通过本文的详细解析,相信开发者已经对Guns项目的数据库设计有了全面的了解。这些核心模块的表结构设计可以作为后台管理系统的通用设计参考,帮助开发者快速构建自己的业务系统。

要开始使用Guns项目,只需执行以下命令克隆仓库:

git clone https://gitcode.com/gh_mirrors/gun/guns

然后参考项目中的SQL文件(sql/guns.sql和sql/biz.sql)创建数据库表结构,即可快速搭建起一个功能完善的后台管理系统。

【免费下载链接】gunsGuns基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springmvc + shiro + 分页插件PageHelper + 通用Mapper + beetl!Guns项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),可以直接作为一个后台管理系统的脚手架.项目地址: https://gitcode.com/gh_mirrors/gun/guns

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考