权限控制功能数据库表结构设计思路

1、权限控制功能,其核心思路是控制某“用户”所属“角色”可以访问哪些“角色”,可以访问哪些“功能”。

在前后端分离架构模式下,功能实现是基于“接口”进行的,所以“功能”和“页面”会分别和“接口”所关联。

 

 

 

 2、所以数据库中,至少有以上5张表,分别为:用户信息表、角色表、页面信息表,接口信息表,功能信息表,并且分别建立彼此之间的关联表

创建表结构sql语句如下:

CREATE TABLE `api_info` (
  `api_id` int(11) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  `url` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`api_id`),
  CONSTRAINT `api_info_ibfk_1` FOREIGN KEY (`api_id`) REFERENCES `function_api_relation` (`api_id`),
  CONSTRAINT `api_info_ibfk_2` FOREIGN KEY (`api_id`) REFERENCES `page_api_relation` (`api_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `function_api_relation` (
  `id` int(11) NOT NULL,
  `function_id` int(11) DEFAULT NULL,
  `api_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `api_id` (`api_id`),
  KEY `function_id` (`function_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

CREATE TABLE `function_info` (
  `function_id` int(11) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`function_id`),
  CONSTRAINT `function_info_ibfk_1` FOREIGN KEY (`function_id`) REFERENCES `function_api_relation` (`function_id`),
  CONSTRAINT `function_info_ibfk_2` FOREIGN KEY (`function_id`) REFERENCES `function_page_relation` (`function_id`),
  CONSTRAINT `function_info_ibfk_3` FOREIGN KEY (`function_id`) REFERENCES `function_rule_relation` (`function_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

CREATE TABLE `function_page_relation` (
  `id` int(11) DEFAULT NULL,
  `function_id` int(11) DEFAULT NULL,
  `page_id` int(11) DEFAULT NULL,
  KEY `function_id` (`function_id`),
  KEY `page_id` (`page_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

CREATE TABLE `function_rule_relation` (
  `id` int(11) NOT NULL,
  `function_id` int(11) DEFAULT NULL,
  `rule_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `function_id` (`function_id`),
  KEY `rule_id` (`rule_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `page_api_relation` (
  `id` int(11) NOT NULL,
  `page_id` int(11) DEFAULT NULL,
  `api_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `page_id` (`page_id`),
  KEY `api_id` (`api_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `page_info` (
  `page_id` int(11) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  `uri` varchar(255) DEFAULT NULL,
  `parent_id` int(11) DEFAULT NULL,
  `level` varchar(255) DEFAULT NULL,
  KEY `page_id` (`page_id`),
  CONSTRAINT `page_info_ibfk_1` FOREIGN KEY (`page_id`) REFERENCES `page_rule_relation` (`page_id`),
  CONSTRAINT `page_info_ibfk_2` FOREIGN KEY (`page_id`) REFERENCES `page_api_relation` (`page_id`),
  CONSTRAINT `page_info_ibfk_3` FOREIGN KEY (`page_id`) REFERENCES `function_page_relation` (`page_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `page_rule_relation` (
  `id` int(11) NOT NULL,
  `page_id` int(11) DEFAULT NULL,
  `rule_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `page_id` (`page_id`),
  KEY `rule_id` (`rule_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `rule_info` (
  `rule_id` int(11) NOT NULL COMMENT '角色id',
  `name` varchar(100) DEFAULT NULL,
  `status` varchar(10) DEFAULT NULL,
  `create_time` datetime DEFAULT NULL,
  PRIMARY KEY (`rule_id`),
  CONSTRAINT `rule_info_ibfk_1` FOREIGN KEY (`rule_id`) REFERENCES `user_rule_relation` (`rule_id`),
  CONSTRAINT `rule_info_ibfk_2` FOREIGN KEY (`rule_id`) REFERENCES `page_rule_relation` (`rule_id`),
  CONSTRAINT `rule_info_ibfk_3` FOREIGN KEY (`rule_id`) REFERENCES `function_rule_relation` (`rule_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `user_info` (
  `user_id` int(11) NOT NULL COMMENT '用户id',
  `username` varchar(100) DEFAULT NULL COMMENT '用户名',
  `password` varchar(200) DEFAULT NULL COMMENT '密码',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`user_id`),
  CONSTRAINT `user_info_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user_rule_relation` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息表';

CREATE TABLE `user_rule_relation` (
  `id` int(11) NOT NULL,
  `user_id` int(11) DEFAULT NULL,
  `rule_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `user_id` (`user_id`),
  KEY `rule_id` (`rule_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咛果果

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值