WEB生成MySQL脚本如下:接下来就是把在数据库跑下

WEB生成MySQL脚本如下:接下来就是把在数据库跑下

在WEB开发中,难免要解决权限管理的问题,在这里结合项目和之前对权限的理解,记录下权限系统构建的过程。

主要运用的技术:Spring MVC + Mybatis+Bootstrap +Apache Shiro + MySQL

权限系统设计思想:权限主要是指明哪些用户可以对系统的哪些功能有什么样的权限,而一个系统的功能从程序开发的角度来说就是对数据的CURD(增、删、改、查)。我们进一步把用户就行分组处理,因为可能不同的用户都是拥有相同的权限的,这样我们只要把这些用户归属于用户组,再对用户组进行授权,这样就有效的控制了用户。从权限的作用来看,我们需要的实体有:用户用户角色权限设计,权限,角色。一般来说一个用户可能属于多个角色,就像那些当官的挂着一堆职称一样,一个角色能包含多个用户;类似的角色和权限具有类似的关系。从描述中我们再细化下音乐音效,给出以下E-R图(LZ自己画的,可能不符合E-R设计标准,主要方便看):

用户权限设计 E-R 图

上面的图是LZ 用PowerDesigner画出来的人物立绘,感兴趣的可以搜一下。我在这里用户权重这个概念,角色不直接拥有权限,让权重直接对权限,这样对权限进行了细分用户角色权限设计,可以让同一个角色在基础权限上在进行划分。

PowerDesigner生成MySQL 脚本如下:

/*==============================================================*/
/* DBMS name:      MySQL 5.0                                    */
/* Created on:     2017/4/13 19:22:14                           */
/*==============================================================*/
drop table if exists sys_permissions;
drop table if exists sys_role;
drop table if exists sys_role_per;
drop table if exists sys_user;
drop table if exists sys_user_role;
drop table if exists sys_weight;
drop table if exists sys_weight_per;
/*==============================================================*/
/* Table: sys_permissions   系统权限表                                    */
/*==============================================================*/
create table sys_permissions
(
   ID                   bigint not null,
   PER_NAME             varchar(50) not null,
   PER_DESC             varchar(100) not null,
   PER_LEVEL            int,
   PER_PARENT_ID        bigint,
   PER_URL              varchar(100),
   PER_AUTHORIZATION    varchar(50) not null,
   PER_RANKING          int,
   PER_STATUS           tinyint not null,
   ICON_URL             varchar(100),
   CREATIME             datetime,
   UPDATETIME           datetime,
   primary key (ID)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
alter table sys_permissions comment '权限表';
/*==============================================================*/
/* Table: sys_role                系统角色表                              */
/*==============================================================*/
create table sys_role
(
   ID                   bigint not null COMMENT 'ID',
   NAME                 varchar(100) COMMENT '角色名称',
   CODE                 varchar(50) COMMENT '编号',
   DESCRIPTION          varchar(200) COMMENT '角色描述',
   WEIGHT               bigint COMMENT '权重表中权重号',
   primary key (ID)
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
/*==============================================================*/
/* Table: sys_role_per        角色权限表                                  */
/*==============================================================*/
create table sys_role_per
(
   ROLE_ID              bigint COMMENT '角色表ID',
   PER_ID               bigint COMMENT '权限表ID',
   ID                   bigint not null COMMENT 'ID',
   primary key (ID)
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
/*==============================================================*/
/* Table: sys_user               用户表                               */
/*==============================================================*/
create table sys_user
(
   ID                   bigint not null COMMENT 'ID',
   USER_ID              varchar(120) COMMENT '用户ID',
   PWD                  varchar(50) COMMENT '密码',
   ICON                 varchar(300) COMMENT '图标',
   NICK_NAME            varchar(120) COMMENT '昵称',
   SEX                  varchar(2) COMMENT '性别',
   CREATE_TIME          datetime COMMENT '创建时间',
   UPDATE_TIME          datetime COMMENT '更新时间'
   primary key (ID)
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
alter table sys_user comment '用户信息表';
/*==============================================================*/
/* Table: sys_user_role           用户角色表                              */
/*==============================================================*/
create table sys_user_role
(
   ID                   bigint not null COMMENT 'ID' ,
   USER_ID              bigint not null COMMENT '用户表ID',
   ROLE_ID              bigint not null COMMENT '角色ID',
   primary key (ID)
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
/*==============================================================*/
/* Table: sys_weight                   权重表                         */
/*==============================================================*/
create table sys_weight
(
   ID                   bigint not null COMMENT 'ID' ,
   WEIGHT_NAME          varchar(50) not null COMMENT '权重名称',
   WEIGHT_DES           varchar(200) COMMENT '权重描述',
   primary key (ID)
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
/*==============================================================*/
/* Table: sys_weight_per             权重权限表                           */
/*==============================================================*/
create table sys_weight_per
(
   ID                   bigint not null COMMENT 'ID',
   WEIGHT_ID            bigint not null COMMENT '权重ID',
   PER_ID               bigint not null COMMENT '权限ID',
   primary key (ID)
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
alter table sys_role add constraint FK_ROLE_WEIGHT foreign key (WEIGHT)
      references sys_weight (ID) on delete restrict on update restrict;
alter table sys_role_per add constraint FK_ROLE_ID foreign key (ROLE_ID)
      references sys_role (ID) on delete restrict on update restrict;
alter table sys_role_per add constraint FK_PER_ID foreign key (PER_ID)
      references sys_permissions (ID) on delete restrict on update restrict;
alter table sys_user_role add constraint FK_USER_ROLE_USER_ID foreign key (USER_ID)
      references sys_user (ID) on delete restrict on update restrict;
alter table sys_user_role add constraint FK_USER_ROLE_ROLE_ID foreign key (ROLE_ID)
      references sys_role (ID) on delete restrict on update restrict;
alter table sys_weight_per add constraint FK_WEIGHT_PER_PER_ID foreign key (PER_ID)
      references sys_permissions (ID) on delete restrict on update restrict;
alter table sys_weight_per add constraint FK_WEIGHT_PER_WEIGHT_ID foreign key (WEIGHT_ID)
      references sys_weight (ID) on delete restrict on update restrict;

接下来就是把脚本在数据库跑下,这样基石(数据库表)就算搭建好了。

文章来源:https://blog.csdn.net/u011244682/article/details/70161634