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:用户登录账号,唯一标识password和salt:密码存储采用MD5加盐加密roleid:用户关联的角色ID,支持多角色deptid:用户所属部门IDstatus:用户状态管理,支持启用、冻结和删除状态
二、角色管理模块(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='菜单表';菜单表设计支持多级菜单结构,通过pcode和pcodes字段记录菜单的父子关系,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='部门表';部门表通过pid和pids字段实现部门的层级结构,支持无限级部门划分,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='角色和菜单关联表';通过menuid和roleid的组合,实现角色对菜单的权限分配,一条记录表示一个角色拥有一个菜单的访问权限。
六、字典管理模块(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项目的数据库设计遵循了以下原则:
- 模块化设计,每个模块对应独立的表结构
- 采用树形结构实现层级关系,如部门、菜单、字典等
- 基于RBAC模型设计权限系统,通过角色菜单关联表实现权限控制
- 完善的日志记录,支持系统审计和问题追踪
通过本文的详细解析,相信开发者已经对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),仅供参考