权限控制功能数据库表结构设计思路
2021/7/22 19:07:25
本文主要是介绍权限控制功能数据库表结构设计思路,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
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;
这篇关于权限控制功能数据库表结构设计思路的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-28MQ底层原理资料详解:新手入门教程
- 2024-11-28MQ项目开发资料详解:新手入门教程
- 2024-11-28MQ项目开发资料详解:入门与初级用户指南
- 2024-11-28MQ消息队列资料入门教程
- 2024-11-28MQ消息队列资料:新手入门详解
- 2024-11-28MQ消息中间件资料详解与应用教程
- 2024-11-28MQ消息中间件资料入门教程
- 2024-11-28MQ源码资料详解与入门教程
- 2024-11-28MQ源码资料入门教程
- 2024-11-28RocketMQ底层原理资料详解