用户表
角色表
菜单表
用户关联角色表
角色关联菜单表
使用这 5 张表实现简单的用户权限功能
create table `b_user` (
`id` bigint unsigned not null auto_increment comment '唯一标识',
`name` varchar(32) not null comment '姓名',
`mobile` varchar(32) not null comment '手机号',
`email` varchar(64) not null comment '邮箱',
`password` varchar(64) not null comment '密码',
`gender` tinyint(4) comment '性别 1-男 2-女',
`avatar` varchar(255) comment '头像相对地址',
`is_use` tinyint(4) not null comment '账号是否启用 1-启用 0-禁用',
`creator` bigint not null comment '创建人id',
`creator_name` varchar(255) not null comment '创建人名称',
`create_time` datetime not null default current_timestamp comment '创建时间',
`modifier` bigint not null comment '修改人id',
`modifier_name` varchar(255) not null comment '修改人名称',
`modify_time` datetime not null comment '修改时间',
`last_login_time` datetime comment '最后一次登录系统时间',
`last_login_ip` varchar(64) comment '最后一次登录系统ip',
`last_mod_pwd_time` datetime comment '最后一次修改密码时间',
primary key (`id`),
unique key `idx_mobile` (`mobile`),
unique key `idx_email` (`email`)
) engine=innodb default charset=utf8mb4 comment='用户表';
create table `b_role` (
`id` bigint unsigned not null auto_increment comment '唯一标识',
`name` varchar(32) not null comment '名称',
`is_use` tinyint(4) not null comment '启用/禁用 1-启用, 0-禁用',
`creator` bigint not null comment '创建人',
`creator_name` varchar(255) not null comment '创建人名称',
`create_time` datetime not null default current_timestamp comment '创建时间',
`remark` varchar(255) comment '备注',
primary key (`id`)
) engine=innodb default charset=utf8mb4 comment='角色表';
create table `b_menu` (
`id` bigint unsigned not null auto_increment comment '唯一标识',
`name` varchar(255) not null comment '名称',
`parent_id` bigint not null comment '父菜单 id 如果是一级菜单, 那么值为 0',
`url` varchar(255) comment 'url',
`type` tinyint(4) not null comment '菜单类型, 1-目录, 2-菜单',
`is_use` tinyint(4) not null comment '启用/禁用 1-启用, 0-禁用',
`sort` int(11) not null comment '排序, 默认0',
`creator` bigint not null comment '创建人',
`creator_name` varchar(255) not null comment '创建人名称',
`create_time` datetime not null default current_timestamp comment '创建时间',
`remark` varchar(255) comment '备注',
`label` varchar(255) comment '菜单标记 (英文), 全局唯一, 不可重复',
`icon` varchar(50) comment '目录图标, type=1 时必填',
primary key (`id`)
) engine=innodb default charset=utf8mb4 comment='菜单表';
create table `b_user_role` (
`id` bigint unsigned not null auto_increment comment '唯一标识',
`user_id` bigint not null comment '用户 id',
`role_id` bigint not null comment '角色 id 如果是在子系统中授权的, 那么角色 id 在此处为空',
`role_name` varchar(255) default null comment '角色名称 如果是在子系统中授权的, 那么角色名称在此处为空',
`creator` bigint not null comment '创建人id',
`creator_name` varchar(255) not null comment '创建人名称',
`create_time` datetime not null default current_timestamp comment '创建时间',
primary key (`id`)
) engine=innodb default charset=utf8mb4 comment=' 用户在业务系统的角色关联表';
create table `b_role_menu` (
`id` bigint unsigned not null auto_increment comment '唯一标识',
`menu_id` bigint not null comment '菜单 id',
`role_id` bigint not null comment '角色 id',
`creator` bigint not null comment '创建人',
`creator_name` varchar(255) not null comment '创建人名称',
`create_time` datetime not null default current_timestamp comment '创建时间',
primary key (`id`)
) engine=innodb default charset=utf8mb4 comment='角色关联菜单表';